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 CRYPT_DECODE_KEY_IMPL_H 17 #define CRYPT_DECODE_KEY_IMPL_H 18 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 23 #include "hitls_build.h" 24 25 #ifdef HITLS_CRYPTO_CODECSKEY 26 #include <stdint.h> 27 #include "bsl_params.h" 28 29 typedef struct { 30 const char *outFormat; 31 const char *outType; 32 } DECODER_CommonCtx; 33 34 int32_t DECODER_CommonGetParam(const DECODER_CommonCtx *commonCtx, BSL_Param *param); 35 36 void *DECODER_EPKI2PKI_NewCtx(void *provCtx); 37 int32_t DECODER_EPKI2PKI_GetParam(void *ctx, BSL_Param *param); 38 int32_t DECODER_EPKI2PKI_SetParam(void *ctx, const BSL_Param *param); 39 int32_t DECODER_EPKI2PKI_Decode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 40 void DECODER_EPKI2PKI_FreeOutData(void *ctx, BSL_Param *outParam); 41 void DECODER_EPKI2PKI_FreeCtx(void *ctx); 42 43 int32_t DECODER_DER2KEY_GetParam(void *ctx, BSL_Param *param); 44 int32_t DECODER_DER2KEY_SetParam(void *ctx, const BSL_Param *param); 45 void DECODER_DER2KEY_FreeOutData(void *ctx, BSL_Param *outParam); 46 void DECODER_DER2KEY_FreeCtx(void *ctx); 47 48 #ifdef HITLS_CRYPTO_RSA 49 void *DECODER_RsaDer2KeyNewCtx(void *provCtx); 50 int32_t DECODER_RsaPrvKeyDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 51 int32_t DECODER_RsaPubKeyDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 52 int32_t DECODER_RsaSubPubKeyDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 53 int32_t DECODER_RsaSubPubKeyWithOutSeqDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 54 int32_t DECODER_RsaPkcs8Der2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 55 #endif 56 57 #ifdef HITLS_CRYPTO_ECDSA 58 void *DECODER_EcdsaDer2KeyNewCtx(void *provCtx); 59 int32_t DECODER_EcdsaPrvKeyDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 60 int32_t DECODER_EcdsaSubPubKeyDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 61 int32_t DECODER_EcdsaSubPubKeyWithOutSeqDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 62 int32_t DECODER_EcdsaPkcs8Der2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 63 #endif 64 65 #ifdef HITLS_CRYPTO_SM2 66 void *DECODER_Sm2Der2KeyNewCtx(void *provCtx); 67 int32_t DECODER_Sm2PrvKeyDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 68 int32_t DECODER_Sm2SubPubKeyDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 69 int32_t DECODER_Sm2SubPubKeyWithOutSeqDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 70 int32_t DECODER_Sm2Pkcs8Der2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 71 #endif 72 73 #ifdef HITLS_CRYPTO_ED25519 74 void *DECODER_Ed25519Der2KeyNewCtx(void *provCtx); 75 int32_t DECODER_Ed25519SubPubKeyDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 76 int32_t DECODER_Ed25519SubPubKeyWithOutSeqDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 77 int32_t DECODER_Ed25519Pkcs8Der2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 78 #endif 79 80 #ifdef HITLS_BSL_PEM 81 void *DECODER_Pem2DerNewCtx(void *provCtx); 82 int32_t DECODER_Pem2DerGetParam(void *ctx, BSL_Param *param); 83 int32_t DECODER_Pem2DerSetParam(void *ctx, const BSL_Param *param); 84 int32_t DECODER_Pem2DerDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 85 void DECODER_Pem2DerFreeOutData(void *ctx, BSL_Param *outParam); 86 void DECODER_Pem2DerFreeCtx(void *ctx); 87 #endif 88 89 void *DECODER_LowKeyObject2PkeyObjectNewCtx(void *provCtx); 90 int32_t DECODER_LowKeyObject2PkeyObjectSetParam(void *ctx, const BSL_Param *param); 91 int32_t DECODER_LowKeyObject2PkeyObjectGetParam(void *ctx, BSL_Param *param); 92 int32_t DECODER_LowKeyObject2PkeyObjectDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam); 93 void DECODER_LowKeyObject2PkeyObjectFreeOutData(void *ctx, BSL_Param *outParam); 94 void DECODER_LowKeyObject2PkeyObjectFreeCtx(void *ctx); 95 96 #endif /* HITLS_CRYPTO_CODECSKEY */ 97 98 #ifdef __cplusplus 99 } 100 #endif 101 102 #endif /* CRYPT_DECODE_KEY_IMPL_H */ 103