已合并
feat:Added support for x25519 cert #998
feat:Added support for x25519 cert #998
已合并
dsy678创建于 1月14日
共 28 个文件变更+342-74
@@ -77,6 +77,13 @@ int32_t DECODER_Ed25519SubPubKeyWithOutSeqDer2KeyDecode(void *ctx, const BSL_Par
77int32_t DECODER_Ed25519Pkcs8Der2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam);77int32_t DECODER_Ed25519Pkcs8Der2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam);
78#endif78#endif
79 79 
80+#ifdef HITLS_CRYPTO_X25519
81+void *DECODER_X25519Der2KeyNewCtx(void *provCtx);
82+int32_t DECODER_X25519SubPubKeyDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam);
83+int32_t DECODER_X25519SubPubKeyWithOutSeqDer2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam);
84+int32_t DECODER_X25519Pkcs8Der2KeyDecode(void *ctx, const BSL_Param *inParam, BSL_Param **outParam);
85+#endif
86+ 
80#ifdef HITLS_BSL_PEM87#ifdef HITLS_BSL_PEM
81void *DECODER_Pem2DerNewCtx(void *provCtx);88void *DECODER_Pem2DerNewCtx(void *provCtx);
82int32_t DECODER_Pem2DerGetParam(void *ctx, BSL_Param *param);89int32_t DECODER_Pem2DerGetParam(void *ctx, BSL_Param *param);
@@ -30,7 +30,7 @@
30#ifdef HITLS_CRYPTO_SM230#ifdef HITLS_CRYPTO_SM2
31#include "crypt_sm2.h"31#include "crypt_sm2.h"
32#endif32#endif
33-#ifdef HITLS_CRYPTO_ED2551933+#if defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519)
34#include "crypt_curve25519.h"34#include "crypt_curve25519.h"
35#endif35#endif
36#include "eal_pkey.h"36#include "eal_pkey.h"
@@ -44,7 +44,7 @@
44#define PKEY_MAX_PARAM_NUM 2044#define PKEY_MAX_PARAM_NUM 20
45 45 
46#if defined(HITLS_CRYPTO_RSA) || defined(HITLS_CRYPTO_ECDSA) || defined(HITLS_CRYPTO_SM2) || \46#if defined(HITLS_CRYPTO_RSA) || defined(HITLS_CRYPTO_ECDSA) || defined(HITLS_CRYPTO_SM2) || \
47- defined(HITLS_CRYPTO_ED25519)47+ defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519)
48typedef struct {48typedef struct {
49 CRYPT_EAL_ProvMgrCtx *provMgrCtx;49 CRYPT_EAL_ProvMgrCtx *provMgrCtx;
50 EAL_PkeyUnitaryMethod *method;50 EAL_PkeyUnitaryMethod *method;
@@ -338,6 +338,10 @@ DECODER_DEFINE_DER2KEY_NEW_CTX(Sm2, CRYPT_PKEY_SM2, g_defEalKeyMgmtSm2, g_defEal
338DECODER_DEFINE_DER2KEY_NEW_CTX(Ed25519, CRYPT_PKEY_ED25519, g_defEalKeyMgmtEd25519, NULL, NULL, \338DECODER_DEFINE_DER2KEY_NEW_CTX(Ed25519, CRYPT_PKEY_ED25519, g_defEalKeyMgmtEd25519, NULL, NULL, \
339 g_defEalSignEd25519, NULL)339 g_defEalSignEd25519, NULL)
340#endif340#endif
341+#ifdef HITLS_CRYPTO_X25519
342+DECODER_DEFINE_DER2KEY_NEW_CTX(X25519, CRYPT_PKEY_X25519, g_defEalKeyMgmtX25519, NULL, g_defEalExchX25519, NULL, \
343+ NULL)
344+#endif
341 345 
342#ifdef HITLS_CRYPTO_RSA346#ifdef HITLS_CRYPTO_RSA
343DECODER_DEFINE_PRVKEY_DER2KEY_DECODE(Rsa, CRYPT_RSA_Ctx, CRYPT_RSA_ParsePrikeyAsn1Buff)347DECODER_DEFINE_PRVKEY_DER2KEY_DECODE(Rsa, CRYPT_RSA_Ctx, CRYPT_RSA_ParsePrikeyAsn1Buff)
@@ -367,4 +371,10 @@ DECODER_DEFINE_SUBPUBKEY_WITHOUT_SEQ_DER2KEY_DECODE(Ed25519, CRYPT_CURVE25519_Ct
367DECODER_DEFINE_PKCS8_DECODE(Ed25519, CRYPT_CURVE25519_Ctx, CRYPT_ED25519_ParsePkcs8Key)371DECODER_DEFINE_PKCS8_DECODE(Ed25519, CRYPT_CURVE25519_Ctx, CRYPT_ED25519_ParsePkcs8Key)
368#endif372#endif
369 373 
374+#ifdef HITLS_CRYPTO_X25519
375+DECODER_DEFINE_SUBPUBKEY_DER2KEY_DECODE(X25519, CRYPT_CURVE25519_Ctx, CRYPT_X25519_ParseSubPubkeyAsn1Buff)
376+DECODER_DEFINE_SUBPUBKEY_WITHOUT_SEQ_DER2KEY_DECODE(X25519, CRYPT_CURVE25519_Ctx, CRYPT_X25519_ParseSubPubkeyAsn1Buff)
377+DECODER_DEFINE_PKCS8_DECODE(X25519, CRYPT_CURVE25519_Ctx, CRYPT_X25519_ParsePkcs8Key)
378+#endif
379+ 
370#endif /* HITLS_CRYPTO_CODECSKEY && defined(HITLS_CRYPTO_PROVIDER) */380#endif /* HITLS_CRYPTO_CODECSKEY && defined(HITLS_CRYPTO_PROVIDER) */
@@ -23,7 +23,7 @@
23#ifdef HITLS_CRYPTO_SM223#ifdef HITLS_CRYPTO_SM2
24#include "crypt_sm2.h"24#include "crypt_sm2.h"
25#endif25#endif
26-#ifdef HITLS_CRYPTO_ED2551926+#if defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519)
27#include "crypt_curve25519.h"27#include "crypt_curve25519.h"
28#endif28#endif
29#include "crypt_params_key.h"29#include "crypt_params_key.h"
@@ -358,9 +358,11 @@ int32_t CRYPT_SM2_ParsePkcs8Key(void *libCtx, uint8_t *buff, uint32_t buffLen, C
358}358}
359#endif // HITLS_CRYPTO_SM2359#endif // HITLS_CRYPTO_SM2
360 360 
361-#ifdef HITLS_CRYPTO_ED25519361+#if defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519)
362-static int32_t ParseEd25519PrikeyAsn1Buff(void *libCtx, uint8_t *buffer, uint32_t bufferLen,362+typedef CRYPT_CURVE25519_Ctx *(*CRYPT_CURVE25519_NewCtxFunc)(void *libCtx);
363- CRYPT_CURVE25519_Ctx **ed25519PriKey)363+ 
364+static int32_t ParseCurve25519PrikeyAsn1Buff(void *libCtx, uint8_t *buffer, uint32_t bufferLen,
365+ CRYPT_CURVE25519_Ctx **curvePriKey, CRYPT_CURVE25519_NewCtxFunc newCtx)
364{366{
365 uint8_t *tmpBuff = buffer;367 uint8_t *tmpBuff = buffer;
366 uint32_t tmpBuffLen = bufferLen;368 uint32_t tmpBuffLen = bufferLen;
@@ -371,7 +373,7 @@ static int32_t ParseEd25519PrikeyAsn1Buff(void *libCtx, uint8_t *buffer, uint32_
371 return ret;373 return ret;
372 }374 }
373 375 
374- CRYPT_CURVE25519_Ctx *pctx = CRYPT_ED25519_NewCtxEx(libCtx);376+ CRYPT_CURVE25519_Ctx *pctx = newCtx(libCtx);
375 if (pctx == NULL) {377 if (pctx == NULL) {
376 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);378 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);
377 return CRYPT_MEM_ALLOC_FAIL;379 return CRYPT_MEM_ALLOC_FAIL;
@@ -386,12 +388,12 @@ static int32_t ParseEd25519PrikeyAsn1Buff(void *libCtx, uint8_t *buffer, uint32_
386 BSL_ERR_PUSH_ERROR(ret);388 BSL_ERR_PUSH_ERROR(ret);
387 return ret;389 return ret;
388 }390 }
389- *ed25519PriKey = pctx;391+ *curvePriKey = pctx;
390 return CRYPT_SUCCESS;392 return CRYPT_SUCCESS;
391}393}
392 394 
393-int32_t CRYPT_ED25519_ParsePkcs8Key(void *libCtx, uint8_t *buffer, uint32_t bufferLen,395+static int32_t ParseCurve25519Pkcs8Key(void *libCtx, uint8_t *buffer, uint32_t bufferLen,
394- CRYPT_CURVE25519_Ctx **ed25519PriKey)396+ CRYPT_CURVE25519_Ctx **curvePriKey, BslCid expectKeyType, CRYPT_CURVE25519_NewCtxFunc newCtx)
395{397{
396 CRYPT_ENCODE_DECODE_Pk8PrikeyInfo pk8PrikeyInfo = {0};398 CRYPT_ENCODE_DECODE_Pk8PrikeyInfo pk8PrikeyInfo = {0};
397 int32_t ret = CRYPT_DECODE_Pkcs8Info(buffer, bufferLen, NULL, &pk8PrikeyInfo);399 int32_t ret = CRYPT_DECODE_Pkcs8Info(buffer, bufferLen, NULL, &pk8PrikeyInfo);
@@ -399,15 +401,16 @@ int32_t CRYPT_ED25519_ParsePkcs8Key(void *libCtx, uint8_t *buffer, uint32_t buff
399 BSL_ERR_PUSH_ERROR(ret);401 BSL_ERR_PUSH_ERROR(ret);
400 return ret;402 return ret;
401 }403 }
402- if (pk8PrikeyInfo.keyType != BSL_CID_ED25519) {404+ if (pk8PrikeyInfo.keyType != expectKeyType) {
403 BSL_ERR_PUSH_ERROR(CRYPT_DECODE_ERR_KEY_TYPE_NOT_MATCH);405 BSL_ERR_PUSH_ERROR(CRYPT_DECODE_ERR_KEY_TYPE_NOT_MATCH);
404 return CRYPT_DECODE_ERR_KEY_TYPE_NOT_MATCH;406 return CRYPT_DECODE_ERR_KEY_TYPE_NOT_MATCH;
405 }407 }
406- return ParseEd25519PrikeyAsn1Buff(libCtx, pk8PrikeyInfo.pkeyRawKey, pk8PrikeyInfo.pkeyRawKeyLen, ed25519PriKey);408+ return ParseCurve25519PrikeyAsn1Buff(libCtx, pk8PrikeyInfo.pkeyRawKey, pk8PrikeyInfo.pkeyRawKeyLen,
409+ curvePriKey, newCtx);
407}410}
408 411 
409-int32_t CRYPT_ED25519_ParseSubPubkeyAsn1Buff(void *libCtx, uint8_t *buff, uint32_t buffLen,412+static int32_t ParseCurve25519SubPubkeyAsn1Buff(void *libCtx, uint8_t *buff, uint32_t buffLen,
410- CRYPT_CURVE25519_Ctx **pubKey, bool isComplete)413+ CRYPT_CURVE25519_Ctx **pubKey, bool isComplete, BslCid expectKeyType, CRYPT_CURVE25519_NewCtxFunc newCtx)
411{414{
412 if (buff == NULL || buffLen == 0 || pubKey == NULL) {415 if (buff == NULL || buffLen == 0 || pubKey == NULL) {
413 BSL_ERR_PUSH_ERROR(CRYPT_NULL_INPUT);416 BSL_ERR_PUSH_ERROR(CRYPT_NULL_INPUT);
@@ -419,11 +422,11 @@ int32_t CRYPT_ED25519_ParseSubPubkeyAsn1Buff(void *libCtx, uint8_t *buff, uint32
419 BSL_ERR_PUSH_ERROR(ret);422 BSL_ERR_PUSH_ERROR(ret);
420 return ret;423 return ret;
421 }424 }
422- if (subPubkeyInfo.keyType != BSL_CID_ED25519) {425+ if (subPubkeyInfo.keyType != expectKeyType) {
423 BSL_ERR_PUSH_ERROR(CRYPT_DECODE_ERR_KEY_TYPE_NOT_MATCH);426 BSL_ERR_PUSH_ERROR(CRYPT_DECODE_ERR_KEY_TYPE_NOT_MATCH);
424 return CRYPT_DECODE_ERR_KEY_TYPE_NOT_MATCH;427 return CRYPT_DECODE_ERR_KEY_TYPE_NOT_MATCH;
425 }428 }
426- CRYPT_CURVE25519_Ctx *pctx = CRYPT_ED25519_NewCtxEx(libCtx);429+ CRYPT_CURVE25519_Ctx *pctx = newCtx(libCtx);
427 if (pctx == NULL) {430 if (pctx == NULL) {
428 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);431 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);
429 return CRYPT_MEM_ALLOC_FAIL;432 return CRYPT_MEM_ALLOC_FAIL;
@@ -441,5 +444,37 @@ int32_t CRYPT_ED25519_ParseSubPubkeyAsn1Buff(void *libCtx, uint8_t *buff, uint32
441 *pubKey = pctx;444 *pubKey = pctx;
442 return ret;445 return ret;
443}446}
447+#endif // HITLS_CRYPTO_ED25519 || HITLS_CRYPTO_X25519
448+ 
449+#ifdef HITLS_CRYPTO_ED25519
450+int32_t CRYPT_ED25519_ParsePkcs8Key(void *libCtx, uint8_t *buffer, uint32_t bufferLen,
451+ CRYPT_CURVE25519_Ctx **ed25519PriKey)
452+{
453+ return ParseCurve25519Pkcs8Key(libCtx, buffer, bufferLen, ed25519PriKey, BSL_CID_ED25519,
454+ CRYPT_ED25519_NewCtxEx);
455+}
456+ 
457+int32_t CRYPT_ED25519_ParseSubPubkeyAsn1Buff(void *libCtx, uint8_t *buff, uint32_t buffLen,
458+ CRYPT_CURVE25519_Ctx **pubKey, bool isComplete)
459+{
460+ return ParseCurve25519SubPubkeyAsn1Buff(libCtx, buff, buffLen, pubKey, isComplete, BSL_CID_ED25519,
461+ CRYPT_ED25519_NewCtxEx);
462+}
444#endif // HITLS_CRYPTO_ED25519463#endif // HITLS_CRYPTO_ED25519
445-#endif // HITLS_CRYPTO_KEY_DECODE464+ 
465+#ifdef HITLS_CRYPTO_X25519
O
OOoohui1月15日

下面三个函数与ed25519的实现逻辑完全相同,提取公共函数

likedislike
466+int32_t CRYPT_X25519_ParsePkcs8Key(void *libCtx, uint8_t *buffer, uint32_t bufferLen,
467+ CRYPT_CURVE25519_Ctx **x25519PriKey)
468+{
469+ return ParseCurve25519Pkcs8Key(libCtx, buffer, bufferLen, x25519PriKey, BSL_CID_X25519,
470+ CRYPT_X25519_NewCtxEx);
471+}
472+ 
473+int32_t CRYPT_X25519_ParseSubPubkeyAsn1Buff(void *libCtx, uint8_t *buff, uint32_t buffLen,
474+ CRYPT_CURVE25519_Ctx **pubKey, bool isComplete)
475+{
476+ return ParseCurve25519SubPubkeyAsn1Buff(libCtx, buff, buffLen, pubKey, isComplete, BSL_CID_X25519,
477+ CRYPT_X25519_NewCtxEx);
478+}
479+#endif // HITLS_CRYPTO_X25519
480+#endif // HITLS_CRYPTO_KEY_DECODE
@@ -372,8 +372,9 @@ int32_t ParseEccPrikeyAsn1Buff(uint8_t *buff, uint32_t buffLen, BSL_ASN1_Buffer
372}372}
373#endif // HITLS_CRYPTO_ECDSA || HITLS_CRYPTO_SM2373#endif // HITLS_CRYPTO_ECDSA || HITLS_CRYPTO_SM2
374 374 
375-#ifdef HITLS_CRYPTO_ED25519375+#if defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519)
376-static int32_t ParseEd25519PrikeyAsn1Buff(uint8_t *buff, uint32_t buffLen, CRYPT_EAL_PkeyCtx **ealPriKey)376+static int32_t ParseCurve25519PrikeyAsn1Buff(uint8_t *buff, uint32_t buffLen, CRYPT_EAL_PkeyCtx **ealPriKey,
377+ int32_t algId)
377{378{
378 uint8_t *tmpBuff = buff;379 uint8_t *tmpBuff = buff;
379 uint32_t tmpBuffLen = buffLen;380 uint32_t tmpBuffLen = buffLen;
@@ -384,12 +385,12 @@ static int32_t ParseEd25519PrikeyAsn1Buff(uint8_t *buff, uint32_t buffLen, CRYPT
384 return ret;385 return ret;
385 }386 }
386 387 
387- CRYPT_EAL_PkeyCtx *pctx = CRYPT_EAL_PkeyNewCtx(CRYPT_PKEY_ED25519);388+ CRYPT_EAL_PkeyCtx *pctx = CRYPT_EAL_PkeyNewCtx(algId);
388 if (pctx == NULL) {389 if (pctx == NULL) {
389 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);390 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);
390 return CRYPT_MEM_ALLOC_FAIL;391 return CRYPT_MEM_ALLOC_FAIL;
391 }392 }
392- CRYPT_EAL_PkeyPrv prv = {.id = CRYPT_PKEY_ED25519, .key.curve25519Prv = {.data = tmpBuff, .len = tmpBuffLen}};393+ CRYPT_EAL_PkeyPrv prv = {.id = algId, .key.curve25519Prv = {.data = tmpBuff, .len = tmpBuffLen}};
393 ret = CRYPT_EAL_PkeySetPrv(pctx, &prv);394 ret = CRYPT_EAL_PkeySetPrv(pctx, &prv);
394 if (ret != CRYPT_SUCCESS) {395 if (ret != CRYPT_SUCCESS) {
395 CRYPT_EAL_PkeyFreeCtx(pctx);396 CRYPT_EAL_PkeyFreeCtx(pctx);
@@ -400,14 +401,15 @@ static int32_t ParseEd25519PrikeyAsn1Buff(uint8_t *buff, uint32_t buffLen, CRYPT
400 return CRYPT_SUCCESS;401 return CRYPT_SUCCESS;
401}402}
402 403 
403-static int32_t ParseEd25519PubkeyAsn1Buff(uint8_t *buff, uint32_t buffLen, CRYPT_EAL_PkeyCtx **ealPubKey)404+static int32_t ParseCurve25519PubkeyAsn1Buff(uint8_t *buff, uint32_t buffLen, CRYPT_EAL_PkeyCtx **ealPubKey,
405+ int32_t algId)
404{406{
405- CRYPT_EAL_PkeyCtx *pctx = CRYPT_EAL_PkeyNewCtx(CRYPT_PKEY_ED25519);407+ CRYPT_EAL_PkeyCtx *pctx = CRYPT_EAL_PkeyNewCtx(algId);
406 if (pctx == NULL) {408 if (pctx == NULL) {
407 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);409 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);
408 return CRYPT_MEM_ALLOC_FAIL;410 return CRYPT_MEM_ALLOC_FAIL;
409 }411 }
410- CRYPT_EAL_PkeyPub pub = {.id = CRYPT_PKEY_ED25519, .key.curve25519Pub = {.data = buff, .len = buffLen}};412+ CRYPT_EAL_PkeyPub pub = {.id = algId, .key.curve25519Pub = {.data = buff, .len = buffLen}};
411 int32_t ret = CRYPT_EAL_PkeySetPub(pctx, &pub);413 int32_t ret = CRYPT_EAL_PkeySetPub(pctx, &pub);
412 if (ret != CRYPT_SUCCESS) {414 if (ret != CRYPT_SUCCESS) {
413 CRYPT_EAL_PkeyFreeCtx(pctx);415 CRYPT_EAL_PkeyFreeCtx(pctx);
@@ -417,27 +419,7 @@ static int32_t ParseEd25519PubkeyAsn1Buff(uint8_t *buff, uint32_t buffLen, CRYPT
417 *ealPubKey = pctx;419 *ealPubKey = pctx;
418 return ret;420 return ret;
419}421}
420-#endif // HITLS_CRYPTO_ED25519422+#endif // HITLS_CRYPTO_ED25519 || HITLS_CRYPTO_X25519
421- 
422-#ifdef HITLS_CRYPTO_X25519
423-static int32_t ParseX25519PubkeyAsn1Buff(uint8_t *buff, uint32_t buffLen, CRYPT_EAL_PkeyCtx **ealPubKey)
424-{
425- CRYPT_EAL_PkeyCtx *pctx = CRYPT_EAL_PkeyNewCtx(CRYPT_PKEY_X25519);
426- if (pctx == NULL) {
427- BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);
428- return CRYPT_MEM_ALLOC_FAIL;
429- }
430- CRYPT_EAL_PkeyPub pub = {.id = CRYPT_PKEY_X25519, .key.curve25519Pub = {.data = buff, .len = buffLen}};
431- int32_t ret = CRYPT_EAL_PkeySetPub(pctx, &pub);
432- if (ret != CRYPT_SUCCESS) {
433- CRYPT_EAL_PkeyFreeCtx(pctx);
434- BSL_ERR_PUSH_ERROR(ret);
435- return ret;
436- }
437- *ealPubKey = pctx;
438- return ret;
439-}
440-#endif // HITLS_CRYPTO_X25519
441 423 
442static int32_t ParsePk8PrikeyAsn1(CRYPT_ENCODE_DECODE_Pk8PrikeyInfo *pk8PrikeyInfo, CRYPT_EAL_PkeyCtx **ealPriKey)424static int32_t ParsePk8PrikeyAsn1(CRYPT_ENCODE_DECODE_Pk8PrikeyInfo *pk8PrikeyInfo, CRYPT_EAL_PkeyCtx **ealPriKey)
443{425{
@@ -455,8 +437,14 @@ static int32_t ParsePk8PrikeyAsn1(CRYPT_ENCODE_DECODE_Pk8PrikeyInfo *pk8PrikeyIn
455#endif437#endif
456#ifdef HITLS_CRYPTO_ED25519438#ifdef HITLS_CRYPTO_ED25519
457 if (pk8PrikeyInfo->keyType == BSL_CID_ED25519) {439 if (pk8PrikeyInfo->keyType == BSL_CID_ED25519) {
458- return ParseEd25519PrikeyAsn1Buff(pk8PrikeyInfo->pkeyRawKey, pk8PrikeyInfo->pkeyRawKeyLen,440+ return ParseCurve25519PrikeyAsn1Buff(pk8PrikeyInfo->pkeyRawKey, pk8PrikeyInfo->pkeyRawKeyLen,
459- ealPriKey);441+ ealPriKey, CRYPT_PKEY_ED25519);
442+ }
443+#endif
444+#ifdef HITLS_CRYPTO_X25519
445+ if (pk8PrikeyInfo->keyType == BSL_CID_X25519) {
446+ return ParseCurve25519PrikeyAsn1Buff(pk8PrikeyInfo->pkeyRawKey, pk8PrikeyInfo->pkeyRawKeyLen,
447+ ealPriKey, CRYPT_PKEY_X25519);
460 }448 }
461#endif449#endif
462 return CRYPT_DECODE_UNSUPPORTED_PKCS8_TYPE;450 return CRYPT_DECODE_UNSUPPORTED_PKCS8_TYPE;
@@ -495,13 +483,13 @@ int32_t ParseSubPubkeyAsn1(BSL_ASN1_Buffer *encode, CRYPT_EAL_PkeyCtx **ealPubKe
495#ifdef HITLS_CRYPTO_ED25519483#ifdef HITLS_CRYPTO_ED25519
496 (void)algParam;484 (void)algParam;
497 if (cid == BSL_CID_ED25519) {485 if (cid == BSL_CID_ED25519) {
498- return ParseEd25519PubkeyAsn1Buff(bitPubkey.buff, bitPubkey.len, ealPubKey);486+ return ParseCurve25519PubkeyAsn1Buff(bitPubkey.buff, bitPubkey.len, ealPubKey, CRYPT_PKEY_ED25519);
499 }487 }
500#endif488#endif
501#ifdef HITLS_CRYPTO_X25519489#ifdef HITLS_CRYPTO_X25519
502 (void)algParam;490 (void)algParam;
503 if (cid == BSL_CID_X25519) {491 if (cid == BSL_CID_X25519) {
504- return ParseX25519PubkeyAsn1Buff(bitPubkey.buff, bitPubkey.len, ealPubKey);492+ return ParseCurve25519PubkeyAsn1Buff(bitPubkey.buff, bitPubkey.len, ealPubKey, CRYPT_PKEY_X25519);
505 }493 }
506#endif494#endif
507 495 
@@ -885,8 +873,8 @@ static int32_t EncodeEccPubkeyAsn1Buff(CRYPT_EAL_PkeyCtx *ealPubKey, BSL_ASN1_Bu
885}873}
886#endif // HITLS_CRYPTO_ECDSA || HITLS_CRYPTO_SM2874#endif // HITLS_CRYPTO_ECDSA || HITLS_CRYPTO_SM2
887 875 
888-#ifdef HITLS_CRYPTO_ED25519876+#if defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519)
889-static int32_t EncodeEd25519PubkeyAsn1Buff(CRYPT_EAL_PkeyCtx *ealPubKey, BSL_Buffer *bitStr)877+static int32_t EncodeCurve25519PubkeyAsn1Buff(CRYPT_EAL_PkeyCtx *ealPubKey, BSL_Buffer *bitStr, int32_t algId)
890{878{
891 uint32_t pubLen = CRYPT_EAL_PkeyGetKeyLen(ealPubKey);879 uint32_t pubLen = CRYPT_EAL_PkeyGetKeyLen(ealPubKey);
892 if (pubLen == 0) {880 if (pubLen == 0) {
@@ -898,7 +886,7 @@ static int32_t EncodeEd25519PubkeyAsn1Buff(CRYPT_EAL_PkeyCtx *ealPubKey, BSL_Buf
898 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);886 BSL_ERR_PUSH_ERROR(CRYPT_MEM_ALLOC_FAIL);
899 return CRYPT_MEM_ALLOC_FAIL;887 return CRYPT_MEM_ALLOC_FAIL;
900 }888 }
901- CRYPT_EAL_PkeyPub pubKey = {.id = CRYPT_PKEY_ED25519, .key.curve25519Pub = {.data = pub, .len = pubLen}};889+ CRYPT_EAL_PkeyPub pubKey = {.id = algId, .key.curve25519Pub = {.data = pub, .len = pubLen}};
902 int32_t ret = CRYPT_EAL_PkeyGetPub(ealPubKey, &pubKey);890 int32_t ret = CRYPT_EAL_PkeyGetPub(ealPubKey, &pubKey);
903 if (ret != CRYPT_SUCCESS) {891 if (ret != CRYPT_SUCCESS) {
904 BSL_SAL_Free(pub);892 BSL_SAL_Free(pub);
@@ -910,10 +898,10 @@ static int32_t EncodeEd25519PubkeyAsn1Buff(CRYPT_EAL_PkeyCtx *ealPubKey, BSL_Buf
910 return CRYPT_SUCCESS;898 return CRYPT_SUCCESS;
911}899}
912 900 
913-static int32_t EncodeEd25519PrikeyAsn1Buff(CRYPT_EAL_PkeyCtx *ealPriKey, BSL_Buffer *bitStr)901+static int32_t EncodeCurve25519PrikeyAsn1Buff(CRYPT_EAL_PkeyCtx *ealPriKey, BSL_Buffer *bitStr, int32_t algId)
914{902{
915- uint8_t keyBuff[32] = {0}; // The length of the ed25519 private key is 32903+ uint8_t keyBuff[32] = {0};
916- CRYPT_EAL_PkeyPrv prv = {.id = CRYPT_PKEY_ED25519, .key.curve25519Prv = {.data = keyBuff, .len = sizeof(keyBuff)}};904+ CRYPT_EAL_PkeyPrv prv = {.id = algId, .key.curve25519Prv = {.data = keyBuff, .len = sizeof(keyBuff)}};
917 int32_t ret = CRYPT_EAL_PkeyGetPrv(ealPriKey, &prv);905 int32_t ret = CRYPT_EAL_PkeyGetPrv(ealPriKey, &prv);
918 if (ret != CRYPT_SUCCESS) {906 if (ret != CRYPT_SUCCESS) {
919 BSL_ERR_PUSH_ERROR(ret);907 BSL_ERR_PUSH_ERROR(ret);
@@ -924,7 +912,7 @@ static int32_t EncodeEd25519PrikeyAsn1Buff(CRYPT_EAL_PkeyCtx *ealPriKey, BSL_Buf
924 BSL_ASN1_Buffer prvAsn1 = {BSL_ASN1_TAG_OCTETSTRING, prv.key.curve25519Prv.len, prv.key.curve25519Prv.data};912 BSL_ASN1_Buffer prvAsn1 = {BSL_ASN1_TAG_OCTETSTRING, prv.key.curve25519Prv.len, prv.key.curve25519Prv.data};
925 return BSL_ASN1_EncodeTemplate(&templ, &prvAsn1, 1, &bitStr->data, &bitStr->dataLen);913 return BSL_ASN1_EncodeTemplate(&templ, &prvAsn1, 1, &bitStr->data, &bitStr->dataLen);
926}914}
927-#endif // HITLS_CRYPTO_ED25519915+#endif // HITLS_CRYPTO_ED25519 || HITLS_CRYPTO_X25519
928 916 
929static int32_t EncodePk8AlgidAny(CRYPT_EAL_PkeyCtx *ealPriKey, BSL_Buffer *bitStr,917static int32_t EncodePk8AlgidAny(CRYPT_EAL_PkeyCtx *ealPriKey, BSL_Buffer *bitStr,
930 BSL_ASN1_Buffer *keyParam, BslCid *cidOut)918 BSL_ASN1_Buffer *keyParam, BslCid *cidOut)
@@ -948,7 +936,12 @@ static int32_t EncodePk8AlgidAny(CRYPT_EAL_PkeyCtx *ealPriKey, BSL_Buffer *bitSt
948#endif936#endif
949#ifdef HITLS_CRYPTO_ED25519937#ifdef HITLS_CRYPTO_ED25519
950 case CRYPT_PKEY_ED25519:938 case CRYPT_PKEY_ED25519:
951- ret = EncodeEd25519PrikeyAsn1Buff(ealPriKey, &tmp);939+ ret = EncodeCurve25519PrikeyAsn1Buff(ealPriKey, &tmp, CRYPT_PKEY_ED25519);
940+ break;
941+#endif
942+#ifdef HITLS_CRYPTO_X25519
943+ case CRYPT_PKEY_X25519:
944+ ret = EncodeCurve25519PrikeyAsn1Buff(ealPriKey, &tmp, CRYPT_PKEY_X25519);
952 break;945 break;
953#endif946#endif
954 default:947 default:
@@ -1069,7 +1062,12 @@ static int32_t CRYPT_EAL_SubPubkeyGetInfo(CRYPT_EAL_PkeyCtx *ealPubKey, BSL_ASN1
1069#endif1062#endif
1070#ifdef HITLS_CRYPTO_ED255191063#ifdef HITLS_CRYPTO_ED25519
1071 if (cid == CRYPT_PKEY_ED25519) {1064 if (cid == CRYPT_PKEY_ED25519) {
1072- ret = EncodeEd25519PubkeyAsn1Buff(ealPubKey, &bitTmp);1065+ ret = EncodeCurve25519PubkeyAsn1Buff(ealPubKey, &bitTmp, CRYPT_PKEY_ED25519);
1066+ }
1067+#endif
1068+#ifdef HITLS_CRYPTO_X25519
1069+ if (cid == CRYPT_PKEY_X25519) {
1070+ ret = EncodeCurve25519PubkeyAsn1Buff(ealPubKey, &bitTmp, CRYPT_PKEY_X25519);
1073 }1071 }
1074#endif1072#endif
1075 if (ret != CRYPT_SUCCESS) {1073 if (ret != CRYPT_SUCCESS) {
@@ -30,7 +30,7 @@
30#ifdef HITLS_CRYPTO_SM230#ifdef HITLS_CRYPTO_SM2
31#include "crypt_sm2.h"31#include "crypt_sm2.h"
32#endif32#endif
33-#ifdef HITLS_CRYPTO_ED2551933+#if defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519)
34#include "crypt_curve25519.h"34#include "crypt_curve25519.h"
35#endif35#endif
36 36 
@@ -173,6 +173,13 @@ int32_t CRYPT_ED25519_ParseSubPubkeyAsn1Buff(void *libCtx, uint8_t *buff, uint32
173 CRYPT_CURVE25519_Ctx **pubKey, bool isComplete);173 CRYPT_CURVE25519_Ctx **pubKey, bool isComplete);
174#endif174#endif
175 175 
176+#ifdef HITLS_CRYPTO_X25519
177+int32_t CRYPT_X25519_ParsePkcs8Key(void *libCtx, uint8_t *buffer, uint32_t bufferLen,
178+ CRYPT_CURVE25519_Ctx **x25519PriKey);
179+int32_t CRYPT_X25519_ParseSubPubkeyAsn1Buff(void *libCtx, uint8_t *buff, uint32_t buffLen,
180+ CRYPT_CURVE25519_Ctx **pubKey, bool isComplete);
181+#endif
182+ 
176#endif183#endif
177 184 
178#ifdef HITLS_CRYPTO_KEY_ENCODE185#ifdef HITLS_CRYPTO_KEY_ENCODE
@@ -451,8 +451,8 @@ static int32_t DecSubKeyInfoCb(int32_t type, uint32_t idx, void *data, void *exp
451 *(uint8_t *)expVal = BSL_ASN1_TAG_OBJECT_ID;451 *(uint8_t *)expVal = BSL_ASN1_TAG_OBJECT_ID;
452 } else if (cid == BSL_CID_RSASSAPSS) {452 } else if (cid == BSL_CID_RSASSAPSS) {
453 *(uint8_t *)expVal = BSL_ASN1_TAG_CONSTRUCTED | BSL_ASN1_TAG_SEQUENCE;453 *(uint8_t *)expVal = BSL_ASN1_TAG_CONSTRUCTED | BSL_ASN1_TAG_SEQUENCE;
454- } else if (cid == BSL_CID_ED25519) {454+ } else if (cid == BSL_CID_ED25519 || cid == BSL_CID_X25519) {
455- /* RFC8410: Ed25519 has no algorithm parameters */455+ /* RFC8410: Ed25519/X25519 has no algorithm parameters */
456 *(uint8_t *)expVal = BSL_ASN1_TAG_EMPTY; // is empty456 *(uint8_t *)expVal = BSL_ASN1_TAG_EMPTY; // is empty
457 } else {457 } else {
458 *(uint8_t *)expVal = BSL_ASN1_TAG_NULL; // is null458 *(uint8_t *)expVal = BSL_ASN1_TAG_NULL; // is null
@@ -113,14 +113,17 @@ extern const CRYPT_EAL_Func g_defEalP8Der2RsaKey[];
113extern const CRYPT_EAL_Func g_defEalP8Der2EcdsaKey[];113extern const CRYPT_EAL_Func g_defEalP8Der2EcdsaKey[];
114extern const CRYPT_EAL_Func g_defEalP8Der2Sm2Key[];114extern const CRYPT_EAL_Func g_defEalP8Der2Sm2Key[];
115extern const CRYPT_EAL_Func g_defEalP8Der2Ed25519Key[];115extern const CRYPT_EAL_Func g_defEalP8Der2Ed25519Key[];
116+extern const CRYPT_EAL_Func g_defEalP8Der2X25519Key[];
116extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2RsaKey[];117extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2RsaKey[];
117extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2EcdsaKey[];118extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2EcdsaKey[];
118extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2Sm2Key[];119extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2Sm2Key[];
119extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2Ed25519Key[];120extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2Ed25519Key[];
121+extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2X25519Key[];
120extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2RsaKey[];122extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2RsaKey[];
121extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2EcdsaKey[];123extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2EcdsaKey[];
122extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Sm2Key[];124extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Sm2Key[];
123extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Ed25519Key[];125extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Ed25519Key[];
126+extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2X25519Key[];
124extern const CRYPT_EAL_Func g_defEalLowKeyObject2PkeyObject[];127extern const CRYPT_EAL_Func g_defEalLowKeyObject2PkeyObject[];
125extern const CRYPT_EAL_Func g_defEalRsaPubDer2Key[];128extern const CRYPT_EAL_Func g_defEalRsaPubDer2Key[];
126#ifdef __cplusplus129#ifdef __cplusplus
@@ -118,6 +118,16 @@ const CRYPT_EAL_Func g_defEalP8Der2Ed25519Key[] = {
118 CRYPT_EAL_FUNC_END,118 CRYPT_EAL_FUNC_END,
119};119};
120 120 
121+const CRYPT_EAL_Func g_defEalP8Der2X25519Key[] = {
122+ {CRYPT_DECODER_IMPL_NEWCTX, (CRYPT_DECODER_IMPL_NewCtx)DECODER_X25519Der2KeyNewCtx},
123+ {CRYPT_DECODER_IMPL_GETPARAM, (CRYPT_DECODER_IMPL_GetParam)DECODER_DER2KEY_GetParam},
124+ {CRYPT_DECODER_IMPL_SETPARAM, (CRYPT_DECODER_IMPL_SetParam)DECODER_DER2KEY_SetParam},
125+ {CRYPT_DECODER_IMPL_DECODE, (CRYPT_DECODER_IMPL_Decode)DECODER_X25519Pkcs8Der2KeyDecode},
126+ {CRYPT_DECODER_IMPL_FREEOUTDATA, (CRYPT_DECODER_IMPL_FreeOutData)DECODER_DER2KEY_FreeOutData},
127+ {CRYPT_DECODER_IMPL_FREECTX, (CRYPT_DECODER_IMPL_FreeCtx)DECODER_DER2KEY_FreeCtx},
128+ CRYPT_EAL_FUNC_END,
129+};
130+ 
121const CRYPT_EAL_Func g_defEalSubPubKeyDer2RsaKey[] = {131const CRYPT_EAL_Func g_defEalSubPubKeyDer2RsaKey[] = {
122 {CRYPT_DECODER_IMPL_NEWCTX, (CRYPT_DECODER_IMPL_NewCtx)DECODER_RsaDer2KeyNewCtx},132 {CRYPT_DECODER_IMPL_NEWCTX, (CRYPT_DECODER_IMPL_NewCtx)DECODER_RsaDer2KeyNewCtx},
123 {CRYPT_DECODER_IMPL_GETPARAM, (CRYPT_DECODER_IMPL_GetParam)DECODER_DER2KEY_GetParam},133 {CRYPT_DECODER_IMPL_GETPARAM, (CRYPT_DECODER_IMPL_GetParam)DECODER_DER2KEY_GetParam},
@@ -157,6 +167,16 @@ const CRYPT_EAL_Func g_defEalSubPubKeyDer2Ed25519Key[] = {
157 CRYPT_EAL_FUNC_END,167 CRYPT_EAL_FUNC_END,
158};168};
159 169 
170+const CRYPT_EAL_Func g_defEalSubPubKeyDer2X25519Key[] = {
171+ {CRYPT_DECODER_IMPL_NEWCTX, (CRYPT_DECODER_IMPL_NewCtx)DECODER_X25519Der2KeyNewCtx},
172+ {CRYPT_DECODER_IMPL_GETPARAM, (CRYPT_DECODER_IMPL_GetParam)DECODER_DER2KEY_GetParam},
173+ {CRYPT_DECODER_IMPL_SETPARAM, (CRYPT_DECODER_IMPL_SetParam)DECODER_DER2KEY_SetParam},
174+ {CRYPT_DECODER_IMPL_DECODE, (CRYPT_DECODER_IMPL_Decode)DECODER_X25519SubPubKeyDer2KeyDecode},
175+ {CRYPT_DECODER_IMPL_FREEOUTDATA, (CRYPT_DECODER_IMPL_FreeOutData)DECODER_DER2KEY_FreeOutData},
176+ {CRYPT_DECODER_IMPL_FREECTX, (CRYPT_DECODER_IMPL_FreeCtx)DECODER_DER2KEY_FreeCtx},
177+ CRYPT_EAL_FUNC_END,
178+};
179+ 
160const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2RsaKey[] = {180const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2RsaKey[] = {
161 {CRYPT_DECODER_IMPL_NEWCTX, (CRYPT_DECODER_IMPL_NewCtx)DECODER_RsaDer2KeyNewCtx},181 {CRYPT_DECODER_IMPL_NEWCTX, (CRYPT_DECODER_IMPL_NewCtx)DECODER_RsaDer2KeyNewCtx},
162 {CRYPT_DECODER_IMPL_GETPARAM, (CRYPT_DECODER_IMPL_GetParam)DECODER_DER2KEY_GetParam},182 {CRYPT_DECODER_IMPL_GETPARAM, (CRYPT_DECODER_IMPL_GetParam)DECODER_DER2KEY_GetParam},
@@ -197,6 +217,16 @@ const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Ed25519Key[] = {
197 CRYPT_EAL_FUNC_END,217 CRYPT_EAL_FUNC_END,
198};218};
199 219 
220+const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2X25519Key[] = {
221+ {CRYPT_DECODER_IMPL_NEWCTX, (CRYPT_DECODER_IMPL_NewCtx)DECODER_X25519Der2KeyNewCtx},
222+ {CRYPT_DECODER_IMPL_GETPARAM, (CRYPT_DECODER_IMPL_GetParam)DECODER_DER2KEY_GetParam},
223+ {CRYPT_DECODER_IMPL_SETPARAM, (CRYPT_DECODER_IMPL_SetParam)DECODER_DER2KEY_SetParam},
224+ {CRYPT_DECODER_IMPL_DECODE, (CRYPT_DECODER_IMPL_Decode)DECODER_X25519SubPubKeyWithOutSeqDer2KeyDecode},
225+ {CRYPT_DECODER_IMPL_FREEOUTDATA, (CRYPT_DECODER_IMPL_FreeOutData)DECODER_DER2KEY_FreeOutData},
226+ {CRYPT_DECODER_IMPL_FREECTX, (CRYPT_DECODER_IMPL_FreeCtx)DECODER_DER2KEY_FreeCtx},
227+ CRYPT_EAL_FUNC_END,
228+};
229+ 
200const CRYPT_EAL_Func g_defEalLowKeyObject2PkeyObject[] = {230const CRYPT_EAL_Func g_defEalLowKeyObject2PkeyObject[] = {
201 {CRYPT_DECODER_IMPL_NEWCTX, (CRYPT_DECODER_IMPL_NewCtx)DECODER_LowKeyObject2PkeyObjectNewCtx},231 {CRYPT_DECODER_IMPL_NEWCTX, (CRYPT_DECODER_IMPL_NewCtx)DECODER_LowKeyObject2PkeyObjectNewCtx},
202 {CRYPT_DECODER_IMPL_GETPARAM, (CRYPT_DECODER_IMPL_GetParam)DECODER_LowKeyObject2PkeyObjectGetParam},232 {CRYPT_DECODER_IMPL_GETPARAM, (CRYPT_DECODER_IMPL_GetParam)DECODER_LowKeyObject2PkeyObjectGetParam},
@@ -226,6 +226,8 @@ static const CRYPT_EAL_AlgInfo g_defEalDecoders[] = {
226 "provider=default, inFormat=ASN1, inType=PRIKEY_PKCS8_UNENCRYPT, outFormat=OBJECT, outType=LOW_KEY"},226 "provider=default, inFormat=ASN1, inType=PRIKEY_PKCS8_UNENCRYPT, outFormat=OBJECT, outType=LOW_KEY"},
227 {CRYPT_PKEY_ED25519, g_defEalP8Der2Ed25519Key,227 {CRYPT_PKEY_ED25519, g_defEalP8Der2Ed25519Key,
228 "provider=default, inFormat=ASN1, inType=PRIKEY_PKCS8_UNENCRYPT, outFormat=OBJECT, outType=LOW_KEY"},228 "provider=default, inFormat=ASN1, inType=PRIKEY_PKCS8_UNENCRYPT, outFormat=OBJECT, outType=LOW_KEY"},
229+ {CRYPT_PKEY_X25519, g_defEalP8Der2X25519Key,
230+ "provider=default, inFormat=ASN1, inType=PRIKEY_PKCS8_UNENCRYPT, outFormat=OBJECT, outType=LOW_KEY"},
229 {CRYPT_PKEY_RSA, g_defEalSubPubKeyDer2RsaKey,231 {CRYPT_PKEY_RSA, g_defEalSubPubKeyDer2RsaKey,
230 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY, outFormat=OBJECT, outType=LOW_KEY"},232 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY, outFormat=OBJECT, outType=LOW_KEY"},
231 {CRYPT_PKEY_ECDSA, g_defEalSubPubKeyDer2EcdsaKey,233 {CRYPT_PKEY_ECDSA, g_defEalSubPubKeyDer2EcdsaKey,
@@ -234,6 +236,8 @@ static const CRYPT_EAL_AlgInfo g_defEalDecoders[] = {
234 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY, outFormat=OBJECT, outType=LOW_KEY"},236 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY, outFormat=OBJECT, outType=LOW_KEY"},
235 {CRYPT_PKEY_ED25519, g_defEalSubPubKeyDer2Ed25519Key,237 {CRYPT_PKEY_ED25519, g_defEalSubPubKeyDer2Ed25519Key,
236 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY, outFormat=OBJECT, outType=LOW_KEY"},238 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY, outFormat=OBJECT, outType=LOW_KEY"},
239+ {CRYPT_PKEY_X25519, g_defEalSubPubKeyDer2X25519Key,
240+ "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY, outFormat=OBJECT, outType=LOW_KEY"},
237 {CRYPT_PKEY_RSA, g_defEalSubPubKeyWithoutSeqDer2RsaKey,241 {CRYPT_PKEY_RSA, g_defEalSubPubKeyWithoutSeqDer2RsaKey,
238 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY_WITHOUT_SEQ, outFormat=OBJECT, outType=LOW_KEY"},242 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY_WITHOUT_SEQ, outFormat=OBJECT, outType=LOW_KEY"},
239 {CRYPT_PKEY_ECDSA, g_defEalSubPubKeyWithoutSeqDer2EcdsaKey,243 {CRYPT_PKEY_ECDSA, g_defEalSubPubKeyWithoutSeqDer2EcdsaKey,
@@ -242,6 +246,8 @@ static const CRYPT_EAL_AlgInfo g_defEalDecoders[] = {
242 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY_WITHOUT_SEQ, outFormat=OBJECT, outType=LOW_KEY"},246 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY_WITHOUT_SEQ, outFormat=OBJECT, outType=LOW_KEY"},
243 {CRYPT_PKEY_ED25519, g_defEalSubPubKeyWithoutSeqDer2Ed25519Key,247 {CRYPT_PKEY_ED25519, g_defEalSubPubKeyWithoutSeqDer2Ed25519Key,
244 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY_WITHOUT_SEQ, outFormat=OBJECT, outType=LOW_KEY"},248 "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY_WITHOUT_SEQ, outFormat=OBJECT, outType=LOW_KEY"},
249+ {CRYPT_PKEY_X25519, g_defEalSubPubKeyWithoutSeqDer2X25519Key,
250+ "provider=default, inFormat=ASN1, inType=PUBKEY_SUBKEY_WITHOUT_SEQ, outFormat=OBJECT, outType=LOW_KEY"},
245 {BSL_CID_DECODE_UNKNOWN, g_defEalLowKeyObject2PkeyObject,251 {BSL_CID_DECODE_UNKNOWN, g_defEalLowKeyObject2PkeyObject,
246 "provider=default, inFormat=OBJECT, inType=LOW_KEY, outFormat=OBJECT, outType=HIGH_KEY"},252 "provider=default, inFormat=OBJECT, inType=LOW_KEY, outFormat=OBJECT, outType=HIGH_KEY"},
247 CRYPT_EAL_ALGINFO_END253 CRYPT_EAL_ALGINFO_END
@@ -368,12 +368,14 @@ test_pki()
368 ### key gen ####368 ### key gen ####
369 bash mini_build_test.sh no-tls enable=eal,key_encode,sal_file,pem,rsa,sha256,drbg_hash test=key_encode linux369 bash mini_build_test.sh no-tls enable=eal,key_encode,sal_file,pem,rsa,sha256,drbg_hash test=key_encode linux
370 bash mini_build_test.sh no-tls enable=eal,key_encode,pem,ed25519,drbg_hash test=key_encode370 bash mini_build_test.sh no-tls enable=eal,key_encode,pem,ed25519,drbg_hash test=key_encode
371+ bash mini_build_test.sh no-tls enable=eal,key_encode,key_epki,pem,x25519,drbg_hash,cipher,modes,sha256,hmac test=key_encode
371 bash mini_build_test.sh no-tls enable=eal,key_encode,sal_file,sm2,sha256,drbg_hash test=key_encode linux372 bash mini_build_test.sh no-tls enable=eal,key_encode,sal_file,sm2,sha256,drbg_hash test=key_encode linux
372 bash mini_build_test.sh no-tls enable=eal,key_encode,pem,ecdsa,curve_nistp256,sha256,drbg_hash test=key_encode373 bash mini_build_test.sh no-tls enable=eal,key_encode,pem,ecdsa,curve_nistp256,sha256,drbg_hash test=key_encode
373 374 
374 #### key parse ####375 #### key parse ####
375 bash mini_build_test.sh no-tls enable=eal,key_decode,sal_file,pem,rsa,sha256,drbg_hash test=key_decode linux376 bash mini_build_test.sh no-tls enable=eal,key_decode,sal_file,pem,rsa,sha256,drbg_hash test=key_decode linux
376 bash mini_build_test.sh no-tls enable=eal,key_decode,sal_file,pem,ed25519 test=key_decode linux377 bash mini_build_test.sh no-tls enable=eal,key_decode,sal_file,pem,ed25519 test=key_decode linux
378+ bash mini_build_test.sh no-tls enable=eal,key_decode,key_epki,sal_file,pem,x25519,cipher,modes,sha256,hmac test=key_decode linux
377 bash mini_build_test.sh no-tls enable=eal,key_decode,sal_file,sm2,sha256 test=key_decode linux379 bash mini_build_test.sh no-tls enable=eal,key_decode,sal_file,sm2,sha256 test=key_decode linux
378 bash mini_build_test.sh no-tls enable=eal,key_decode,sal_file,pem,ecdsa,curve_nistp256,sha256 test=key_decode linux380 bash mini_build_test.sh no-tls enable=eal,key_decode,sal_file,pem,ecdsa,curve_nistp256,sha256 test=key_decode linux
379 381 
@@ -526,7 +526,7 @@ EXIT:
526/* END_CASE */526/* END_CASE */
527 527 
528/* BEGIN_CASE */528/* BEGIN_CASE */
529-void SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC001(int alg, char *path, int format, int type, Hex *prv)529+void SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC001(int alg, char *path, int format, int type, Hex *prv)
530{530{
531 RegisterLogFunc();531 RegisterLogFunc();
532 uint8_t rawPriKey[32] = {0};532 uint8_t rawPriKey[32] = {0};
@@ -547,7 +547,7 @@ EXIT:
547/* END_CASE */547/* END_CASE */
548 548 
549/* BEGIN_CASE */549/* BEGIN_CASE */
550-void SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002(char *path, int format, int type, int ret)550+void SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002(char *path, int format, int type, int ret)
551{551{
552 CRYPT_EAL_PkeyCtx *pkeyCtx = NULL;552 CRYPT_EAL_PkeyCtx *pkeyCtx = NULL;
553 ASSERT_EQ(CRYPT_EAL_DecodeFileKey(format, type, path, NULL, 0, &pkeyCtx), ret);553 ASSERT_EQ(CRYPT_EAL_DecodeFileKey(format, type, path, NULL, 0, &pkeyCtx), ret);
@@ -557,6 +557,70 @@ EXIT:
557}557}
558/* END_CASE */558/* END_CASE */
559 559 
560+/* BEGIN_CASE */
561+void SDV_BSL_ASN1_PARSE_X25519PUBKEY_FILE_TC001(char *path, int fileType, Hex *expect)
O
OOoohui1月15日

仅有基本的编码和解码用例,未添加解码后使用公钥或私钥,如密钥交换的测试

test_suite_sdv_x509.c中增加小型化用例:SDV_PKI_GEN_KEY_TC001、SDV_PKI_GEN_ENCKEY_TC001、SDV_PKI_PARSE_KEY_FILE_TC001、SDV_PKI_PARSE_ENCKEY_FILE_TC001、SDV_PKI_PARSE_KEY_BUFF_TC001

all_mini_test.sh:test_pki补充x25519密钥生成与解析的小型化测试,本地测试需通过

likedislike
dsy678
1月16日 评论:
562+{
563+ RegisterLogFunc();
564+ CRYPT_EAL_PkeyCtx *pkeyCtx = NULL;
565+ ASSERT_EQ(CRYPT_EAL_DecodeFileKey(BSL_FORMAT_ASN1, fileType, path, NULL, 0, &pkeyCtx), CRYPT_SUCCESS);
566+ ASSERT_EQ(fileType, CRYPT_PUBKEY_SUBKEY);
567+ ASSERT_EQ(CRYPT_EAL_PkeyGetId(pkeyCtx), CRYPT_PKEY_X25519);
568+ 
569+ uint8_t rawPubKey[32] = {0};
570+ CRYPT_EAL_PkeyPub pkeyPub = {0};
571+ pkeyPub.id = CRYPT_PKEY_X25519;
572+ pkeyPub.key.curve25519Pub.data = rawPubKey;
573+ pkeyPub.key.curve25519Pub.len = sizeof(rawPubKey);
574+ ASSERT_EQ(CRYPT_EAL_PkeyGetPub(pkeyCtx, &pkeyPub), CRYPT_SUCCESS);
575+ ASSERT_COMPARE("key cmp", expect->x, expect->len, pkeyPub.key.curve25519Pub.data,
576+ pkeyPub.key.curve25519Pub.len);
577+ 
578+EXIT:
579+ CRYPT_EAL_PkeyFreeCtx(pkeyCtx);
580+ BSL_GLOBAL_DeInit();
581+}
582+/* END_CASE */
583+ 
584+/* BEGIN_CASE */
585+void SDV_BSL_ASN1_PARSE_X25519_EXCH_TC001(char *prvPath, int prvFormat, int prvType,
586+ char *pubPath, int pubFormat, int pubType)
587+{
588+ RegisterLogFunc();
589+ TestMemInit();
590+ CRYPT_RandRegist(RandFunc);
591+ CRYPT_RandRegistEx(RandFuncEx);
592+ CRYPT_EAL_PkeyCtx *prvCtx = NULL;
593+ CRYPT_EAL_PkeyCtx *pubCtx = NULL;
594+ CRYPT_EAL_PkeyCtx *peerCtx = NULL;
595+ uint8_t share1[32] = {0};
596+ uint8_t share2[32] = {0};
597+ uint32_t share1Len = sizeof(share1);
598+ uint32_t share2Len = sizeof(share2);
599+ 
600+ ASSERT_EQ(CRYPT_EAL_DecodeFileKey(prvFormat, prvType, prvPath, NULL, 0, &prvCtx), CRYPT_SUCCESS);
601+ ASSERT_EQ(CRYPT_EAL_DecodeFileKey(pubFormat, pubType, pubPath, NULL, 0, &pubCtx), CRYPT_SUCCESS);
602+ ASSERT_EQ(CRYPT_EAL_PkeyGetId(prvCtx), CRYPT_PKEY_X25519);
603+ ASSERT_EQ(CRYPT_EAL_PkeyGetId(pubCtx), CRYPT_PKEY_X25519);
604+ 
605+ peerCtx = CRYPT_EAL_PkeyNewCtx(CRYPT_PKEY_X25519);
606+ ASSERT_TRUE(peerCtx != NULL);
607+ ASSERT_EQ(TestRandInit(), CRYPT_SUCCESS);
608+ ASSERT_EQ(CRYPT_EAL_PkeyGen(peerCtx), CRYPT_SUCCESS);
609+ 
610+ ASSERT_EQ(CRYPT_EAL_PkeyComputeShareKey(prvCtx, peerCtx, share1, &share1Len), CRYPT_SUCCESS);
611+ ASSERT_EQ(CRYPT_EAL_PkeyComputeShareKey(peerCtx, pubCtx, share2, &share2Len), CRYPT_SUCCESS);
612+ ASSERT_EQ(share1Len, share2Len);
613+ ASSERT_EQ(memcmp(share1, share2, share1Len), 0);
614+ 
615+EXIT:
616+ TestRandDeInit();
617+ CRYPT_EAL_PkeyFreeCtx(prvCtx);
618+ CRYPT_EAL_PkeyFreeCtx(pubCtx);
619+ CRYPT_EAL_PkeyFreeCtx(peerCtx);
620+ BSL_GLOBAL_DeInit();
621+}
622+/* END_CASE */
623+ 
560/* BEGIN_CASE */624/* BEGIN_CASE */
561void SDV_BSL_ASN1_PARSE_ENCPK8_TC001(int isProvider, char *path, int fileType, char *fileTypeStr, Hex *pass,625void SDV_BSL_ASN1_PARSE_ENCPK8_TC001(int isProvider, char *path, int fileType, char *fileTypeStr, Hex *pass,
562 int mdId, Hex *msg, Hex *sign)626 int mdId, Hex *msg, Hex *sign)
@@ -145,20 +145,44 @@ SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001:1:1:"../testdata/cert/asn1/pkcs8_unencry
145SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001 parse sm2 pkcs8 prikey file and sign data145SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001 parse sm2 pkcs8 prikey file and sign data
146SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001:1:1:"../testdata/cert/asn1/pkcs8_unencrypted/ec_brainpoolP512r1_p8_unencrypted.der":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"PRIKEY_PKCS8_UNENCRYPT":CRYPT_MD_SHA512:"73706B692074657374206D657373616765":CRYPT_PKEY_ECDSA:"821534db0ae4c341f34aa8f2d4846860c5f37ff13bb5d247b75710b3a0231797e4faeb123ccbb2cdb531f1f7a63720c693047cfee9b3bf42384bcaea52c58d2d":CRYPT_ECC_BRAINPOOLP512R1:""146SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001:1:1:"../testdata/cert/asn1/pkcs8_unencrypted/ec_brainpoolP512r1_p8_unencrypted.der":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"PRIKEY_PKCS8_UNENCRYPT":CRYPT_MD_SHA512:"73706B692074657374206D657373616765":CRYPT_PKEY_ECDSA:"821534db0ae4c341f34aa8f2d4846860c5f37ff13bb5d247b75710b3a0231797e4faeb123ccbb2cdb531f1f7a63720c693047cfee9b3bf42384bcaea52c58d2d":CRYPT_ECC_BRAINPOOLP512R1:""
147 147 
148-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC001: parse ed25519 prikey der file148+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC001: parse ed25519 prikey der file
149-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC001:CRYPT_PKEY_ED25519:"../testdata/cert/ed25519/ed25519.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"cbc4e3b0b901b75865a96c42f1c979c3065bd23aeb4c4b1a74c06bc85fafc4cf"149+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC001:CRYPT_PKEY_ED25519:"../testdata/cert/ed25519/ed25519.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"cbc4e3b0b901b75865a96c42f1c979c3065bd23aeb4c4b1a74c06bc85fafc4cf"
150 150 
151-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC001: parse ed25519 prikey pem file151+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC001: parse ed25519 prikey pem file
152-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC001:CRYPT_PKEY_ED25519:"../testdata/cert/ed25519/ed25519.key.pem":BSL_FORMAT_PEM:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"cbc4e3b0b901b75865a96c42f1c979c3065bd23aeb4c4b1a74c06bc85fafc4cf"152+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC001:CRYPT_PKEY_ED25519:"../testdata/cert/ed25519/ed25519.key.pem":BSL_FORMAT_PEM:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"cbc4e3b0b901b75865a96c42f1c979c3065bd23aeb4c4b1a74c06bc85fafc4cf"
153 153 
154-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002: param is not empty154+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002: param is not empty
155-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002:"../testdata/cert/ed25519/ed25519-para-not-empty.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:BSL_ASN1_ERR_TAG_EXPECTED155+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002:"../testdata/cert/ed25519/ed25519-para-not-empty.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:BSL_ASN1_ERR_TAG_EXPECTED
156 156 
157-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002: private key length error157+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002: private key length error
158-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002:"../testdata/cert/ed25519/ed25519-wrong-prv-len.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:CRYPT_CURVE25519_KEYLEN_ERROR158+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002:"../testdata/cert/ed25519/ed25519-wrong-prv-len.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:CRYPT_CURVE25519_KEYLEN_ERROR
159 159 
160-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002: wrong tag160+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002: wrong tag
161-SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002:"../testdata/cert/ed25519/ed25519-wrong-tag.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:BSL_ASN1_ERR_MISMATCH_TAG161+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002:"../testdata/cert/ed25519/ed25519-wrong-tag.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:BSL_ASN1_ERR_MISMATCH_TAG
162+ 
163+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC001: parse x25519 prikey der file
164+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC001:CRYPT_PKEY_X25519:"../testdata/cert/x25519/x25519.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"58b8657e15813b36ee81da2ca184f07d8c6ae71df5e8126998644a339083b37d"
165+ 
166+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC001: parse x25519 prikey pem file
167+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC001:CRYPT_PKEY_X25519:"../testdata/cert/x25519/x25519.key.pem":BSL_FORMAT_PEM:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"58b8657e15813b36ee81da2ca184f07d8c6ae71df5e8126998644a339083b37d"
168+ 
169+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002: param is not empty
170+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002:"../testdata/cert/x25519/x25519-para-not-empty.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:BSL_ASN1_ERR_TAG_EXPECTED
171+ 
172+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002: private key length error
173+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002:"../testdata/cert/x25519/x25519-wrong-prv-len.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:CRYPT_CURVE25519_KEYLEN_ERROR
174+ 
175+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002: wrong tag
176+SDV_BSL_ASN1_PARSE_25519PRIKEY_FILE_TC002:"../testdata/cert/x25519/x25519-wrong-tag.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:BSL_ASN1_ERR_MISMATCH_TAG
177+ 
178+SDV_BSL_ASN1_PARSE_X25519PUBKEY_FILE_TC001 parse x25519 pubkey file and compare key
179+SDV_BSL_ASN1_PARSE_X25519PUBKEY_FILE_TC001:"../testdata/cert/x25519/x25519.pub.der":CRYPT_PUBKEY_SUBKEY:"e91507fb6a477159e3e13920976673a2a081c346c9668cfa34ef2f757ceab34e"
180+ 
181+SDV_BSL_ASN1_PARSE_X25519_EXCH_TC001 x25519 key exchange with decoded key files (der)
182+SDV_BSL_ASN1_PARSE_X25519_EXCH_TC001:"../testdata/cert/x25519/x25519.key.der":BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"../testdata/cert/x25519/x25519.pub.der":BSL_FORMAT_ASN1:CRYPT_PUBKEY_SUBKEY
183+ 
184+SDV_BSL_ASN1_PARSE_X25519_EXCH_TC001 x25519 key exchange with decoded key files (pem)
185+SDV_BSL_ASN1_PARSE_X25519_EXCH_TC001:"../testdata/cert/x25519/x25519.key.pem":BSL_FORMAT_PEM:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"../testdata/cert/x25519/x25519.pub.pem":BSL_FORMAT_PEM:CRYPT_PUBKEY_SUBKEY
162 186 
163SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse prime192v1 pkcs8 encrypted prikey file and sign data, prf hmac256, aes256 cbc187SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse prime192v1 pkcs8 encrypted prikey file and sign data, prf hmac256, aes256 cbc
164SDV_BSL_ASN1_PARSE_ENCPK8_TC001:0:"../testdata/cert/chain/nistp192_certs/ee_nistp192_key_pkcs8_encrypted.der":CRYPT_PRIKEY_PKCS8_ENCRYPT:"PRIKEY_PKCS8_ENCRYPT":"313233343536":CRYPT_MD_SHA256:"00010203040506070809":""188SDV_BSL_ASN1_PARSE_ENCPK8_TC001:0:"../testdata/cert/chain/nistp192_certs/ee_nistp192_key_pkcs8_encrypted.der":CRYPT_PRIKEY_PKCS8_ENCRYPT:"PRIKEY_PKCS8_ENCRYPT":"313233343536":CRYPT_MD_SHA256:"00010203040506070809":""
@@ -193,6 +217,9 @@ SDV_BSL_ASN1_PARSE_BUFF_TC001:1:"PRIKEY_ECC":CRYPT_PRIKEY_ECC:"1234":"306f020101
193SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ed25519 pkcs8217SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ed25519 pkcs8
194SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/ed25519/ed25519.pub.der":CRYPT_PUBKEY_SUBKEY:1:"302A300506032B65700321004769E3FB89D4CC7EA744348AD72582146029CDFE60394497802BD7A575FF98AF"218SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/ed25519/ed25519.pub.der":CRYPT_PUBKEY_SUBKEY:1:"302A300506032B65700321004769E3FB89D4CC7EA744348AD72582146029CDFE60394497802BD7A575FF98AF"
195 219 
220+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 x25519 pkcs8
221+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/x25519/x25519.pub.der":CRYPT_PUBKEY_SUBKEY:1:"302A300506032B656E032100E91507FB6A477159E3E13920976673A2A081C346C9668CFA34EF2F757CEAB34E"
222+ 
196SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 rsa pkcs8223SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 rsa pkcs8
197SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/publicpkcs8.pem":CRYPT_PUBKEY_SUBKEY:1:"30820122300D06092A864886F70D01010105000382010F003082010A0282010100A54E1B3861B07E97D99F1746CB0FD4B626E69B8D2C6332492DE37429EDE5C8910211DD2031E67C7404FA58D97E3DF21468AF6A92FA60A86A042058D47A19FDEA653CE2133EBFA0F6BF2EF2DF20DFBDD0DED3CF79DE8E1CC1A748AF9F7D435A4A08B0579D1A2FDCB7F0E4A4770FB6860D22A8B03709EF80811592A792EA7D58185725D78787F05F83210B42B012B6557EBDB8FE46C6F3F5A78B26840CD951D89681180CC817307EB673EDD3E699508456C834112E7E9F121376E5F5060635A9660F50DD938CCD643A61D3CFCD3E1D4C1D751576F029E88A522237D25A7376AB1B8133B75CAED8389339613FD39387170137C589A2C5BBAFB5B9AB0C48804D2E210203010001"224SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/publicpkcs8.pem":CRYPT_PUBKEY_SUBKEY:1:"30820122300D06092A864886F70D01010105000382010F003082010A0282010100A54E1B3861B07E97D99F1746CB0FD4B626E69B8D2C6332492DE37429EDE5C8910211DD2031E67C7404FA58D97E3DF21468AF6A92FA60A86A042058D47A19FDEA653CE2133EBFA0F6BF2EF2DF20DFBDD0DED3CF79DE8E1CC1A748AF9F7D435A4A08B0579D1A2FDCB7F0E4A4770FB6860D22A8B03709EF80811592A792EA7D58185725D78787F05F83210B42B012B6557EBDB8FE46C6F3F5A78B26840CD951D89681180CC817307EB673EDD3E699508456C834112E7E9F121376E5F5060635A9660F50DD938CCD643A61D3CFCD3E1D4C1D751576F029E88A522237D25A7376AB1B8133B75CAED8389339613FD39387170137C589A2C5BBAFB5B9AB0C48804D2E210203010001"
198 225 
@@ -241,6 +268,9 @@ SDV_BSL_PEM_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/rsa2048pub_pkcs1.der
241SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001: ed25519268SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001: ed25519
242SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001:"../testdata/cert/ed25519/ed25519.key.der":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"302E020100300506032B657004220420CBC4E3B0B901B75865A96C42F1C979C3065BD23AEB4C4B1A74C06BC85FAFC4CF"269SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001:"../testdata/cert/ed25519/ed25519.key.der":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"302E020100300506032B657004220420CBC4E3B0B901B75865A96C42F1C979C3065BD23AEB4C4B1A74C06BC85FAFC4CF"
243 270 
271+SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001: x25519
272+SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001:"../testdata/cert/x25519/x25519.key.der":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"302E020100300506032B656E0422042058B8657E15813B36EE81DA2CA184F07D8C6AE71DF5E8126998644A339083B37D"
273+ 
244SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001 ecc pkcs8274SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001 ecc pkcs8
245SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001:"../testdata/cert/asn1/secp384r1_pkcs8.pem":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"3081B6020100301006072A8648CE3D020106052B8104002204819E30819B020101043011F1AD7FD68D2BDC0FE972B521D6416B1C2D0D6EA82875B1AE97B05BE297D9E7990DB33F08882FDEE4A285C1D87472C8A16403620004AEBF47BD84A597CB41F09E1F28E13813993476C2840084DAB242737516D1231B5DB3CD30DF7159E04ABE5A6BED2F36016C2FDABB9A6F28EA558CCDD4B8E8AACA9E8ACA0F55C04DAD4F0F1028E4D4B0185E55C37CB25FCDFADA182F0355B4AAAD"275SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001:"../testdata/cert/asn1/secp384r1_pkcs8.pem":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"3081B6020100301006072A8648CE3D020106052B8104002204819E30819B020101043011F1AD7FD68D2BDC0FE972B521D6416B1C2D0D6EA82875B1AE97B05BE297D9E7990DB33F08882FDEE4A285C1D87472C8A16403620004AEBF47BD84A597CB41F09E1F28E13813993476C2840084DAB242737516D1231B5DB3CD30DF7159E04ABE5A6BED2F36016C2FDABB9A6F28EA558CCDD4B8E8AACA9E8ACA0F55C04DAD4F0F1028E4D4B0185E55C37CB25FCDFADA182F0355B4AAAD"
246 276 
@@ -7,6 +7,15 @@ SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_ASN1:"../testdata/cert/ed25519/ed25519
7SDV_X509_CERT_PARSE_FUNC_TC001 parse ed25519 cert unknown7SDV_X509_CERT_PARSE_FUNC_TC001 parse ed25519 cert unknown
8SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_UNKNOWN:"../testdata/cert/ed25519/ed25519.ca.pem"8SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_UNKNOWN:"../testdata/cert/ed25519/ed25519.ca.pem"
9 9 
10+SDV_X509_CERT_PARSE_FUNC_TC001 parse x25519 ee cert pem
11+SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_PEM:"../testdata/cert/x25519/x25519.ee.pem"
12+ 
13+SDV_X509_CERT_PARSE_FUNC_TC001 parse x25519 ee cert der
14+SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_ASN1:"../testdata/cert/x25519/x25519.ee.der"
15+ 
16+SDV_X509_CERT_PARSE_FUNC_TC001 parse x25519 ee cert unknown
17+SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_UNKNOWN:"../testdata/cert/x25519/x25519.ee.pem"
18+ 
10SDV_X509_CERT_PARSE_FUNC_TC001 parse pem cert19SDV_X509_CERT_PARSE_FUNC_TC001 parse pem cert
11SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_PEM:"../testdata/cert/pem/cert/ca.pem"20SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_PEM:"../testdata/cert/pem/cert/ca.pem"
12 21 
@@ -2248,6 +2257,9 @@ SDV_X509_CERT_PARSE_SUBJECTNAME_FUNC_TC003:"../testdata/cert/asn1/sm2_cert/sign3
2248SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001 parse ed25519 v3 ca cert2257SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001 parse ed25519 v3 ca cert
2249SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/ed25519/ed25519.ca.der":BSL_CID_ED25519:0:0:02258SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/ed25519/ed25519.ca.der":BSL_CID_ED25519:0:0:0
2250 2259 
2260+SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001 parse x25519 ee cert signed by ed25519
2261+SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/x25519/x25519.ee.der":BSL_CID_ED25519:0:0:0
2262+ 
2251SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001 parse ecc p384 v3 ca cert2263SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001 parse ecc p384 v3 ca cert
2252SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/asn1/nist384ca.crt":BSL_CID_ECDSAWITHSHA256:0:0:02264SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/asn1/nist384ca.crt":BSL_CID_ECDSAWITHSHA256:0:0:0
2253 2265 
@@ -3113,6 +3125,9 @@ SDV_X509_CERT_PARSE_PUBKEY_FUNC_TC001:"../testdata/cert/asn1/ecdsa_cert/ca_bp512
3113SDV_X509_CERT_CTRL_FUNC_TC001 parse ed25519 v3 ca cert3125SDV_X509_CERT_CTRL_FUNC_TC001 parse ed25519 v3 ca cert
3114SDV_X509_CERT_CTRL_FUNC_TC001:"../testdata/cert/ed25519/ed25519.ca.der":349:BSL_CID_ED25519:BSL_CID_SHA512:0:0:0:655353126SDV_X509_CERT_CTRL_FUNC_TC001:"../testdata/cert/ed25519/ed25519.ca.der":349:BSL_CID_ED25519:BSL_CID_SHA512:0:0:0:65535
3115 3127 
3128+SDV_X509_CERT_CTRL_FUNC_TC001 parse x25519 ee cert
3129+SDV_X509_CERT_CTRL_FUNC_TC001:"../testdata/cert/x25519/x25519.ee.der":360:BSL_CID_ED25519:BSL_CID_SHA512:0:0:1:8
3130+ 
3116SDV_X509_CERT_CTRL_FUNC_TC001 parse ecc p384 v3 ca cert3131SDV_X509_CERT_CTRL_FUNC_TC001 parse ecc p384 v3 ca cert
3117SDV_X509_CERT_CTRL_FUNC_TC001:"../testdata/cert/asn1/nist384ca.crt":648:BSL_CID_ECDSAWITHSHA256:BSL_CID_SHA256:0:0:0:655353132SDV_X509_CERT_CTRL_FUNC_TC001:"../testdata/cert/asn1/nist384ca.crt":648:BSL_CID_ECDSAWITHSHA256:BSL_CID_SHA256:0:0:0:65535
3118 3133 
@@ -80,6 +80,10 @@ static bool PkiSkipTest(int32_t algId, int32_t format)
80#ifdef HITLS_CRYPTO_ED2551980#ifdef HITLS_CRYPTO_ED25519
81 case CRYPT_PKEY_ED25519:81 case CRYPT_PKEY_ED25519:
82 return false;82 return false;
83+#endif
84+#ifdef HITLS_CRYPTO_X25519
85+ case CRYPT_PKEY_X25519:
86+ return false;
83#endif87#endif
84 default:88 default:
85 return true;89 return true;
@@ -13,6 +13,12 @@ SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_ED25519:CRYPT_PRIKEY_PKCS8_UNENCRYPT:0
13SDV_PKI_GEN_KEY_TC001: ed25519,pem,public key13SDV_PKI_GEN_KEY_TC001: ed25519,pem,public key
14SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_ED25519:CRYPT_PUBKEY_SUBKEY:014SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_ED25519:CRYPT_PUBKEY_SUBKEY:0
15 15 
16+SDV_PKI_GEN_KEY_TC001: x25519,pem,private key
17+SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_X25519:CRYPT_PRIKEY_PKCS8_UNENCRYPT:0
18+ 
19+SDV_PKI_GEN_KEY_TC001: x25519,pem,public key
20+SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_X25519:CRYPT_PUBKEY_SUBKEY:0
21+ 
16SDV_PKI_GEN_KEY_TC001: sm2,pem,private key22SDV_PKI_GEN_KEY_TC001: sm2,pem,private key
17SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_SM2:CRYPT_PRIKEY_PKCS8_UNENCRYPT:023SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_SM2:CRYPT_PRIKEY_PKCS8_UNENCRYPT:0
18 24 
@@ -40,6 +46,9 @@ SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_SM2:0:CRYPT_CIPHER_AES256_CBC:"1234567890"
40SDV_PKI_GEN_ENCKEY_TC001: ed25519, aes256-cbc46SDV_PKI_GEN_ENCKEY_TC001: ed25519, aes256-cbc
41SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_ED25519:0:CRYPT_CIPHER_AES256_CBC:"1234567890"47SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_ED25519:0:CRYPT_CIPHER_AES256_CBC:"1234567890"
42 48 
49+SDV_PKI_GEN_ENCKEY_TC001: x25519, aes256-cbc
50+SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_X25519:0:CRYPT_CIPHER_AES256_CBC:"1234567890"
51+ 
43SDV_PKI_PARSE_KEY_FILE_TC001: rsa,pem,public key52SDV_PKI_PARSE_KEY_FILE_TC001: rsa,pem,public key
44SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_RSA:BSL_FORMAT_PEM:CRYPT_PUBKEY_RSA:"../testdata/cert/asn1/rsa2048pub.pem"53SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_RSA:BSL_FORMAT_PEM:CRYPT_PUBKEY_RSA:"../testdata/cert/asn1/rsa2048pub.pem"
45 54 
@@ -58,6 +67,18 @@ SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_ED25519:BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKC
58SDV_PKI_PARSE_KEY_FILE_TC001: ed25519,pem,private key67SDV_PKI_PARSE_KEY_FILE_TC001: ed25519,pem,private key
59SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_ED25519:BSL_FORMAT_PEM:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"../testdata/cert/ed25519/ed25519.key.pem"68SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_ED25519:BSL_FORMAT_PEM:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"../testdata/cert/ed25519/ed25519.key.pem"
60 69 
70+SDV_PKI_PARSE_KEY_FILE_TC001: x25519,asn1,public key
71+SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_X25519:BSL_FORMAT_ASN1:CRYPT_PUBKEY_SUBKEY:"../testdata/cert/x25519/x25519.pub.der"
72+ 
73+SDV_PKI_PARSE_KEY_FILE_TC001: x25519,pem,public key
74+SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_X25519:BSL_FORMAT_PEM:CRYPT_PUBKEY_SUBKEY:"../testdata/cert/x25519/x25519.pub.pem"
75+ 
76+SDV_PKI_PARSE_KEY_FILE_TC001: x25519,asn1,private key
77+SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_X25519:BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"../testdata/cert/x25519/x25519.key.der"
78+ 
79+SDV_PKI_PARSE_KEY_FILE_TC001: x25519,pem,private key
80+SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_X25519:BSL_FORMAT_PEM:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"../testdata/cert/x25519/x25519.key.pem"
81+ 
61SDV_PKI_PARSE_KEY_FILE_TC001: sm2,asn1,public key82SDV_PKI_PARSE_KEY_FILE_TC001: sm2,asn1,public key
62SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_SM2:BSL_FORMAT_ASN1:CRYPT_PUBKEY_SUBKEY:"../testdata/cert/asn1/sm2_pkcs8/sm2pub_pkcs1.der"83SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_SM2:BSL_FORMAT_ASN1:CRYPT_PUBKEY_SUBKEY:"../testdata/cert/asn1/sm2_pkcs8/sm2pub_pkcs1.der"
63 84 
@@ -79,9 +100,15 @@ SDV_PKI_PARSE_ENCKEY_FILE_TC001:CRYPT_PKEY_RSA:BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS
79SDV_PKI_PARSE_ENCKEY_FILE_TC001: rsa2048, sm4 cbc100SDV_PKI_PARSE_ENCKEY_FILE_TC001: rsa2048, sm4 cbc
80SDV_PKI_PARSE_ENCKEY_FILE_TC001:CRYPT_PKEY_RSA:BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_ENCRYPT:"../testdata/cert/asn1/rsa2048key_pkcs8_sm4enc.der":"31323334"101SDV_PKI_PARSE_ENCKEY_FILE_TC001:CRYPT_PKEY_RSA:BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_ENCRYPT:"../testdata/cert/asn1/rsa2048key_pkcs8_sm4enc.der":"31323334"
81 102 
103+SDV_PKI_PARSE_ENCKEY_FILE_TC001: x25519, aes256 cbc
104+SDV_PKI_PARSE_ENCKEY_FILE_TC001:CRYPT_PKEY_X25519:BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_ENCRYPT:"../testdata/cert/x25519/x25519.key.enc.der":"31323334"
105+ 
82SDV_PKI_PARSE_KEY_BUFF_TC001106SDV_PKI_PARSE_KEY_BUFF_TC001
83SDV_PKI_PARSE_KEY_BUFF_TC001:CRYPT_PKEY_ECDSA:BSL_FORMAT_ASN1:CRYPT_PRIKEY_ECC:"30770201010420069DB63C9E8012972C7F71BCD0EF1F6E23EDC9F73EC68D49748C2159AF25933BA00A06082A8648CE3D030107A144034200043C528D0C6C84EC7112D613DDF265F2757E10BA71AF937EC848F3A15C94ADCF14EDF2C59D704B5581A5E102B371F43CFCA4A221A0672F8B2F3130BDF03C80AFF5"107SDV_PKI_PARSE_KEY_BUFF_TC001:CRYPT_PKEY_ECDSA:BSL_FORMAT_ASN1:CRYPT_PRIKEY_ECC:"30770201010420069DB63C9E8012972C7F71BCD0EF1F6E23EDC9F73EC68D49748C2159AF25933BA00A06082A8648CE3D030107A144034200043C528D0C6C84EC7112D613DDF265F2757E10BA71AF937EC848F3A15C94ADCF14EDF2C59D704B5581A5E102B371F43CFCA4A221A0672F8B2F3130BDF03C80AFF5"
84 108 
109+SDV_PKI_PARSE_KEY_BUFF_TC001 x25519 pubkey
110+SDV_PKI_PARSE_KEY_BUFF_TC001:CRYPT_PKEY_X25519:BSL_FORMAT_ASN1:CRYPT_PUBKEY_SUBKEY:"302A300506032B656E032100E91507FB6A477159E3E13920976673A2A081C346C9668CFA34EF2F757CEAB34E"
111+ 
85SDV_PKI_GEN_CRL_TC001: rsa crl112SDV_PKI_GEN_CRL_TC001: rsa crl
86SDV_PKI_GEN_CRL_TC001:CRYPT_PKEY_RSA:CRYPT_MD_SHA256:0113SDV_PKI_GEN_CRL_TC001:CRYPT_PKEY_RSA:CRYPT_MD_SHA256:0
87 114 
@@ -269,4 +296,4 @@ SDV_PKI_GEN_CSR_STUB_TC001: ed25519 csr
269SDV_PKI_GEN_CSR_STUB_TC001:CRYPT_PKEY_ED25519:CRYPT_MD_SHA512:0:3296SDV_PKI_GEN_CSR_STUB_TC001:CRYPT_PKEY_ED25519:CRYPT_MD_SHA512:0:3
270 297 
271SDV_PKI_GEN_CSR_STUB_TC001: ecc csr298SDV_PKI_GEN_CSR_STUB_TC001: ecc csr
272-SDV_PKI_GEN_CSR_STUB_TC001:CRYPT_PKEY_ECDSA:CRYPT_MD_SHA256:CRYPT_ECC_NISTP256:3299+SDV_PKI_GEN_CSR_STUB_TC001:CRYPT_PKEY_ECDSA:CRYPT_MD_SHA256:CRYPT_ECC_NISTP256:3
@@ -142,6 +142,9 @@ SDV_X509_CRL_PARSE_REVOKED_FUNC_TC003:"../testdata/cert/asn1/dsa_crl/crl_v2.mul3
142SDV_X509_CRL_PARSE_REVOKED_FUNC_TC003142SDV_X509_CRL_PARSE_REVOKED_FUNC_TC003
143SDV_X509_CRL_PARSE_REVOKED_FUNC_TC003:"../testdata/cert/asn1/dsa_crl/crl_v2.mul3.der":3:3:2:"04":2024:4:23:3:12:2143SDV_X509_CRL_PARSE_REVOKED_FUNC_TC003:"../testdata/cert/asn1/dsa_crl/crl_v2.mul3.der":3:3:2:"04":2024:4:23:3:12:2
144 144 
145+SDV_X509_CRL_PARSE_REVOKED_FUNC_TC003
146+SDV_X509_CRL_PARSE_REVOKED_FUNC_TC003:"../testdata/cert/x25519/x25519.crl.der":1:1:2:"1001":2025:1:1:0:0:0
147+ 
145SDV_X509_CRL_PARSE_SIGNALG_FUNC_TC001148SDV_X509_CRL_PARSE_SIGNALG_FUNC_TC001
146SDV_X509_CRL_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/asn1/dsa_crl/crl_v1.der":BSL_CID_DSAWITHSHA256:0:0:0149SDV_X509_CRL_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/asn1/dsa_crl/crl_v1.der":BSL_CID_DSAWITHSHA256:0:0:0
147 150 
@@ -259,6 +262,9 @@ SDV_X509_CRL_CTRL_ParamCheck_TC001:
259SDV_X509_CRL_PARSE_REVOKEDLIST_FUNC_TC001262SDV_X509_CRL_PARSE_REVOKEDLIST_FUNC_TC001
260SDV_X509_CRL_PARSE_REVOKEDLIST_FUNC_TC001:"../testdata/cert/pem/crl/crl_v2.mul3.crl":3263SDV_X509_CRL_PARSE_REVOKEDLIST_FUNC_TC001:"../testdata/cert/pem/crl/crl_v2.mul3.crl":3
261 264 
265+SDV_X509_CRL_PARSE_REVOKEDLIST_FUNC_TC001
266+SDV_X509_CRL_PARSE_REVOKEDLIST_FUNC_TC001:"../testdata/cert/x25519/x25519.crl.pem":1
267+ 
262SDV_X509_CRL_CTRL_RevokedParamCheck_TC001268SDV_X509_CRL_CTRL_RevokedParamCheck_TC001
263SDV_X509_CRL_CTRL_RevokedParamCheck_TC001:269SDV_X509_CRL_CTRL_RevokedParamCheck_TC001:
264 270 
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
@@ -0,0 +1,8 @@
1+-----BEGIN X509 CRL-----
2+MIHwMIGjAgEBMAUGAytlcDAiMQswCQYDVQQGEwJDTjETMBEGA1UEAwwKZWQyNTUx
3+OV9jYRcNMjYwMTEzMDczMjAzWhcNMjcwMTEzMDczMjAzWjAjMCECAhABFw0yNTAx
4+MDEwMDAwMDBaMAwwCgYDVR0VBAMKAQGgMDAuMB8GA1UdIwQYMBaAFI5cRSIpTtaL
5+QR3EyDQaq6LVoBR9MAsGA1UdFAQEAgIQADAFBgMrZXADQQAl5XT8kXvPtbf7I6wn
6+UdiovINaRBdNsVQJ9Nu6s01wHb5E2vUfQtYqjqC4tErLK3N3/AwmTB7iUC/PzqSY
7+NnoC
8+-----END X509 CRL-----
Binary files do not support preview
@@ -0,0 +1,10 @@
1+-----BEGIN CERTIFICATE-----
2+MIIBZDCCARagAwIBAgICEAEwBQYDK2VwMCIxCzAJBgNVBAYTAkNOMRMwEQYDVQQD
3+DAplZDI1NTE5X2NhMB4XDTI2MDExMzAzNTkzOFoXDTI3MDExMzAzNTkzOFowNTEL
4+MAkGA1UEBhMCQ04xEjAQBgNVBAoMCW9wZW5IaVRMUzESMBAGA1UEAwwJeDI1NTE5
5+LmVlMCowBQYDK2VuAyEA6RUH+2pHcVnj4Tkgl2ZzoqCBw0bJZoz6NO8vdXzqs06j
6+XTBbMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgMIMB0GA1UdDgQWBBTJjlWP0VOm
7+yklBiEHgfIt0/3LSbTAfBgNVHSMEGDAWgBSOXEUiKU7Wi0EdxMg0Gqui1aAUfTAF
8+BgMrZXADQQA6WOnLQ0i+1JP8k8BKjhX8lmq3o0I04BpJSFSNeFC9UyRMOwmlJnyY
9+DIClt3mqFEYuI29ygI9jX7KM1APfi04J
10+-----END CERTIFICATE-----
Binary files do not support preview
Binary files do not support preview
@@ -0,0 +1,3 @@
1+-----BEGIN PRIVATE KEY-----
2+MC4CAQAwBQYDK2VuBCIEIFi4ZX4VgTs27oHaLKGE8H2Maucd9egSaZhkSjOQg7N9
3+-----END PRIVATE KEY-----
Binary files do not support preview
@@ -0,0 +1,3 @@
1+-----BEGIN PUBLIC KEY-----
2+MCowBQYDK2VuAyEA6RUH+2pHcVnj4Tkgl2ZzoqCBw0bJZoz6NO8vdXzqs04=
3+-----END PUBLIC KEY-----