Update serpent.h

This commit is contained in:
GGSuchao
2017-05-19 08:31:55 +08:00
committed by GitHub
parent 0acb4ae59d
commit ed69e8eb62

View File

@@ -73,47 +73,14 @@ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. */ POSSIBILITY OF SUCH DAMAGE. */
#ifndef SERPENT_H #ifndef HEADER_SERPENT_H
#define SERPENT_H #define HEADER_SERPENT_H
#include <stdint.h> #include <stdint.h>
#include <openssl/opensslconf.h>
#ifdef INTRINSICS
#define memcpy(x,y,z) __movsb(x,y,z)
#define memmove(x,y,z) __movsb(x,y,z)
#define memset(x,y,z) __stosb(x,y,z)
#define ROTL32(x,r) _rotl(x,r)
#define ROTR32(x,r) _rotr(x,r)
#else
#define U8V(v) ((uint8_t)(v) & 0xFFU)
#define U16V(v) ((uint16_t)(v) & 0xFFFFU)
#define U32V(v) ((uint32_t)(v) & 0xFFFFFFFFUL)
#define U64V(v) ((uint64_t)(v) & 0xFFFFFFFFFFFFFFFFULL)
#define ROTL8(v, n) \
(U8V((v) << (n)) | ((v) >> (8 - (n))))
#define ROTL16(v, n) \
(U16V((v) << (n)) | ((v) >> (16 - (n))))
#define ROTL32(v, n) \
(U32V((v) << (n)) | ((v) >> (32 - (n))))
#define ROTL64(v, n) \
(U64V((v) << (n)) | ((v) >> (64 - (n))))
#define ROTR8(v, n) ROTL8(v, 8 - (n))
#define ROTR16(v, n) ROTL16(v, 16 - (n))
#define ROTR32(v, n) ROTL32(v, 32 - (n))
#define ROTR64(v, n) ROTL64(v, 64 - (n))
#endif
#define GOLDEN_RATIO 0x9e3779b9l
#define SERPENT_ROUNDS 32 #define SERPENT_ROUNDS 32
#define SERPENT_BLK_LEN 16 #define SERPENT_BLOCK_SIZE 16
#define SERPENT_KEY256 32 #define SERPENT_KEY256 32
#define SERPENT_ENCRYPT 0 #define SERPENT_ENCRYPT 0
@@ -123,9 +90,9 @@ POSSIBILITY OF SUCH DAMAGE. */
#define SERPENT_FP 1 #define SERPENT_FP 1
typedef union _serpent_blk_t { typedef union _serpent_blk_t {
uint8_t b[SERPENT_BLK_LEN]; uint8_t b[SERPENT_BLOCK_SIZE];
uint32_t w[SERPENT_BLK_LEN / 4]; uint32_t w[SERPENT_BLOCK_SIZE / 4];
uint64_t q[SERPENT_BLK_LEN / 2]; uint64_t q[SERPENT_BLOCK_SIZE / 2];
} serpent_blk; } serpent_blk;
typedef uint32_t serpent_subkey_t[4]; typedef uint32_t serpent_subkey_t[4];
@@ -138,10 +105,11 @@ typedef struct {
extern "C" { extern "C" {
#endif #endif
// C code /* C code */
void serpent_set_encrypt_key(serpent_key_t *key, const unsigned char *user_key); void serpent_set_encrypt_key(serpent_key_t *key, const unsigned char *user_key);
void serpent_encrypt(void *in, serpent_key_t *key); void serpent_set_decrypt_key(serpent_key_t *key, const unsigned char *user_key);
void serpent_decrypt(void *in, serpent_key_t *key); void serpent_encrypt(const void *in, void *out, serpent_key_t *key);
void serpent_decrypt(const void *in, void *out, serpent_key_t *key);
#ifdef __cplusplus #ifdef __cplusplus
} }