API参考
载入中...
搜索中...
未找到
crypt_eal_md.h
1/*
2 * This file is part of the openHiTLS project.
3 *
4 * openHiTLS is licensed under the Mulan PSL v2.
5 * You can use this software according to the terms and conditions of the Mulan PSL v2.
6 * You may obtain a copy of Mulan PSL v2 at:
7 *
8 * http://license.coscl.org.cn/MulanPSL2
9 *
10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13 * See the Mulan PSL v2 for more details.
14 */
15
21
22#ifndef CRYPT_EAL_MD_H
23#define CRYPT_EAL_MD_H
24
25#include <stdbool.h>
26#include <stdint.h>
27#include "crypt_algid.h"
28#include "crypt_types.h"
29
30#ifdef __cplusplus
31extern "C" {
32#endif // __cplusplus
33
34typedef struct EAL_MdCtx CRYPT_EAL_MdCtx;
35
36#define CRYPT_EAL_MdCTX CRYPT_EAL_MdCtx
37
49
61CRYPT_EAL_MdCtx *CRYPT_EAL_ProviderMdNewCtx(CRYPT_EAL_LibCtx *libCtx, int32_t algId, const char *attrName);
62
72
81int32_t CRYPT_EAL_MdGetId(CRYPT_EAL_MdCtx *ctx);
82
92int32_t CRYPT_EAL_MdCopyCtx(CRYPT_EAL_MdCtx *to, const CRYPT_EAL_MdCtx *from);
93
104CRYPT_EAL_MdCtx *CRYPT_EAL_MdDupCtx(const CRYPT_EAL_MdCtx *ctx);
105
114void CRYPT_EAL_MdFreeCtx(CRYPT_EAL_MdCtx *ctx);
115
124int32_t CRYPT_EAL_MdInit(CRYPT_EAL_MdCtx *ctx);
125
139int32_t CRYPT_EAL_MdUpdate(CRYPT_EAL_MdCtx *ctx, const uint8_t *data, uint32_t len);
140
155int32_t CRYPT_EAL_MdSqueeze(CRYPT_EAL_MdCtx *ctx, uint8_t *out, uint32_t len);
156
171int32_t CRYPT_EAL_MdFinal(CRYPT_EAL_MdCtx *ctx, uint8_t *out, uint32_t *len);
172
182
196int32_t CRYPT_EAL_Md(CRYPT_MD_AlgId id, const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen);
197
213int32_t CRYPT_EAL_ProviderMd(CRYPT_EAL_LibCtx *libCtx, CRYPT_MD_AlgId id, const char *attrName, const uint8_t *in,
214 uint32_t inLen, uint8_t *out, uint32_t *outLen);
215
224int32_t CRYPT_EAL_MdDeinit(CRYPT_EAL_MdCtx *ctx);
225
244CRYPT_EAL_MdCtx *CRYPT_EAL_MdMBNewCtx(CRYPT_EAL_LibCtx *libCtx, int32_t id, uint32_t num);
245
252void CRYPT_EAL_MdMBFreeCtx(CRYPT_EAL_MdCtx *ctx);
253
264int32_t CRYPT_EAL_MdMBInit(CRYPT_EAL_MdCtx *ctx);
265
283int32_t CRYPT_EAL_MdMBUpdate(CRYPT_EAL_MdCtx *ctx, const uint8_t *data[], uint32_t nbytes[], uint32_t num);
284
301int32_t CRYPT_EAL_MdMBFinal(CRYPT_EAL_MdCtx *ctx, uint8_t *digest[], uint32_t *outlen, uint32_t num);
302
303#ifdef __cplusplus
304}
305#endif // __cplusplus
306
307#endif // CRYPT_EAL_MD_H
CRYPT_MD_AlgId
定义 crypt_algid.h:68
int32_t CRYPT_EAL_Md(CRYPT_MD_AlgId id, const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen)
Calculate the data digest. Not supported in provider
void CRYPT_EAL_MdFreeCtx(CRYPT_EAL_MdCtx *ctx)
Release the MD context.
int32_t CRYPT_EAL_MdFinal(CRYPT_EAL_MdCtx *ctx, uint8_t *out, uint32_t *len)
Complete the digest and output the final digest result.
int32_t CRYPT_EAL_MdDeinit(CRYPT_EAL_MdCtx *ctx)
Deinitialize the function.
int32_t CRYPT_EAL_MdGetId(CRYPT_EAL_MdCtx *ctx)
Return the MD algorithm ID.
void CRYPT_EAL_MdMBFreeCtx(CRYPT_EAL_MdCtx *ctx)
Release MB context created by CRYPT_EAL_MdMBNewCtx.
CRYPT_EAL_MdCtx * CRYPT_EAL_MdDupCtx(const CRYPT_EAL_MdCtx *ctx)
Dup the MD context.
int32_t CRYPT_EAL_MdMBUpdate(CRYPT_EAL_MdCtx *ctx, const uint8_t *data[], uint32_t nbytes[], uint32_t num)
Update multi-buffer MD context with message fragments.
CRYPT_EAL_MdCtx * CRYPT_EAL_ProviderMdNewCtx(CRYPT_EAL_LibCtx *libCtx, int32_t algId, const char *attrName)
Create a md context in the providers.
CRYPT_EAL_MdCtx * CRYPT_EAL_MdMBNewCtx(CRYPT_EAL_LibCtx *libCtx, int32_t id, uint32_t num)
Create a MD context for multi-buffer hash computation.
int32_t CRYPT_EAL_MdCopyCtx(CRYPT_EAL_MdCtx *to, const CRYPT_EAL_MdCtx *from)
Copy the MD context.
int32_t CRYPT_EAL_MdUpdate(CRYPT_EAL_MdCtx *ctx, const uint8_t *data, uint32_t len)
Continuously input the data to be digested.
uint32_t CRYPT_EAL_MdGetDigestSize(CRYPT_MD_AlgId id)
Obtain the digest length of the algorithm output. Not supported in provider
bool CRYPT_EAL_MdIsValidAlgId(CRYPT_MD_AlgId id)
Check whether the id is valid MD algorithm ID. Not supported in provider
CRYPT_EAL_MdCtx * CRYPT_EAL_MdNewCtx(CRYPT_MD_AlgId id)
Create the MD context.
int32_t CRYPT_EAL_MdMBInit(CRYPT_EAL_MdCtx *ctx)
Initialize multi-buffer MD context.
int32_t CRYPT_EAL_MdSqueeze(CRYPT_EAL_MdCtx *ctx, uint8_t *out, uint32_t len)
Generate output from the sponge construction's squeezing phase.
int32_t CRYPT_EAL_MdMBFinal(CRYPT_EAL_MdCtx *ctx, uint8_t *digest[], uint32_t *outlen, uint32_t num)
Finalize multi-buffer MD context and output digests.
int32_t CRYPT_EAL_ProviderMd(CRYPT_EAL_LibCtx *libCtx, CRYPT_MD_AlgId id, const char *attrName, const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen)
Calculate the data digest. Supported in provider
int32_t CRYPT_EAL_MdInit(CRYPT_EAL_MdCtx *ctx)
Initialize the MD context.