#ifndef SM4_H #define SM4_H #define SM4_ENCRYPT 1 #define SM4_DECRYPT 0 typedef struct { int mode; unsigned long sk[32]; } sm4_context; class SM4 { public: static void sm4_setkey_enc(sm4_context* ctx, unsigned char key[16]); static void sm4_setkey_dec(sm4_context* ctx, unsigned char key[16]); static void sm4_crypt_ecb(sm4_context* ctx, int mode, int length, unsigned char* input, unsigned char* output); static void sm4_crypt_cbc(sm4_context* ctx, int mode, int length, unsigned char iv[16], unsigned char* input, unsigned char* output); }; #endif /* sm4.h */