38 lines
980 B
C++
38 lines
980 B
C++
|
|
#ifndef SM3_H
|
|
#define SM3_H
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
|
|
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 */
|