32 行
978 B
C
32 行
978 B
C
#ifndef PAZE_HMAC_H
|
|
#define PAZE_HMAC_H
|
|
#include "paze/paze_types.h"
|
|
#include "paze/hash.h"
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* 通用 HMAC,任意 hash 算法描述符 */
|
|
paze_status_t paze_hmac(const paze_hash_alg_t *alg,
|
|
const uint8_t *key, size_t keylen,
|
|
const uint8_t *msg, size_t msglen,
|
|
uint8_t *out /* alg->digest_len */);
|
|
|
|
/* 流式 HMAC 上下文(分配大小为 alg->ctx_size*2 + block_len,栈上即可) */
|
|
typedef struct {
|
|
const paze_hash_alg_t *alg;
|
|
uint8_t opad[128]; /* 最大 block_len=128(SHA-512) */
|
|
uint8_t ictx_buf[256];
|
|
uint8_t octx_buf[256];
|
|
} paze_hmac_ctx_t;
|
|
|
|
void paze_hmac_init(paze_hmac_ctx_t *c, const paze_hash_alg_t *alg,
|
|
const uint8_t *key, size_t keylen);
|
|
void paze_hmac_update(paze_hmac_ctx_t *c, const uint8_t *msg, size_t len);
|
|
void paze_hmac_final(paze_hmac_ctx_t *c, uint8_t *out);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|