API参考
载入中...
搜索中...
未找到
hitls_crypt.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
16#ifndef HITLS_CRYPT_H
17#define HITLS_CRYPT_H
18#include <stdint.h>
19#include "hitls_crypt_type.h"
20#include "hitls_crypt_reg.h"
21#include "crypt.h"
22#ifdef __cplusplus
23extern "C" {
24#endif
25
42HITLS_HMAC_Ctx *HITLS_CRYPT_HMAC_Init(HITLS_Lib_Ctx *libCtx, const char *attrName,
43 HITLS_HashAlgo hashAlgo, const uint8_t *key, uint32_t len);
44
65int32_t HITLS_CRYPT_HMAC(HITLS_Lib_Ctx *libCtx, const char *attrName, HITLS_HashAlgo hashAlgo, const uint8_t *key,
66 uint32_t keyLen, const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen);
67
85int32_t HITLS_CRYPT_Digest(HITLS_Lib_Ctx *libCtx, const char *attrName, HITLS_HashAlgo hashAlgo, const uint8_t *in,
86 uint32_t inLen, uint8_t *out, uint32_t *outLen);
87
105int32_t HITLS_CRYPT_Encrypt(HITLS_Lib_Ctx *libCtx, const char *attrName, const HITLS_CipherParameters *cipher,
106 const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen);
107
125int32_t HITLS_CRYPT_Decrypt(HITLS_Lib_Ctx *libCtx, const char *attrName, const HITLS_CipherParameters *cipher,
126 const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen);
127
143HITLS_CRYPT_Key *HITLS_CRYPT_GenerateEcdhKey(HITLS_Lib_Ctx *libCtx, const char *attrName,
144 const HITLS_Config *config, const HITLS_ECParameters *curveParams);
145
146
164int32_t HITLS_CRYPT_DhCalcSharedSecret(HITLS_Lib_Ctx *libCtx, const char *attrName, HITLS_CRYPT_Key *key,
165 uint8_t *peerPubkey, uint32_t pubKeyLen, uint8_t *sharedSecret, uint32_t *sharedSecretLen);
166
184int32_t HITLS_CRYPT_EcdhCalcSharedSecret(HITLS_Lib_Ctx *libCtx, const char *attrName, HITLS_CRYPT_Key *key,
185 uint8_t *peerPubkey, uint32_t pubKeyLen, uint8_t *sharedSecret, uint32_t *sharedSecretLen);
186
201int32_t HITLS_CRYPT_CalcSM2SharedSecret(HITLS_Lib_Ctx *libCtx, const char *attrName,
202 HITLS_Sm2GenShareKeyParameters *sm2Params, uint8_t *sharedSecret, uint32_t *sharedSecretLen);
203
219HITLS_CRYPT_Key *HITLS_CRYPT_GenerateDhKeyBySecbits(HITLS_Lib_Ctx *libCtx, const char *attrName,
220 const HITLS_Config *tlsConfig, int32_t secBits);
221
238HITLS_CRYPT_Key *HITLS_CRYPT_GenerateDhKeyByParameters(HITLS_Lib_Ctx *libCtx,
239 const char *attrName, uint8_t *p, uint16_t pLen, uint8_t *g, uint16_t gLen);
240
256int32_t HITLS_CRYPT_HkdfExpand(HITLS_Lib_Ctx *libCtx, const char *attrName, const HITLS_CRYPT_HkdfExpandInput *input,
257 uint8_t *okm, uint32_t okmLen);
258
274int32_t HITLS_CRYPT_HkdfExtract(HITLS_Lib_Ctx *libCtx, const char *attrName, const HITLS_CRYPT_HkdfExtractInput *input,
275 uint8_t *prk, uint32_t *prkLen);
276
289int32_t HITLS_CRYPT_RandbytesEx(HITLS_Lib_Ctx *libCtx, uint8_t *bytes, uint32_t bytesLen);
290
300HITLS_HASH_Ctx *HITLS_CRYPT_DigestInit(HITLS_Lib_Ctx *libCtx, const char *attrName, HITLS_HashAlgo hashAlgo);
301
307void HITLS_CRYPT_FreeKey(HITLS_CRYPT_Key *key);
308
321int32_t HITLS_CRYPT_GetDhParameters(HITLS_CRYPT_Key *key, uint8_t *p, uint16_t *pLen, uint8_t *g, uint16_t *gLen);
322
330int32_t HITLS_CRYPT_HMAC_ReInit(HITLS_HMAC_Ctx *ctx);
331
337void HITLS_CRYPT_HMAC_Free(HITLS_HMAC_Ctx *ctx);
338
348int32_t HITLS_CRYPT_HMAC_Update(HITLS_HMAC_Ctx *ctx, const uint8_t *data, uint32_t len);
349
359int32_t HITLS_CRYPT_HMAC_Final(HITLS_HMAC_Ctx *ctx, uint8_t *out, uint32_t *len);
360
367uint32_t HITLS_CRYPT_DigestSize(HITLS_HashAlgo hashAlgo);
368
375HITLS_HASH_Ctx *HITLS_CRYPT_DigestCopy(HITLS_HASH_Ctx *ctx);
376
382void HITLS_CRYPT_DigestFree(HITLS_HASH_Ctx *ctx);
383
393int32_t HITLS_CRYPT_DigestUpdate(HITLS_HASH_Ctx *ctx, const uint8_t *data, uint32_t len);
394
404int32_t HITLS_CRYPT_DigestFinal(HITLS_HASH_Ctx *ctx, uint8_t *out, uint32_t *len);
405
411void HITLS_CRYPT_CipherFree(HITLS_Cipher_Ctx *ctx);
412
419HITLS_CRYPT_Key *HITLS_CRYPT_DupKey(HITLS_CRYPT_Key *key);
420
431int32_t HITLS_CRYPT_GetPubKey(HITLS_CRYPT_Key *key, uint8_t *pubKeyBuf, uint32_t bufLen, uint32_t *pubKeyLen);
432
443int32_t HITLS_CRYPT_KemEncapsulate(HITLS_Lib_Ctx *libCtx, const char *attrName,
444 const HITLS_Config *config, HITLS_KemEncapsulateParams *params);
445
458int32_t HITLS_CRYPT_KemDecapsulate(HITLS_CRYPT_Key *key, const uint8_t *ciphertext, uint32_t ciphertextLen,
459 uint8_t *sharedSecret, uint32_t *sharedSecretLen);
460
470int32_t HITLS_CRYPT_PRF(CRYPT_KeyDeriveParameters *input, uint8_t *out, uint32_t outLen);
471
472#ifdef __cplusplus
473}
474#endif
475
476#endif /* HITLS_CRYPT_H */
struct TlsConfig HITLS_Config
config context
定义 hitls_type.h:41
定义 crypt.h:32
HKDF-Expand Input
定义 hitls_crypt_type.h:281
HKDF-Extract Input
定义 hitls_crypt_type.h:269
Key parameters
定义 hitls_crypt_type.h:235
Elliptic curve parameter
定义 hitls_crypt_type.h:222
Input parameters for KEM encapsulation
定义 hitls_crypt_reg.h:36
sm2 ecdhe negotiation key parameters
定义 hitls_crypt_type.h:254