mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-05-07 08:56:17 +08:00
39 lines
1.8 KiB
C
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);
|
|
|
|
*/
|