16#ifndef CRYPT_SIPHASH_H
17#define CRYPT_SIPHASH_H
19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_SIPHASH
24#include "crypt_local_types.h"
31#define SIPHASH_KEY_SIZE 16
32#define SIPHASH_WORD_SIZE 8
33#define DEFAULT_COMPRESSION_ROUND 2
34#define DEFAULT_FINALIZATION_ROUND 4
36#define SIPHASH_MIN_DIGEST_SIZE 8
37#define SIPHASH_MAX_DIGEST_SIZE 16
39typedef struct SIPHASH_Ctx CRYPT_SIPHASH_Ctx;
41#define CRYPT_SIPHASH_SetParam NULL
56CRYPT_SIPHASH_Ctx *CRYPT_SIPHASH_NewCtxEx(
void *libCtx,
CRYPT_MAC_AlgId id);
67int32_t CRYPT_SIPHASH_Init(CRYPT_SIPHASH_Ctx *ctx,
const uint8_t *key, uint32_t keyLen);
79int32_t CRYPT_SIPHASH_InitEx(CRYPT_SIPHASH_Ctx *ctx,
const uint8_t *key, uint32_t keyLen,
void *param);
89int32_t CRYPT_SIPHASH_Update(CRYPT_SIPHASH_Ctx *ctx,
const uint8_t *in, uint32_t inlen);
100int32_t CRYPT_SIPHASH_Final(CRYPT_SIPHASH_Ctx *ctx, uint8_t *out, uint32_t *outlen);
108int32_t CRYPT_SIPHASH_Reinit(CRYPT_SIPHASH_Ctx *ctx);
116int32_t CRYPT_SIPHASH_Deinit(CRYPT_SIPHASH_Ctx *ctx);
128int32_t CRYPT_SIPHASH_Ctrl(CRYPT_SIPHASH_Ctx *ctx, uint32_t opt,
void *val, uint32_t len);
134void CRYPT_SIPHASH_FreeCtx(CRYPT_SIPHASH_Ctx *ctx);
141CRYPT_SIPHASH_Ctx *CRYPT_SIPHASH_DupCtx(
const CRYPT_SIPHASH_Ctx *ctx);
CRYPT_MAC_AlgId
定义 crypt_algid.h:91