19#include "hitls_build.h"
20#if defined(HITLS_CRYPTO_XMSS) || defined(HITLS_CRYPTO_SLH_DSA)
31#define MAX_ADRS_SIZE 32
58typedef struct CryptHashFuncs {
63 int32_t (*prf)(
const void *ctx,
const void *adrs, uint8_t *out);
69 int32_t (*f)(
const void *ctx,
const void *adrs,
const uint8_t *msg, uint32_t msgLen, uint8_t *out);
75 int32_t (*h)(
const void *ctx,
const void *adrs,
const uint8_t *in, uint32_t inLen, uint8_t *out);
81 int32_t (*hmsg)(
const void *ctx,
const uint8_t *r,
const uint8_t *msg, uint32_t msgLen,
const uint8_t *idx,
88 int32_t (*tl)(
const void *ctx,
const void *adrs,
const uint8_t *msg, uint32_t msgLen, uint8_t *out);
94 int32_t (*prfmsg)(
const void *ctx,
const uint8_t *key,
const uint8_t *msg, uint32_t msgLen, uint8_t *out);
100 int32_t (*chain)(
const uint8_t *x, uint32_t xLen, uint32_t start, uint32_t steps,
const uint8_t *pubSeed,
101 void *adrs,
const void *ctx, uint8_t *output);
110typedef struct CryptAdrsOps {
112 void (*setLayerAddr)(
void *adrs, uint32_t layer);
113 void (*setTreeAddr)(
void *adrs, uint64_t tree);
114 void (*setType)(
void *adrs, uint32_t type);
115 void (*setKeyPairAddr)(
void *adrs, uint32_t keyPair);
116 void (*setChainAddr)(
void *adrs, uint32_t chain);
117 void (*setTreeHeight)(
void *adrs, uint32_t height);
118 void (*setHashAddr)(
void *adrs, uint32_t hash);
119 void (*setTreeIndex)(
void *adrs, uint32_t index);
122 uint32_t (*getTreeHeight)(
const void *adrs);
123 uint32_t (*getTreeIndex)(
const void *adrs);
126 void (*copyKeyPairAddr)(
void *dest,
const void *src);
129 uint32_t (*getAdrsLen)(void);
CRYPT_MD_AlgId
定义 crypt_algid.h:68