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_X509_ADAPT_LOCAL_H 17 #define HITLS_X509_ADAPT_LOCAL_H 18 19 #include <stdint.h> 20 #include "hitls_type.h" 21 #include "hitls_cert.h" 22 #include "hitls_crypt_type.h" 23 #include "hitls_cert_type.h" 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 HITLS_CERT_Store *HITLS_X509_Adapt_StoreNew(void); 30 HITLS_CERT_Store *HITLS_X509_Adapt_StoreDup(HITLS_CERT_Store *store); 31 void HITLS_X509_Adapt_StoreFree(HITLS_CERT_Store *store); 32 int32_t HITLS_X509_Adapt_StoreCtrl(HITLS_Config *config, HITLS_CERT_Store *store, HITLS_CERT_CtrlCmd cmd, 33 void *input, void *output); 34 35 int32_t HITLS_X509_Adapt_BuildCertChain(HITLS_Config *config, HITLS_CERT_Store *store, HITLS_CERT_X509 *cert, 36 HITLS_CERT_X509 **list, uint32_t *num); 37 int32_t HITLS_X509_Adapt_VerifyCertChain(HITLS_Ctx *ctx, HITLS_CERT_Store *store, HITLS_CERT_X509 **list, uint32_t num); 38 39 int32_t HITLS_X509_Adapt_CertEncode(HITLS_Ctx *ctx, HITLS_CERT_X509 *cert, uint8_t *buf, uint32_t len, 40 uint32_t *usedLen); 41 HITLS_CERT_X509 *HITLS_X509_Adapt_CertParse(HITLS_Config *config, const uint8_t *buf, uint32_t len, 42 HITLS_ParseType type, HITLS_ParseFormat format); 43 #ifdef HITLS_TLS_FEATURE_PROVIDER 44 HITLS_CERT_X509 *HITLS_CERT_ProviderCertParse(HITLS_Lib_Ctx *libCtx, const char *attrName, const uint8_t *buf, 45 uint32_t len, HITLS_ParseType type, const char *format); 46 #endif 47 HITLS_CERT_X509 *HITLS_X509_Adapt_CertDup(HITLS_CERT_X509 *cert); 48 HITLS_CERT_X509 *HITLS_X509_Adapt_CertRef(HITLS_CERT_X509 *cert); 49 void HITLS_X509_Adapt_CertFree(HITLS_CERT_X509 *cert); 50 int32_t HITLS_X509_Adapt_CertCtrl(HITLS_Config *config, HITLS_CERT_X509 *cert, HITLS_CERT_CtrlCmd cmd, 51 void *input, void *output); 52 53 HITLS_CERT_Key *HITLS_X509_Adapt_KeyParse(HITLS_Config *config, const uint8_t *buf, uint32_t len, 54 HITLS_ParseType type, HITLS_ParseFormat format); 55 #ifdef HITLS_TLS_FEATURE_PROVIDER 56 HITLS_CERT_Key *HITLS_X509_Adapt_ProviderKeyParse(HITLS_Config *config, const uint8_t *buf, uint32_t len, 57 HITLS_ParseType type, const char *format, const char *encodeType); 58 #endif 59 HITLS_CERT_Key *HITLS_X509_Adapt_KeyDup(HITLS_CERT_Key *key); 60 void HITLS_X509_Adapt_KeyFree(HITLS_CERT_Key *key); 61 int32_t HITLS_X509_Adapt_KeyCtrl(HITLS_Config *config, HITLS_CERT_Key *key, HITLS_CERT_CtrlCmd cmd, 62 void *input, void *output); 63 64 int32_t HITLS_X509_Adapt_CreateSign(HITLS_Ctx *ctx, HITLS_CERT_Key *key, HITLS_SignAlgo signAlgo, 65 HITLS_HashAlgo hashAlgo, const uint8_t *data, uint32_t dataLen, uint8_t *sign, uint32_t *signLen); 66 int32_t HITLS_X509_Adapt_VerifySign(HITLS_Ctx *ctx, HITLS_CERT_Key *key, HITLS_SignAlgo signAlgo, 67 HITLS_HashAlgo hashAlgo, const uint8_t *data, uint32_t dataLen, const uint8_t *sign, uint32_t signLen); 68 int32_t HITLS_X509_Adapt_Encrypt(HITLS_Ctx *ctx, HITLS_CERT_Key *key, const uint8_t *in, uint32_t inLen, 69 uint8_t *out, uint32_t *outLen); 70 int32_t HITLS_X509_Adapt_Decrypt(HITLS_Ctx *ctx, HITLS_CERT_Key *key, const uint8_t *in, uint32_t inLen, 71 uint8_t *out, uint32_t *outLen); 72 int32_t HITLS_X509_Adapt_CheckPrivateKey(const HITLS_Config *config, HITLS_CERT_X509 *cert, HITLS_CERT_Key *key); 73 74 #ifdef __cplusplus 75 } 76 #endif 77 78 #endif // HITLS_X509_ADAPT_LOCAL_H