Files
GmSSL/include/openssl/serpent.h
2017-03-26 15:04:30 +08:00

39 lines
1.8 KiB
C

#ifndef MYSERPENT_H
#define MYSERPENT_H
unsigned char takebit(unsigned char bit_num);
unsigned long int sb(char sb_num,unsigned long int sb_in_long);
void linear(IN unsigned long int *li_0,IN unsigned long int *li_1,IN unsigned long int *li_2,IN unsigned long int *li_3,OUT unsigned long int *lo_0,OUT unsigned long int *lo_1,OUT unsigned long int *lo_2,OUT unsigned long int *lo_3);
void IP(IN unsigned long int *ip_i0,IN unsigned long int *ip_i1,IN unsigned long int *ip_i2,IN unsigned long int *ip_i3,OUT unsigned long int *ip_o0,OUT unsigned long int *ip_o1,OUT unsigned long int *ip_o2,OUT unsigned long int *ip_o3);
void FP(IN unsigned long int *fp_i0,IN unsigned long int *fp_i1,IN unsigned long int *fp_i2,IN unsigned long int *fp_i3,OUT unsigned long int *fp_o0,OUT unsigned long int *fp_o1,OUT unsigned long int *fp_o2,OUT unsigned long int *fp_o3);
extern char sb0(char sb0_in);
extern char sb1(char sb1_in);
extern char sb2(char sb2_in);
extern char sb3(char sb3_in);
extern char sb4(char sb4_in);
extern char sb5(char sb5_in);
extern char sb6(char sb6_in);
extern char sb7(char sb7_in);
#define rotl(x,n) (((x) << ((int)(n))) | ((x) >> (32 - (int)(n))))
#define rotr(x,n) (((x) >> ((int)(n))) | ((x) << (32 - (int)(n))))
#endif
/*
The following should be implemented
#define SERPENT_KEY_LENGTH ??
#define SERPENT_BLOCK_SIZE ??
#define SERPENT_IV_LENGTH (SERPENT_BLOCK_SIZE)
#define SERPENT_NUM_ROUNDS ??
typedef struct {
uint32_t rk[SMS4_NUM_ROUNDS];
} serpent_key_t;
void serpent_set_encrypt_key(serpent_key_t *key, const unsigned char *user_key);
void serpent_set_decrypt_key(serpent_key_t *key, const unsigned char *user_key);
void serpent_encrypt(const unsigned char *in, unsigned char *out, const serpent_key_t *key);
void serpent_decrypt(const unsigned char *in, unsigned char *out, const serpent_key_t *key);
*/