#ifndef SM3_H #define SM3_H #include #include typedef struct { uint32_t total[2]; uint32_t state[8]; unsigned char buffer[64]; unsigned char ipad[64]; unsigned char opad[64]; }sm3_context; class SM3 { public: static void sm3_starts(sm3_context* ctx); static void sm3_update(sm3_context* ctx, unsigned char* input, int ilen); static void sm3_finish(sm3_context* ctx, unsigned char output[32]); static void sm3Hash(unsigned char* input, int ilen, unsigned char output[32]); static void sm3_hmac_starts(sm3_context* ctx, unsigned char* key, int keylen); static void sm3_hmac_update(sm3_context* ctx, unsigned char* input, int ilen); static void sm3_hmac_finish(sm3_context* ctx, unsigned char output[32]); static void sm3_hmac(unsigned char* key, int keylen, unsigned char* input, int ilen, unsigned char output[32]); }; #endif /* sm3.h */