00001
00015 #ifndef DKUTIL_C_SNOW20_H
00016 #define DKUTIL_C_SNOW20_H
00017
00018 #include "dkcOSIndependent.h"
00019
00020
00021 #define dkcdSNOW2_BOX_SIZE 16
00022
00023
00024 typedef struct dkc_SNOW2{
00025
00027 uint32 sw[dkcdSNOW2_BOX_SIZE];
00029 uint32 outfrom_fsm,r1,r2;
00031 union{
00032 uint64 a64[dkcdSNOW2_BOX_SIZE / 2];
00033 uint32 a32[dkcdSNOW2_BOX_SIZE];
00034 uint16 a16[dkcdSNOW2_BOX_SIZE * 2];
00035 uint8 a8[dkcdSNOW2_BOX_SIZE * 4];
00036 }u_store;
00037
00038
00040 uint8 store_size;
00041 }DKC_SNOW2;
00042
00043
00044
00053 DKC_EXTERN DKC_SNOW2 *WINAPI dkcAllocSNOW2(BYTE *key,size_t keysize,
00054 uint32 IV3,uint32 IV2,uint32 IV1,uint32 IV0);
00055
00056 DKC_EXTERN int WINAPI dkcSNOW2Init(DKC_SNOW2 *p,uint8 *key,size_t keysize,uint32 IV3,uint32 IV2,uint32 IV1,uint32 IV0);
00057
00058
00059 DKC_EXTERN int WINAPI dkcFreeSNOW2(DKC_SNOW2 **);
00060
00062 DKC_EXTERN uint8 WINAPI dkcSNOW2_Byte(DKC_SNOW2 *p);
00063
00067
00068 DKC_EXTERN int WINAPI dkcSNOW2EncryptNoDestDOE(DKC_SNOW2 *p,uint8 *inout,size_t size);
00069
00070 DKC_EXTERN int WINAPI dkcSNOW2EncryptDOE(DKC_SNOW2 *,uint8 *dest,size_t dsize,const uint8 *src,size_t ssize);
00071 #define dkcSNOW2DecryptDOE(a,b,c,d,e) dkcSNOW2EncryptDOE(a,b,c,d,e)
00072
00073 #define dkcSNOW2DecryptNoDestDOE(a,b,c) dkcSNOW2EncryptNoDestDOE(a,b,c)
00074
00075
00076
00077 #endif //end of include once