ProtocolParser/app_source/sm_crypto/include/sm3.h

57 lines
1.2 KiB
C

#ifndef _SM3_H_
#define _SM3_H_
#include <stdint.h>
#include "typedef.h"
#ifdef __cplusplus
extern "C" {
#endif
#define SM3_DATA_LEN 32
struct sm3_ctx {
u32 total[2]; /*!< number of bytes processed */
u32 state[8]; /*!< intermediate digest state */
u8 buffer[64]; /*!< data block being processed */
u8 ipad[64]; /*!< HMAC: inner padding */
u8 opad[64]; /*!< HMAC: outer padding */
};
int sm3_init(struct sm3_ctx *ctx);
int sm3_update(struct sm3_ctx *ctx, const u8 *input, u32 ilen);
int sm3_final(struct sm3_ctx *ctx, u8 *output);
int sm3_finup(struct sm3_ctx *ctx, const u8 *data,
u32 len, u8 *out);
void sm3_hmac_starts(struct sm3_ctx *ctx, unsigned char *key, int keylen );
/*
* SM3 HMAC process buffer
*/
void sm3_hmac_update(struct sm3_ctx *ctx, unsigned char *input, int ilen );
/*
* SM3 HMAC final digest
*/
void sm3_hmac_finish(struct sm3_ctx *ctx, unsigned char output[32] );
/*
* output = HMAC-SM#( hmac key, input buffer )
*/
void sm3_hmac( unsigned char *key, int keylen,
unsigned char *input, int ilen,
unsigned char output[32] );
#ifdef __cplusplus
}
#endif
#endif /* _SM3_H_ */