已合并
feat:Added support for x25519 cert #998
dsy678创建于 1月14日
feat:Added support for x25519 cert #998
已合并
共 28 个文件变更+342-74
| @@ -77,6 +77,13 @@ int32_t DECODER_Ed25519SubPubKeyWithOutSeqDer2KeyDecode(void *ctx, const BSL_Par | |||
| 77 | int32_t DECODER_Ed25519Pkcs8Der2KeyDecode(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 | 78 | #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_PEM | 87 | #ifdef HITLS_BSL_PEM |
| 81 | void *DECODER_Pem2DerNewCtx(void *provCtx); | 88 | void *DECODER_Pem2DerNewCtx(void *provCtx); |
| 82 | int32_t DECODER_Pem2DerGetParam(void *ctx, BSL_Param *param); | 89 | int32_t DECODER_Pem2DerGetParam(void *ctx, BSL_Param *param); |
| @@ -30,7 +30,7 @@ | |||
| 30 | #ifdef HITLS_CRYPTO_SM2 | 30 | #ifdef HITLS_CRYPTO_SM2 |
| 31 | #include "crypt_sm2.h" | 31 | #include "crypt_sm2.h" |
| 32 | #endif | 32 | #endif |
| 33 | -#ifdef HITLS_CRYPTO_ED25519 | 33 | +#if defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519) |
| 34 | #include "crypt_curve25519.h" | 34 | #include "crypt_curve25519.h" |
| 35 | #endif | 35 | #endif |
| 36 | #include "eal_pkey.h" | 36 | #include "eal_pkey.h" |
| @@ -44,7 +44,7 @@ | |||
| 44 | #define PKEY_MAX_PARAM_NUM 20 | 44 | #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) |
| 48 | typedef struct { | 48 | typedef 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 | |||
| 338 | DECODER_DEFINE_DER2KEY_NEW_CTX(Ed25519, CRYPT_PKEY_ED25519, g_defEalKeyMgmtEd25519, NULL, NULL, \ | 338 | DECODER_DEFINE_DER2KEY_NEW_CTX(Ed25519, CRYPT_PKEY_ED25519, g_defEalKeyMgmtEd25519, NULL, NULL, \ |
| 339 | g_defEalSignEd25519, NULL) | 339 | g_defEalSignEd25519, NULL) |
| 340 | #endif | 340 | #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_RSA | 346 | #ifdef HITLS_CRYPTO_RSA |
| 343 | DECODER_DEFINE_PRVKEY_DER2KEY_DECODE(Rsa, CRYPT_RSA_Ctx, CRYPT_RSA_ParsePrikeyAsn1Buff) | 347 | DECODER_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 | |||
| 367 | DECODER_DEFINE_PKCS8_DECODE(Ed25519, CRYPT_CURVE25519_Ctx, CRYPT_ED25519_ParsePkcs8Key) | 371 | DECODER_DEFINE_PKCS8_DECODE(Ed25519, CRYPT_CURVE25519_Ctx, CRYPT_ED25519_ParsePkcs8Key) |
| 368 | #endif | 372 | #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_SM2 | 23 | #ifdef HITLS_CRYPTO_SM2 |
| 24 | #include "crypt_sm2.h" | 24 | #include "crypt_sm2.h" |
| 25 | #endif | 25 | #endif |
| 26 | -#ifdef HITLS_CRYPTO_ED25519 | 26 | +#if defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519) |
| 27 | #include "crypt_curve25519.h" | 27 | #include "crypt_curve25519.h" |
| 28 | #endif | 28 | #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_SM2 | 359 | #endif // HITLS_CRYPTO_SM2 |
| 360 | 360 | ||
| 361 | -#ifdef HITLS_CRYPTO_ED25519 | 361 | +#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_ED25519 | 463 | #endif // HITLS_CRYPTO_ED25519 |
| 445 | -#endif // HITLS_CRYPTO_KEY_DECODE | 464 | + |
| 465 | +#ifdef HITLS_CRYPTO_X25519 | ||
O | |||
| 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_SM2 | 373 | #endif // HITLS_CRYPTO_ECDSA || HITLS_CRYPTO_SM2 |
| 374 | 374 | ||
| 375 | -#ifdef HITLS_CRYPTO_ED25519 | 375 | +#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_ED25519 | 422 | +#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 | ||
| 442 | static int32_t ParsePk8PrikeyAsn1(CRYPT_ENCODE_DECODE_Pk8PrikeyInfo *pk8PrikeyInfo, CRYPT_EAL_PkeyCtx **ealPriKey) | 424 | static 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 | #endif | 437 | #endif |
| 456 | #ifdef HITLS_CRYPTO_ED25519 | 438 | #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 | #endif | 449 | #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_ED25519 | 483 | #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 | #endif | 488 | #endif |
| 501 | #ifdef HITLS_CRYPTO_X25519 | 489 | #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 | #endif | 494 | #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_SM2 | 874 | #endif // HITLS_CRYPTO_ECDSA || HITLS_CRYPTO_SM2 |
| 887 | 875 | ||
| 888 | -#ifdef HITLS_CRYPTO_ED25519 | 876 | +#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 32 | 903 | + 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_ED25519 | 915 | +#endif // HITLS_CRYPTO_ED25519 || HITLS_CRYPTO_X25519 |
| 928 | 916 | ||
| 929 | static int32_t EncodePk8AlgidAny(CRYPT_EAL_PkeyCtx *ealPriKey, BSL_Buffer *bitStr, | 917 | static 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 | #endif | 936 | #endif |
| 949 | #ifdef HITLS_CRYPTO_ED25519 | 937 | #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 | #endif | 946 | #endif |
| 954 | default: | 947 | default: |
| @@ -1069,7 +1062,12 @@ static int32_t CRYPT_EAL_SubPubkeyGetInfo(CRYPT_EAL_PkeyCtx *ealPubKey, BSL_ASN1 | |||
| 1069 | #endif | 1062 | #endif |
| 1070 | #ifdef HITLS_CRYPTO_ED25519 | 1063 | #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 | #endif | 1072 | #endif |
| 1075 | if (ret != CRYPT_SUCCESS) { | 1073 | if (ret != CRYPT_SUCCESS) { |
| @@ -30,7 +30,7 @@ | |||
| 30 | #ifdef HITLS_CRYPTO_SM2 | 30 | #ifdef HITLS_CRYPTO_SM2 |
| 31 | #include "crypt_sm2.h" | 31 | #include "crypt_sm2.h" |
| 32 | #endif | 32 | #endif |
| 33 | -#ifdef HITLS_CRYPTO_ED25519 | 33 | +#if defined(HITLS_CRYPTO_ED25519) || defined(HITLS_CRYPTO_X25519) |
| 34 | #include "crypt_curve25519.h" | 34 | #include "crypt_curve25519.h" |
| 35 | #endif | 35 | #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 | #endif | 174 | #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 | #endif | 183 | #endif |
| 177 | 184 | ||
| 178 | #ifdef HITLS_CRYPTO_KEY_ENCODE | 185 | #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 empty | 456 | *(uint8_t *)expVal = BSL_ASN1_TAG_EMPTY; // is empty |
| 457 | } else { | 457 | } else { |
| 458 | *(uint8_t *)expVal = BSL_ASN1_TAG_NULL; // is null | 458 | *(uint8_t *)expVal = BSL_ASN1_TAG_NULL; // is null |
| @@ -113,14 +113,17 @@ extern const CRYPT_EAL_Func g_defEalP8Der2RsaKey[]; | |||
| 113 | extern const CRYPT_EAL_Func g_defEalP8Der2EcdsaKey[]; | 113 | extern const CRYPT_EAL_Func g_defEalP8Der2EcdsaKey[]; |
| 114 | extern const CRYPT_EAL_Func g_defEalP8Der2Sm2Key[]; | 114 | extern const CRYPT_EAL_Func g_defEalP8Der2Sm2Key[]; |
| 115 | extern const CRYPT_EAL_Func g_defEalP8Der2Ed25519Key[]; | 115 | extern const CRYPT_EAL_Func g_defEalP8Der2Ed25519Key[]; |
| 116 | +extern const CRYPT_EAL_Func g_defEalP8Der2X25519Key[]; | ||
| 116 | extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2RsaKey[]; | 117 | extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2RsaKey[]; |
| 117 | extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2EcdsaKey[]; | 118 | extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2EcdsaKey[]; |
| 118 | extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2Sm2Key[]; | 119 | extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2Sm2Key[]; |
| 119 | extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2Ed25519Key[]; | 120 | extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2Ed25519Key[]; |
| 121 | +extern const CRYPT_EAL_Func g_defEalSubPubKeyDer2X25519Key[]; | ||
| 120 | extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2RsaKey[]; | 122 | extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2RsaKey[]; |
| 121 | extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2EcdsaKey[]; | 123 | extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2EcdsaKey[]; |
| 122 | extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Sm2Key[]; | 124 | extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Sm2Key[]; |
| 123 | extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Ed25519Key[]; | 125 | extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Ed25519Key[]; |
| 126 | +extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2X25519Key[]; | ||
| 124 | extern const CRYPT_EAL_Func g_defEalLowKeyObject2PkeyObject[]; | 127 | extern const CRYPT_EAL_Func g_defEalLowKeyObject2PkeyObject[]; |
| 125 | extern const CRYPT_EAL_Func g_defEalRsaPubDer2Key[]; | 128 | extern const CRYPT_EAL_Func g_defEalRsaPubDer2Key[]; |
| 126 | #ifdef __cplusplus | 129 | #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 | + | ||
| 121 | const CRYPT_EAL_Func g_defEalSubPubKeyDer2RsaKey[] = { | 131 | const 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 | + | ||
| 160 | const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2RsaKey[] = { | 180 | const 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 | + | ||
| 200 | const CRYPT_EAL_Func g_defEalLowKeyObject2PkeyObject[] = { | 230 | const 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_END | 253 | 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 linux | 369 | 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_encode | 370 | 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 linux | 372 | 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_encode | 373 | 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 linux | 376 | 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 linux | 377 | 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 linux | 379 | 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 linux | 380 | 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) | ||
| 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 */ |
| 561 | void SDV_BSL_ASN1_PARSE_ENCPK8_TC001(int isProvider, char *path, int fileType, char *fileTypeStr, Hex *pass, | 625 | void 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 | |||
| 145 | SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001 parse sm2 pkcs8 prikey file and sign data | 145 | SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001 parse sm2 pkcs8 prikey file and sign data |
| 146 | SDV_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:"" | 146 | SDV_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 file | 148 | +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 file | 151 | +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 empty | 154 | +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_EXPECTED | 155 | +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 error | 157 | +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_ERROR | 158 | +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 tag | 160 | +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_TAG | 161 | +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 | ||
| 163 | SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse prime192v1 pkcs8 encrypted prikey file and sign data, prf hmac256, aes256 cbc | 187 | SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse prime192v1 pkcs8 encrypted prikey file and sign data, prf hmac256, aes256 cbc |
| 164 | SDV_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":"" | 188 | SDV_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 | |||
| 193 | SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ed25519 pkcs8 | 217 | SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ed25519 pkcs8 |
| 194 | SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/ed25519/ed25519.pub.der":CRYPT_PUBKEY_SUBKEY:1:"302A300506032B65700321004769E3FB89D4CC7EA744348AD72582146029CDFE60394497802BD7A575FF98AF" | 218 | SDV_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 | + | ||
| 196 | SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 rsa pkcs8 | 223 | SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 rsa pkcs8 |
| 197 | SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/publicpkcs8.pem":CRYPT_PUBKEY_SUBKEY:1:"30820122300D06092A864886F70D01010105000382010F003082010A0282010100A54E1B3861B07E97D99F1746CB0FD4B626E69B8D2C6332492DE37429EDE5C8910211DD2031E67C7404FA58D97E3DF21468AF6A92FA60A86A042058D47A19FDEA653CE2133EBFA0F6BF2EF2DF20DFBDD0DED3CF79DE8E1CC1A748AF9F7D435A4A08B0579D1A2FDCB7F0E4A4770FB6860D22A8B03709EF80811592A792EA7D58185725D78787F05F83210B42B012B6557EBDB8FE46C6F3F5A78B26840CD951D89681180CC817307EB673EDD3E699508456C834112E7E9F121376E5F5060635A9660F50DD938CCD643A61D3CFCD3E1D4C1D751576F029E88A522237D25A7376AB1B8133B75CAED8389339613FD39387170137C589A2C5BBAFB5B9AB0C48804D2E210203010001" | 224 | SDV_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 | |||
| 241 | SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001: ed25519 | 268 | SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001: ed25519 |
| 242 | SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001:"../testdata/cert/ed25519/ed25519.key.der":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"302E020100300506032B657004220420CBC4E3B0B901B75865A96C42F1C979C3065BD23AEB4C4B1A74C06BC85FAFC4CF" | 269 | SDV_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 | + | ||
| 244 | SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001 ecc pkcs8 | 274 | SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001 ecc pkcs8 |
| 245 | SDV_BSL_ASN1_ENCODE_PRIKEY_BUFF_TC001:"../testdata/cert/asn1/secp384r1_pkcs8.pem":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"3081B6020100301006072A8648CE3D020106052B8104002204819E30819B020101043011F1AD7FD68D2BDC0FE972B521D6416B1C2D0D6EA82875B1AE97B05BE297D9E7990DB33F08882FDEE4A285C1D87472C8A16403620004AEBF47BD84A597CB41F09E1F28E13813993476C2840084DAB242737516D1231B5DB3CD30DF7159E04ABE5A6BED2F36016C2FDABB9A6F28EA558CCDD4B8E8AACA9E8ACA0F55C04DAD4F0F1028E4D4B0185E55C37CB25FCDFADA182F0355B4AAAD" | 275 | SDV_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 | |||
| 7 | SDV_X509_CERT_PARSE_FUNC_TC001 parse ed25519 cert unknown | 7 | SDV_X509_CERT_PARSE_FUNC_TC001 parse ed25519 cert unknown |
| 8 | SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_UNKNOWN:"../testdata/cert/ed25519/ed25519.ca.pem" | 8 | SDV_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 | + | ||
| 10 | SDV_X509_CERT_PARSE_FUNC_TC001 parse pem cert | 19 | SDV_X509_CERT_PARSE_FUNC_TC001 parse pem cert |
| 11 | SDV_X509_CERT_PARSE_FUNC_TC001:BSL_FORMAT_PEM:"../testdata/cert/pem/cert/ca.pem" | 20 | SDV_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 | |||
| 2248 | SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001 parse ed25519 v3 ca cert | 2257 | SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001 parse ed25519 v3 ca cert |
| 2249 | SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/ed25519/ed25519.ca.der":BSL_CID_ED25519:0:0:0 | 2258 | SDV_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 | + | ||
| 2251 | SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001 parse ecc p384 v3 ca cert | 2263 | SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001 parse ecc p384 v3 ca cert |
| 2252 | SDV_X509_CERT_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/asn1/nist384ca.crt":BSL_CID_ECDSAWITHSHA256:0:0:0 | 2264 | SDV_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 | |||
| 3113 | SDV_X509_CERT_CTRL_FUNC_TC001 parse ed25519 v3 ca cert | 3125 | SDV_X509_CERT_CTRL_FUNC_TC001 parse ed25519 v3 ca cert |
| 3114 | SDV_X509_CERT_CTRL_FUNC_TC001:"../testdata/cert/ed25519/ed25519.ca.der":349:BSL_CID_ED25519:BSL_CID_SHA512:0:0:0:65535 | 3126 | SDV_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 | + | ||
| 3116 | SDV_X509_CERT_CTRL_FUNC_TC001 parse ecc p384 v3 ca cert | 3131 | SDV_X509_CERT_CTRL_FUNC_TC001 parse ecc p384 v3 ca cert |
| 3117 | SDV_X509_CERT_CTRL_FUNC_TC001:"../testdata/cert/asn1/nist384ca.crt":648:BSL_CID_ECDSAWITHSHA256:BSL_CID_SHA256:0:0:0:65535 | 3132 | SDV_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_ED25519 | 80 | #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 | #endif | 87 | #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 | |||
| 13 | SDV_PKI_GEN_KEY_TC001: ed25519,pem,public key | 13 | SDV_PKI_GEN_KEY_TC001: ed25519,pem,public key |
| 14 | SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_ED25519:CRYPT_PUBKEY_SUBKEY:0 | 14 | SDV_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 | + | ||
| 16 | SDV_PKI_GEN_KEY_TC001: sm2,pem,private key | 22 | SDV_PKI_GEN_KEY_TC001: sm2,pem,private key |
| 17 | SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_SM2:CRYPT_PRIKEY_PKCS8_UNENCRYPT:0 | 23 | SDV_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" | |||
| 40 | SDV_PKI_GEN_ENCKEY_TC001: ed25519, aes256-cbc | 46 | SDV_PKI_GEN_ENCKEY_TC001: ed25519, aes256-cbc |
| 41 | SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_ED25519:0:CRYPT_CIPHER_AES256_CBC:"1234567890" | 47 | SDV_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 | + | ||
| 43 | SDV_PKI_PARSE_KEY_FILE_TC001: rsa,pem,public key | 52 | SDV_PKI_PARSE_KEY_FILE_TC001: rsa,pem,public key |
| 44 | SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_RSA:BSL_FORMAT_PEM:CRYPT_PUBKEY_RSA:"../testdata/cert/asn1/rsa2048pub.pem" | 53 | SDV_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 | |||
| 58 | SDV_PKI_PARSE_KEY_FILE_TC001: ed25519,pem,private key | 67 | SDV_PKI_PARSE_KEY_FILE_TC001: ed25519,pem,private key |
| 59 | SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_ED25519:BSL_FORMAT_PEM:CRYPT_PRIKEY_PKCS8_UNENCRYPT:"../testdata/cert/ed25519/ed25519.key.pem" | 68 | SDV_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 | + | ||
| 61 | SDV_PKI_PARSE_KEY_FILE_TC001: sm2,asn1,public key | 82 | SDV_PKI_PARSE_KEY_FILE_TC001: sm2,asn1,public key |
| 62 | SDV_PKI_PARSE_KEY_FILE_TC001:CRYPT_PKEY_SM2:BSL_FORMAT_ASN1:CRYPT_PUBKEY_SUBKEY:"../testdata/cert/asn1/sm2_pkcs8/sm2pub_pkcs1.der" | 83 | SDV_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 | |||
| 79 | SDV_PKI_PARSE_ENCKEY_FILE_TC001: rsa2048, sm4 cbc | 100 | SDV_PKI_PARSE_ENCKEY_FILE_TC001: rsa2048, sm4 cbc |
| 80 | SDV_PKI_PARSE_ENCKEY_FILE_TC001:CRYPT_PKEY_RSA:BSL_FORMAT_ASN1:CRYPT_PRIKEY_PKCS8_ENCRYPT:"../testdata/cert/asn1/rsa2048key_pkcs8_sm4enc.der":"31323334" | 101 | SDV_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 | + | ||
| 82 | SDV_PKI_PARSE_KEY_BUFF_TC001 | 106 | SDV_PKI_PARSE_KEY_BUFF_TC001 |
| 83 | SDV_PKI_PARSE_KEY_BUFF_TC001:CRYPT_PKEY_ECDSA:BSL_FORMAT_ASN1:CRYPT_PRIKEY_ECC:"30770201010420069DB63C9E8012972C7F71BCD0EF1F6E23EDC9F73EC68D49748C2159AF25933BA00A06082A8648CE3D030107A144034200043C528D0C6C84EC7112D613DDF265F2757E10BA71AF937EC848F3A15C94ADCF14EDF2C59D704B5581A5E102B371F43CFCA4A221A0672F8B2F3130BDF03C80AFF5" | 107 | SDV_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 | + | ||
| 85 | SDV_PKI_GEN_CRL_TC001: rsa crl | 112 | SDV_PKI_GEN_CRL_TC001: rsa crl |
| 86 | SDV_PKI_GEN_CRL_TC001:CRYPT_PKEY_RSA:CRYPT_MD_SHA256:0 | 113 | SDV_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 | |||
| 269 | SDV_PKI_GEN_CSR_STUB_TC001:CRYPT_PKEY_ED25519:CRYPT_MD_SHA512:0:3 | 296 | SDV_PKI_GEN_CSR_STUB_TC001:CRYPT_PKEY_ED25519:CRYPT_MD_SHA512:0:3 |
| 270 | 297 | ||
| 271 | SDV_PKI_GEN_CSR_STUB_TC001: ecc csr | 298 | SDV_PKI_GEN_CSR_STUB_TC001: ecc csr |
| 272 | -SDV_PKI_GEN_CSR_STUB_TC001:CRYPT_PKEY_ECDSA:CRYPT_MD_SHA256:CRYPT_ECC_NISTP256:3 | 299 | +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 | |||
| 142 | SDV_X509_CRL_PARSE_REVOKED_FUNC_TC003 | 142 | SDV_X509_CRL_PARSE_REVOKED_FUNC_TC003 |
| 143 | SDV_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 | 143 | SDV_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 | + | ||
| 145 | SDV_X509_CRL_PARSE_SIGNALG_FUNC_TC001 | 148 | SDV_X509_CRL_PARSE_SIGNALG_FUNC_TC001 |
| 146 | SDV_X509_CRL_PARSE_SIGNALG_FUNC_TC001:"../testdata/cert/asn1/dsa_crl/crl_v1.der":BSL_CID_DSAWITHSHA256:0:0:0 | 149 | SDV_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: | |||
| 259 | SDV_X509_CRL_PARSE_REVOKEDLIST_FUNC_TC001 | 262 | SDV_X509_CRL_PARSE_REVOKEDLIST_FUNC_TC001 |
| 260 | SDV_X509_CRL_PARSE_REVOKEDLIST_FUNC_TC001:"../testdata/cert/pem/crl/crl_v2.mul3.crl":3 | 263 | SDV_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 | + | ||
| 262 | SDV_X509_CRL_CTRL_RevokedParamCheck_TC001 | 268 | SDV_X509_CRL_CTRL_RevokedParamCheck_TC001 |
| 263 | SDV_X509_CRL_CTRL_RevokedParamCheck_TC001: | 269 | SDV_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----- | ||


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