Merged
Erase sensitive information in cal #804
jchxAdd on Nov 17, 2025
Erase sensitive information in cal #804
Merged
Merged fromjchx/openhitlssyncintoopenHiTLS/openhitlsopenhitls-0.2
Total: 10 files changed+161-5
| @@ -164,7 +164,9 @@ int32_t ForsNode(uint32_t idx, uint32_t height, SlhDsaAdrs *adrs, const CryptSlh | |||
| 164 | } | 164 | } |
| 165 | ctx->adrsOps.setTreeHeight(adrs, height); | 165 | ctx->adrsOps.setTreeHeight(adrs, height); |
| 166 | ctx->adrsOps.setTreeIndex(adrs, idx); | 166 | ctx->adrsOps.setTreeIndex(adrs, idx); |
| 167 | - return ctx->hashFuncs.f(ctx, adrs, sk, n, node); | 167 | + ret = ctx->hashFuncs.f(ctx, adrs, sk, n, node); |
| 168 | + (void)BSL_SAL_CleanseData(sk, SLH_DSA_MAX_N); | ||
| 169 | + return ret; | ||
| 168 | } | 170 | } |
| 169 | 171 | ||
| 170 | uint8_t dnode[SLH_DSA_MAX_N * 2]; | 172 | uint8_t dnode[SLH_DSA_MAX_N * 2]; |
| @@ -32,7 +32,6 @@ static int32_t MsgToBaseW(const CryptSlhDsaCtx *ctx, const uint8_t *msg, uint32_ | |||
| 32 | 32 | ||
| 33 | BaseB(msg, msgLen, SLH_DSA_LGW, out, len1); | 33 | BaseB(msg, msgLen, SLH_DSA_LGW, out, len1); |
| 34 | 34 | ||
| 35 | - // todo: check if csum overflow | ||
| 36 | uint64_t csum = 0; | 35 | uint64_t csum = 0; |
| 37 | for (uint32_t i = 0; i < len1; i++) { | 36 | for (uint32_t i = 0; i < len1; i++) { |
| 38 | csum += SLH_DSA_W - 1 - out[i]; | 37 | csum += SLH_DSA_W - 1 - out[i]; |
| @@ -140,6 +139,7 @@ int32_t WotsSign(uint8_t *sig, uint32_t *sigLen, const uint8_t *msg, uint32_t ms | |||
| 140 | } | 139 | } |
| 141 | ctx->adrsOps.setChainAddr(adrs, i); | 140 | ctx->adrsOps.setChainAddr(adrs, i); |
| 142 | ret = WotsChain(sk, n, 0, msgw[i], ctx->prvKey.pub.seed, adrs, ctx, sig + i * n); | 141 | ret = WotsChain(sk, n, 0, msgw[i], ctx->prvKey.pub.seed, adrs, ctx, sig + i * n); |
| 142 | + BSL_SAL_CleanseData(sk, SLH_DSA_MAX_N); | ||
| 143 | if (ret != 0) { | 143 | if (ret != 0) { |
| 144 | goto ERR; | 144 | goto ERR; |
| 145 | } | 145 | } |
| @@ -542,16 +542,29 @@ EXIT: | |||
| 542 | * 4. Call the CRYPT_EAL_PkeyDupCtx method to dup ed25519 context, expected result 2. | 542 | * 4. Call the CRYPT_EAL_PkeyDupCtx method to dup ed25519 context, expected result 2. |
| 543 | * 5. Call the CRYPT_EAL_PkeyGetPub method to obtain the public key from the contexts, expected result 2. | 543 | * 5. Call the CRYPT_EAL_PkeyGetPub method to obtain the public key from the contexts, expected result 2. |
| 544 | * 6. Compare public keys, expected result 3. | 544 | * 6. Compare public keys, expected result 3. |
| 545 | + * 7. Call the CRYPT_EAL_PkeyComputeShareKey method to compute the shared key from the dupCtx and ctx, | ||
| 546 | + * expected result 7. | ||
| 545 | * @expect | 547 | * @expect |
| 546 | * 1. Success, and context is not NULL. | 548 | * 1. Success, and context is not NULL. |
| 547 | * 2. CRYPT_SUCCESS | 549 | * 2. CRYPT_SUCCESS |
| 548 | * 3. The two public keys are the same. | 550 | * 3. The two public keys are the same. |
| 551 | + * 4. CRYPT_SUCCESS | ||
| 552 | + * 5. CRYPT_SUCCESS | ||
| 553 | + * 6. The two public keys are the same. | ||
| 554 | + * 7. The two shared keys are the same. | ||
| 549 | */ | 555 | */ |
| 550 | /* BEGIN_CASE */ | 556 | /* BEGIN_CASE */ |
| 551 | void SDV_CRYPTO_CURVE25519_DUP_CTX_API_TC001(int id) | 557 | void SDV_CRYPTO_CURVE25519_DUP_CTX_API_TC001(int id) |
| 552 | { | 558 | { |
| 553 | uint8_t key1[CRYPT_CURVE25519_KEYLEN] = {0}; | 559 | uint8_t key1[CRYPT_CURVE25519_KEYLEN] = {0}; |
| 554 | uint8_t key2[CRYPT_CURVE25519_KEYLEN] = {0}; | 560 | uint8_t key2[CRYPT_CURVE25519_KEYLEN] = {0}; |
| 561 | + uint8_t data[CRYPT_CURVE25519_KEYLEN] = {0}; | ||
| 562 | + uint8_t sign[CRYPT_CURVE25519_SIGNLEN] = {0}; | ||
| 563 | + uint32_t signLen = sizeof(sign); | ||
| 564 | + uint8_t sharedKey1[CRYPT_CURVE25519_KEYLEN] = {0}; | ||
| 565 | + uint32_t sharedLen1 = sizeof(sharedKey1); | ||
| 566 | + uint8_t sharedKey2[CRYPT_CURVE25519_KEYLEN] = {0}; | ||
| 567 | + uint32_t sharedLen2 = sizeof(sharedKey2); | ||
| 555 | CRYPT_EAL_PkeyPub pub = {0}; | 568 | CRYPT_EAL_PkeyPub pub = {0}; |
| 556 | Set_Curve25519_Pub(&pub, id, key1, CRYPT_CURVE25519_KEYLEN); | 569 | Set_Curve25519_Pub(&pub, id, key1, CRYPT_CURVE25519_KEYLEN); |
| 557 | 570 | ||
| @@ -572,6 +585,17 @@ void SDV_CRYPTO_CURVE25519_DUP_CTX_API_TC001(int id) | |||
| 572 | 585 | ||
| 573 | ASSERT_COMPARE("curve25519 copy ctx", key1, CRYPT_CURVE25519_KEYLEN, key2, CRYPT_CURVE25519_KEYLEN); | 586 | ASSERT_COMPARE("curve25519 copy ctx", key1, CRYPT_CURVE25519_KEYLEN, key2, CRYPT_CURVE25519_KEYLEN); |
| 574 | 587 | ||
| 588 | + if (id == CRYPT_PKEY_ED25519) { | ||
| 589 | + ASSERT_EQ(CRYPT_EAL_PkeySign(newPkey, CRYPT_MD_SHA512, data, sizeof(data), sign, &signLen), CRYPT_SUCCESS); | ||
| 590 | + ASSERT_EQ(CRYPT_EAL_PkeyVerify(newPkey, CRYPT_MD_SHA512, data, sizeof(data), sign, signLen), CRYPT_SUCCESS); | ||
| 591 | + } else if (id == CRYPT_PKEY_X25519) { | ||
| 592 | + ASSERT_EQ(CRYPT_EAL_PkeyComputeShareKey(newPkey, pkey, sharedKey1, &sharedLen1), | ||
| 593 | + CRYPT_SUCCESS); | ||
| 594 | + ASSERT_EQ(CRYPT_EAL_PkeyComputeShareKey(pkey, newPkey, sharedKey2, &sharedLen2), | ||
| 595 | + CRYPT_SUCCESS); | ||
| 596 | + ASSERT_COMPARE("shared key", sharedKey1, CRYPT_CURVE25519_KEYLEN, sharedKey2, CRYPT_CURVE25519_KEYLEN); | ||
| 597 | + } | ||
| 598 | + | ||
| 575 | EXIT: | 599 | EXIT: |
| 576 | TestRandDeInit(); | 600 | TestRandDeInit(); |
| 577 | CRYPT_EAL_PkeyFreeCtx(pkey); | 601 | CRYPT_EAL_PkeyFreeCtx(pkey); |
| @@ -1464,6 +1464,8 @@ EXIT: | |||
| 1464 | * 7. Call the CRYPT_EAL_PkeyGetPub method to obtain the public key from the contexts, expected result 7. | 1464 | * 7. Call the CRYPT_EAL_PkeyGetPub method to obtain the public key from the contexts, expected result 7. |
| 1465 | * 8. Compare public keys, expected result 8. | 1465 | * 8. Compare public keys, expected result 8. |
| 1466 | * 9. Get para id from dupCtx, expected result 9. | 1466 | * 9. Get para id from dupCtx, expected result 9. |
| 1467 | + * 10. Call the CRYPT_EAL_PkeyComputeShareKey method to compute the shared key from the dupCtx and ctx, | ||
| 1468 | + * expected result 10. | ||
| 1467 | * @expect | 1469 | * @expect |
| 1468 | * 1. Success, and context is not NULL. | 1470 | * 1. Success, and context is not NULL. |
| 1469 | * 2-5. CRYPT_SUCCESS | 1471 | * 2-5. CRYPT_SUCCESS |
| @@ -1471,6 +1473,7 @@ EXIT: | |||
| 1471 | * 7. CRYPT_SUCCESS | 1473 | * 7. CRYPT_SUCCESS |
| 1472 | * 8. The two public keys are the same. | 1474 | * 8. The two public keys are the same. |
| 1473 | * 9. Para id is CRYPT_DH_RFC7919_8192. | 1475 | * 9. Para id is CRYPT_DH_RFC7919_8192. |
| 1476 | + * 10. The two shared keys are the same. | ||
| 1474 | */ | 1477 | */ |
| 1475 | /* BEGIN_CASE */ | 1478 | /* BEGIN_CASE */ |
| 1476 | void SDV_CRYPTO_DH_DUP_CTX_FUNC_TC001(int isProvider) | 1479 | void SDV_CRYPTO_DH_DUP_CTX_FUNC_TC001(int isProvider) |
| @@ -1483,6 +1486,10 @@ void SDV_CRYPTO_DH_DUP_CTX_FUNC_TC001(int isProvider) | |||
| 1483 | CRYPT_EAL_PkeyPub pub = {0}; | 1486 | CRYPT_EAL_PkeyPub pub = {0}; |
| 1484 | CRYPT_EAL_PkeyCtx *ctx = NULL; | 1487 | CRYPT_EAL_PkeyCtx *ctx = NULL; |
| 1485 | CRYPT_EAL_PkeyCtx *dupCtx = NULL; | 1488 | CRYPT_EAL_PkeyCtx *dupCtx = NULL; |
| 1489 | + uint8_t share1[1030]; | ||
| 1490 | + uint8_t share2[1030]; | ||
| 1491 | + uint32_t share1Len = sizeof(share1); | ||
| 1492 | + uint32_t share2Len = sizeof(share2); | ||
| 1486 | 1493 | ||
| 1487 | TestMemInit(); | 1494 | TestMemInit(); |
| 1488 | 1495 | ||
| @@ -1516,6 +1523,11 @@ void SDV_CRYPTO_DH_DUP_CTX_FUNC_TC001(int isProvider) | |||
| 1516 | 1523 | ||
| 1517 | ASSERT_TRUE(CRYPT_EAL_PkeyGetParaId(dupCtx) == paraId); | 1524 | ASSERT_TRUE(CRYPT_EAL_PkeyGetParaId(dupCtx) == paraId); |
| 1518 | 1525 | ||
| 1526 | + ASSERT_TRUE(CRYPT_EAL_PkeyComputeShareKey(ctx, dupCtx, share1, &share1Len) == CRYPT_SUCCESS); | ||
| 1527 | + ASSERT_TRUE(CRYPT_EAL_PkeyComputeShareKey(dupCtx, ctx, share2, &share2Len) == CRYPT_SUCCESS); | ||
| 1528 | + ASSERT_TRUE(share1Len == share2Len); | ||
| 1529 | + ASSERT_TRUE(memcmp(share1, share2, share1Len) == 0); | ||
| 1530 | + | ||
| 1519 | EXIT: | 1531 | EXIT: |
| 1520 | TestRandDeInit(); | 1532 | TestRandDeInit(); |
| 1521 | CRYPT_EAL_PkeyFreeCtx(ctx); | 1533 | CRYPT_EAL_PkeyFreeCtx(ctx); |
| @@ -613,6 +613,7 @@ EXIT: | |||
| 613 | * 8. Compare public keys, expected result 8. | 613 | * 8. Compare public keys, expected result 8. |
| 614 | * 9. Call the CRYPT_EAL_PkeyGetPrv method to obtain the private key from the contexts, expected result 9. | 614 | * 9. Call the CRYPT_EAL_PkeyGetPrv method to obtain the private key from the contexts, expected result 9. |
| 615 | * 10. Compare privates keys, expected result 10. | 615 | * 10. Compare privates keys, expected result 10. |
| 616 | + * 11. Call the sign/verify method to sign the message with the dupkey, expected result 11. | ||
| 616 | * @expect | 617 | * @expect |
| 617 | * 1. Success, and context is not NULL. | 618 | * 1. Success, and context is not NULL. |
| 618 | * 2-3. CRYPT_SUCCESS | 619 | * 2-3. CRYPT_SUCCESS |
| @@ -623,6 +624,7 @@ EXIT: | |||
| 623 | * 8. The two public keys are the same. | 624 | * 8. The two public keys are the same. |
| 624 | * 9. CRYPT_SUCCESS | 625 | * 9. CRYPT_SUCCESS |
| 625 | * 10. The two private keys are the same. | 626 | * 10. The two private keys are the same. |
| 627 | + * 11. CRYPT_SUCCESS | ||
| 626 | */ | 628 | */ |
| 627 | /* BEGIN_CASE */ | 629 | /* BEGIN_CASE */ |
| 628 | void SDV_CRYPTO_DSA_DUP_CTX_FUNC_TC001(Hex *p, Hex *q, Hex *g, int isProvider) | 630 | void SDV_CRYPTO_DSA_DUP_CTX_FUNC_TC001(Hex *p, Hex *q, Hex *g, int isProvider) |
| @@ -635,7 +637,10 @@ void SDV_CRYPTO_DSA_DUP_CTX_FUNC_TC001(Hex *p, Hex *q, Hex *g, int isProvider) | |||
| 635 | CRYPT_EAL_PkeyPrv prv1, prv2; | 637 | CRYPT_EAL_PkeyPrv prv1, prv2; |
| 636 | CRYPT_EAL_PkeyCtx *ctx = NULL; | 638 | CRYPT_EAL_PkeyCtx *ctx = NULL; |
| 637 | CRYPT_EAL_PkeyCtx *dupCtx = NULL; | 639 | CRYPT_EAL_PkeyCtx *dupCtx = NULL; |
| 638 | - | 640 | + uint8_t *sign = NULL; |
| 641 | + uint32_t signLen; | ||
| 642 | + char *msg = "Hello, openHiTLS"; | ||
| 643 | + uint32_t msgLen = strlen(msg); | ||
| 639 | Set_DSA_Para(¶, NULL, NULL, p, q, g, NULL, NULL); | 644 | Set_DSA_Para(¶, NULL, NULL, p, q, g, NULL, NULL); |
| 640 | 645 | ||
| 641 | TestMemInit(); | 646 | TestMemInit(); |
| @@ -670,13 +675,20 @@ void SDV_CRYPTO_DSA_DUP_CTX_FUNC_TC001(Hex *p, Hex *q, Hex *g, int isProvider) | |||
| 670 | ASSERT_EQ(CRYPT_EAL_PkeyGetPrv(ctx, &prv1), CRYPT_SUCCESS); | 675 | ASSERT_EQ(CRYPT_EAL_PkeyGetPrv(ctx, &prv1), CRYPT_SUCCESS); |
| 671 | ASSERT_EQ(CRYPT_EAL_PkeyGetPrv(dupCtx, &prv2), CRYPT_SUCCESS); | 676 | ASSERT_EQ(CRYPT_EAL_PkeyGetPrv(dupCtx, &prv2), CRYPT_SUCCESS); |
| 672 | ASSERT_COMPARE("Compare private key", key1, prv1.key.dsaPrv.len, key2, prv2.key.dsaPrv.len); | 677 | ASSERT_COMPARE("Compare private key", key1, prv1.key.dsaPrv.len, key2, prv2.key.dsaPrv.len); |
| 673 | - | 678 | + signLen = CRYPT_EAL_PkeyGetSignLen(ctx); |
| 679 | + ASSERT_TRUE(signLen > 0); | ||
| 680 | + sign = (uint8_t *)malloc(signLen); | ||
| 681 | + ASSERT_EQ(CRYPT_EAL_PkeySign(dupCtx, CRYPT_MD_SHA256, (uint8_t *)msg, msgLen, sign, &signLen), | ||
| 682 | + CRYPT_SUCCESS); | ||
| 683 | + ASSERT_EQ(CRYPT_EAL_PkeyVerify(dupCtx, CRYPT_MD_SHA256, (uint8_t *)msg, msgLen, sign, signLen), | ||
| 684 | + CRYPT_SUCCESS); | ||
| 674 | EXIT: | 685 | EXIT: |
| 675 | TestRandDeInit(); | 686 | TestRandDeInit(); |
| 676 | CRYPT_EAL_PkeyFreeCtx(ctx); | 687 | CRYPT_EAL_PkeyFreeCtx(ctx); |
| 677 | CRYPT_EAL_PkeyFreeCtx(dupCtx); | 688 | CRYPT_EAL_PkeyFreeCtx(dupCtx); |
| 678 | BSL_SAL_Free(key1); | 689 | BSL_SAL_Free(key1); |
| 679 | BSL_SAL_Free(key2); | 690 | BSL_SAL_Free(key2); |
| 691 | + BSL_SAL_Free(sign); | ||
| 680 | } | 692 | } |
| 681 | /* END_CASE */ | 693 | /* END_CASE */ |
| 682 | 694 | ||
| @@ -484,6 +484,7 @@ EXIT: | |||
| 484 | * 5. Get the reference count, expected result 5 | 484 | * 5. Get the reference count, expected result 5 |
| 485 | * 6. Compare the pkey ids obtained from pKeyCtx and newCtx, , expected result 6 | 485 | * 6. Compare the pkey ids obtained from pKeyCtx and newCtx, , expected result 6 |
| 486 | * 7. Compare the curve ids obtained from pKeyCtx and newCtx, expected result 7 | 486 | * 7. Compare the curve ids obtained from pKeyCtx and newCtx, expected result 7 |
| 487 | + * 8. Compute the shared key with pKeyCtx and newCtx, expected result 8 | ||
| 487 | * @expect | 488 | * @expect |
| 488 | * 1. Success, and the context is not NULL. | 489 | * 1. Success, and the context is not NULL. |
| 489 | * 2. CRYPT_SUCCESSY | 490 | * 2. CRYPT_SUCCESSY |
| @@ -491,10 +492,17 @@ EXIT: | |||
| 491 | * 4. Return non-null. | 492 | * 4. Return non-null. |
| 492 | * 5. The reference count is 1. | 493 | * 5. The reference count is 1. |
| 493 | * 6-7. Both are the same. | 494 | * 6-7. Both are the same. |
| 495 | + * 8. The two shared keys are the same. | ||
| 494 | */ | 496 | */ |
| 495 | /* BEGIN_CASE */ | 497 | /* BEGIN_CASE */ |
| 496 | void SDV_CRYPTO_ECDH_DUP_CTX_API_TC001(int paraId, int isProvider) | 498 | void SDV_CRYPTO_ECDH_DUP_CTX_API_TC001(int paraId, int isProvider) |
| 497 | { | 499 | { |
| 500 | + ASSERT_EQ(TestRandInit(), CRYPT_SUCCESS); | ||
| 501 | + uint8_t shareKey1[1030]; | ||
| 502 | + uint32_t shareKeyLen1 = sizeof(shareKey1); | ||
| 503 | + uint8_t shareKey2[1030]; | ||
| 504 | + uint32_t shareKeyLen2 = sizeof(shareKey2); | ||
| 505 | + | ||
| 498 | CRYPT_EAL_PkeyCtx *pKeyCtx = NULL; | 506 | CRYPT_EAL_PkeyCtx *pKeyCtx = NULL; |
| 499 | CRYPT_EAL_PkeyCtx *newCtx = NULL; | 507 | CRYPT_EAL_PkeyCtx *newCtx = NULL; |
| 500 | 508 | ||
| @@ -504,15 +512,22 @@ void SDV_CRYPTO_ECDH_DUP_CTX_API_TC001(int paraId, int isProvider) | |||
| 504 | 512 | ||
| 505 | ASSERT_TRUE(CRYPT_EAL_PkeyDupCtx(NULL) == NULL); | 513 | ASSERT_TRUE(CRYPT_EAL_PkeyDupCtx(NULL) == NULL); |
| 506 | 514 | ||
| 515 | + ASSERT_EQ(CRYPT_EAL_PkeyGen(pKeyCtx), CRYPT_SUCCESS); | ||
| 516 | + | ||
| 507 | newCtx = CRYPT_EAL_PkeyDupCtx(pKeyCtx); | 517 | newCtx = CRYPT_EAL_PkeyDupCtx(pKeyCtx); |
| 508 | ASSERT_TRUE(newCtx != NULL); | 518 | ASSERT_TRUE(newCtx != NULL); |
| 509 | 519 | ||
| 510 | ASSERT_EQ(newCtx->references.count, 1); | 520 | ASSERT_EQ(newCtx->references.count, 1); |
| 511 | ASSERT_TRUE(CRYPT_EAL_PkeyGetId(pKeyCtx) == CRYPT_EAL_PkeyGetId(newCtx)); | 521 | ASSERT_TRUE(CRYPT_EAL_PkeyGetId(pKeyCtx) == CRYPT_EAL_PkeyGetId(newCtx)); |
| 512 | ASSERT_TRUE(CRYPT_EAL_PkeyGetParaId(pKeyCtx) == CRYPT_EAL_PkeyGetParaId(newCtx)); | 522 | ASSERT_TRUE(CRYPT_EAL_PkeyGetParaId(pKeyCtx) == CRYPT_EAL_PkeyGetParaId(newCtx)); |
| 523 | + | ||
| 524 | + ASSERT_EQ(CRYPT_EAL_PkeyComputeShareKey(pKeyCtx, newCtx, shareKey1, &shareKeyLen1), CRYPT_SUCCESS); | ||
| 525 | + ASSERT_EQ(CRYPT_EAL_PkeyComputeShareKey(newCtx, pKeyCtx, shareKey2, &shareKeyLen2), CRYPT_SUCCESS); | ||
| 526 | + ASSERT_COMPARE("shared key", shareKey1, shareKeyLen1, shareKey2, shareKeyLen2); | ||
| 513 | EXIT: | 527 | EXIT: |
| 514 | CRYPT_EAL_PkeyFreeCtx(pKeyCtx); | 528 | CRYPT_EAL_PkeyFreeCtx(pKeyCtx); |
| 515 | CRYPT_EAL_PkeyFreeCtx(newCtx); | 529 | CRYPT_EAL_PkeyFreeCtx(newCtx); |
| 530 | + TestRandDeInit(); | ||
| 516 | } | 531 | } |
| 517 | /* END_CASE */ | 532 | /* END_CASE */ |
| 518 | 533 | ||
| @@ -659,6 +659,10 @@ void SDV_CRYPTO_MLDSA_FUNC_PROVIDER_TC001(int type, Hex *testPubKey, Hex *testPr | |||
| 659 | ret = CRYPT_EAL_PkeyCmp(ctx, ctx3); | 659 | ret = CRYPT_EAL_PkeyCmp(ctx, ctx3); |
| 660 | ASSERT_EQ(ret, CRYPT_SUCCESS); | 660 | ASSERT_EQ(ret, CRYPT_SUCCESS); |
| 661 | 661 | ||
| 662 | + ret = CRYPT_EAL_PkeySign(ctx3, CRYPT_MD_SHA256, msg->x, msg->len, out, &outLen); | ||
| 663 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 664 | + ret = CRYPT_EAL_PkeyVerify(ctx3, CRYPT_MD_SHA256, msg->x, msg->len, out, outLen); | ||
| 665 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 662 | EXIT: | 666 | EXIT: |
| 663 | CRYPT_EAL_PkeyFreeCtx(ctx); | 667 | CRYPT_EAL_PkeyFreeCtx(ctx); |
| 664 | CRYPT_EAL_PkeyFreeCtx(ctx2); | 668 | CRYPT_EAL_PkeyFreeCtx(ctx2); |
| @@ -1079,3 +1079,72 @@ EXIT: | |||
| 1079 | return; | 1079 | return; |
| 1080 | } | 1080 | } |
| 1081 | /* END_CASE */ | 1081 | /* END_CASE */ |
| 1082 | + | ||
| 1083 | +/* @ | ||
| 1084 | +* @test SDV_CRYPTO_MLKEM_DECAPS_DUP_API_TC001 | ||
| 1085 | +* @spec - | ||
| 1086 | +* @title CRYPT_EAL_PkeyEncaps test | ||
| 1087 | +* @precon nan | ||
| 1088 | +* @brief 1.register a random number and generate a context and key pair. | ||
| 1089 | +* 2.call CRYPT_EAL_PkeyDecaps to transfer various abnormal values. | ||
| 1090 | +* 3.duplicate the context and call CRYPT_EAL_PkeyEncaps and CRYPT_EAL_PkeyDecaps to check the returned value. | ||
| 1091 | +* @expect 1.success 2.success 3.success | ||
| 1092 | +* @prior nan | ||
| 1093 | +* @auto FALSE | ||
| 1094 | +@ */ | ||
| 1095 | +/* BEGIN_CASE */ | ||
| 1096 | +void SDV_CRYPTO_MLKEM_DECAPS_DUP_API_TC001(int bits) | ||
| 1097 | +{ | ||
| 1098 | + TestMemInit(); | ||
| 1099 | + | ||
| 1100 | + TestRandInit(); | ||
| 1101 | + CRYPT_EAL_PkeyCtx *ctx = NULL; | ||
| 1102 | + CRYPT_EAL_PkeyCtx *dupCtx = NULL; | ||
| 1103 | + | ||
| 1104 | +#ifdef HITLS_CRYPTO_PROVIDER | ||
| 1105 | + ctx = CRYPT_EAL_ProviderPkeyNewCtx(NULL, CRYPT_PKEY_ML_KEM, CRYPT_EAL_PKEY_KEM_OPERATE, "provider=default"); | ||
| 1106 | +#else | ||
| 1107 | + ctx = CRYPT_EAL_PkeyNewCtx(CRYPT_PKEY_ML_KEM); | ||
| 1108 | +#endif | ||
| 1109 | + ASSERT_TRUE(ctx != NULL); | ||
| 1110 | + | ||
| 1111 | + uint32_t val = (uint32_t)bits; | ||
| 1112 | + int32_t ret = CRYPT_EAL_PkeySetParaById(ctx, val); | ||
| 1113 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 1114 | + ret = CRYPT_EAL_PkeyDecapsInit(ctx, NULL); | ||
| 1115 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 1116 | + | ||
| 1117 | + uint32_t cipherLen = 0; | ||
| 1118 | + ret = CRYPT_EAL_PkeyCtrl(ctx, CRYPT_CTRL_GET_CIPHERTEXT_LEN, &cipherLen, sizeof(cipherLen)); | ||
| 1119 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 1120 | + uint8_t *ciphertext = BSL_SAL_Malloc(cipherLen); | ||
| 1121 | + uint32_t sharedLen = 32; | ||
| 1122 | + uint8_t *sharedKey = BSL_SAL_Malloc(sharedLen); | ||
| 1123 | + | ||
| 1124 | + ret = CRYPT_EAL_PkeyGen(ctx); | ||
| 1125 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 1126 | + | ||
| 1127 | + ret = CRYPT_EAL_PkeyEncaps(ctx, ciphertext, &cipherLen, sharedKey, &sharedLen); | ||
| 1128 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 1129 | + | ||
| 1130 | + ret = CRYPT_EAL_PkeyDecaps(ctx, ciphertext, cipherLen, sharedKey, &sharedLen); | ||
| 1131 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 1132 | + | ||
| 1133 | + dupCtx = CRYPT_EAL_PkeyDupCtx(ctx); | ||
| 1134 | + ASSERT_TRUE(dupCtx != NULL); | ||
| 1135 | + | ||
| 1136 | + ret = CRYPT_EAL_PkeyEncaps(dupCtx, ciphertext, &cipherLen, sharedKey, &sharedLen); | ||
| 1137 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 1138 | + | ||
| 1139 | + ret = CRYPT_EAL_PkeyDecaps(dupCtx, ciphertext, cipherLen, sharedKey, &sharedLen); | ||
| 1140 | + ASSERT_EQ(ret, CRYPT_SUCCESS); | ||
| 1141 | + | ||
| 1142 | +EXIT: | ||
| 1143 | + CRYPT_EAL_PkeyFreeCtx(ctx); | ||
| 1144 | + CRYPT_EAL_PkeyFreeCtx(dupCtx); | ||
| 1145 | + BSL_SAL_Free(ciphertext); | ||
| 1146 | + BSL_SAL_Free(sharedKey); | ||
| 1147 | + TestRandDeInit(); | ||
| 1148 | + return; | ||
| 1149 | +} | ||
| 1150 | +/* END_CASE */ | ||
| @@ -857,3 +857,12 @@ SDV_CRYPTO_MLKEM_INVALID_KEY_DECAPS_API_TC001 tcId 149 | |||
| 857 | SDV_CRYPTO_MLKEM_INVALID_KEY_DECAPS_API_TC001:CRYPT_KEM_TYPE_MLKEM_1024:CRYPT_MLKEM_INVALID_PRVKEY:"B1A0A4F15091D04CC48FE4840F37B49AF0B7ADBCACB2468824B0B09902BEBD24254E271D2E9B9AEE5BBB4805AD0A3259C7FAA24A829D02EC441195432FE496B2398DEF08428B318911A8104777772794452464BC09941742A9A9B8FC7DFBCC3BE1563CC7F93950EA099B7C5E2585C93F6AB26B0B50FBA293256612DA131EAC2680B1B7C7C4A8CA87E2A9865036F9DCA961A59BADE809A90393686B874AF4758B702065B993DA602F5EA02DF3189E57B1CAB99099105134ACD33208487B849B19054575C383279EFA9C2211BD1E76662C5608BA902BB8A490F7D8C841E8509E228DCDF7267F6CABED44BE1823CCBE550014F7BC83F881B27A14FCFAB5AFD3C5FF9C72C0531A530B01EAA944B827A759A9A46F69036FEB56A6591CC929C464A0AFE7C394D380242F779FC0F10A0C89737D877151452189D7A99D508581E4B3F24B5C78E67B67BB07E9C2A887674374D8AE4658423271BE00FB13146197267A6D19600A3A116ACBCC3E2FC43F1E592FAB06CF46B3CF0940430486A3E86589C4D68A13F63F133B74A1B0A9A0C67B0983C8B311774B6B310BC83CAFE807A693AB29A240D8B80ABD7377AAF05755875315A14D12F7C1F8603ADE8809B52413F5E02B15970A515CBB0E15BC244B2712916B483A844BC9A545354F45665A33D85E69218ADB95BCE20711FFA813842717AFA17F41B01BCA56571D0004DAB9B522467CC5E84855AC542D1605AF84CDEF712B55DC875400075EE543015A1CD96B3358C98DC79146CFB17D4D7300F34A195C805B8F1C3DBD591CD4DCB502B7305675B8EEF14A8905A1ED294050A52CF1B55C1690210D27253CF09AD4BB113DB0101EE810C45CB144CA1577612ACC24ACE29B4E0A591B551165CF524A3C7540238C10897B560E7C7FFA2909BCBA96F0FA752F7B3ECF7B0E0E5272B30616274A8A17369092E28608A0665D87895E1350D7F3AF2B269DBEBA5C0A15212C483E5F68998811AE61D49AD223970DE112F4C768E8FA1A38F4BB1C8C0E9E133E1AE8123D38CEAC5383C4EA10DF2B6AA3596C19CCCE4EC231418ACE90B15657207F70780166DB903B39C8A0D51D11B13A9842240E40BDEA70B2E364C4C874309B708628FA86D41A411AA8398CC04CB8C32178F38C7995C47E757402769C4A8194C6DC22BEE794B5781DC00633AEEC28A3D13476494D176B4D96207097476D0EE1B2995A333E9188AB4B914EA094B0303EAE8174752461E87377425A818A309845D5CF8C953AAD1514EDE931F7F394C0D99824AA6C9A530F7F6C4BE2B62C8782C703BAB573B77620B65CA8B7B376212FF1B1020A299649E84ABCEA5834947B7C055BBBCC6332237DE0B886ADB50B057C07C4903081041FBD1B3A1300169E50CF073B8A41C13A05F986E7A5B5FD8B5CD59A47AAD22AE0968A78C9C914F7A8918BC2749C5362371D0D8B5E68915E28A8750A033D3C26B6939BC3C3E2B59D009265A833A8FB58758299DF52A23F8C9041674C6C64AB8A049AC35769DF4BB828224C6A4C3AC5483CE4F8A95957C90C37703FAB1D1E7048E62AB16AA8B0234AC0197351A8400A8C1A87AEE4B2537B5B400AC4EF98240D0620A63724F6BB9856F32AFC152AACEC7480A17DF7AAB9AFF93C6B56227B3072F74B88D00937D8C4BF18C1B7C3914EF1337C06F6C0A4DC6EB788469E6CBF0DD95C90975FBD34534D3999AA22AA5498AEFBF6A31A263C5CE2A925197A2F294425178319A8B28A430A792CC4360440C602936AD55301422540D931C3975B534C048D946B5FD120903BB3C082CFB0E375A1CB204D54A02A1120E46BB221247E2718315FC75DE4823B16474E086029AA4B852CA96D89FC81A619A1A48A47551440F516B3C09054EE085E92FA531D5B341F571D16B1B0A46168F4EC80770388E602A960B8A12E02920F54CE52560DF4356FD58020964AB4DC3942F04415373C7641A7A1E47B5B81A15BC534202083BB1C8245AA186A84133E0A692207F32C63B3A6FA24014B88AFFDC5AB2637525F9B7F0C960A5CC137C3314AECD96ABAA93774B76F9ED98C987C74BF57909127AE9E985AD526AD6E12292086852C2931D828202A0B02F3564E5BD85A478728A96192AF92046C212CD10033816484940B8F9DB790FA518401B0CFDD168D339A044FD37D9C4B37FACA18A80A3E010037D9420200DBA90B1B2E432798DCDCB7A41461DD869413291EDC75193FC968C5A6A24B59AE1051CB11091615891B065B437BF264DD5092682C67BE8A2FEE6A2932E0172D44A4F906633A282576A24C994C61BB2C6256E24C3B6736730BA4996631D973013057411F8419FA635D17BB145907C870B0331EB76DCC6595072A2A69317A03B887316132D2C28F89B32280793280AB874156C8D5946C26267542AA225CB3B09528465947354B876EEFA1CE06582DA725AD1105B3AD2013F9535F053C3672636E97858A5166C70DB3A2CCF57792B99B18FA700C47756B48BDBAEA2A0001A19A9B322B717AB07B051E8A61690961CBB980BC18BC0319C0FE4B7B75349C3DF488CA068F6FF41CE97CAD45835EA6FB27F894CC22C4226870C0F7D9B9133ABE3BE248190688E8F9117A2B20505C90EF8B86AA5C8DDDD6C7C3623E360652C943670D5891CFA03DF3B9ABA489225E6A6E0CEB5777414626824D1DE5368F1971A37779E7199F0BE779B498CA23E14BBCD30BFDC9BDD12932D8F00F96E089B152BA2B1A6EB504115AF2A83206B5D848644F876A07302D6B1098FC9C24AA709507236CD0FC34067219B3E307611000D0F74545E093E210BA8D48642EDB6DE5963973120DC15407A0426FC8D1CAB6B20DC5316F9B145E35F67F781C52ED19AF1AA49B54708964AB569F174E11276A11027C30E5BFE8A60E54277401A848AD31966DABCC5BE99C19CB5D7B538B18C874EEF9B22171230C7771BCBBCEE0818CA46C8D3B6C4504430581828E17C52665C7AFC14A671B9CB222D78DA359AE958781AE346AD481B2F949360FC84736577BD6C9831D981C8E928729965D5ED81E770748C5D9025D550844A42AA452164267C7B32C6BE4F322633A51A655B00AF53A70530E2ED2A795144314902CD77AAFA7E419A17540A6267302798E488B8CCBA8A7EB40806F980B1131882E37CB7A34583B09072798A1140C61B9E53B155C9800A18A901182DCE15626C6B8B753324DA30DEF51B6C4806A9243640960BA80F0C031A99EDBC7603FECC63086255D187756A5ADF6DB5045BB723866541188CD183CAB15558C87CC322A9AC61486A5B0E8296EE21AC11073D873307FF4C443F0365DD513AE6502F2E4758D58BAC2428EE5877AA76614C48B8309919ED07B0DB20099D0AB60B50243E3839C29E16F0B34025BDA400D7C9F9BBCB592574457005325C22BD36A7EEAA0BEF7F542F4319E51A51EB8580B8DA70C4DB535F626193029983FCB91BB057E7F246A8F078FDEFC014EA79D419B5344C99C566B9A2EE91C3566A275703121382E2BD88C3186ADDF677BD0DA7A6DF5BC9324995FC0559763520D090BCF9546D8A21E8120754AE96C9F726919225D50541D973C4DB2E47CC6079451E05ED9911FEA9196B4F22E43B15919104905618171680BF9213BF670B96545BD586B63E5068A85AC87F246706A107966D9A68F0332BFD39AEF0B426A919FAB9104C9554442C0BB2479B318575959AAC66F7C9FE99850242BBC5B523B517AAC0BB1C2601160987A4B962B398E80635CA634A473BD72F7C6B066672A02B1E758C89AE11F802114B2D66E1FF833CEC5992ED4C0109A2D63363FC8270B061986858A13E28288F0D862AB27020800774E5664F7E5BFFC07779200431936723F54540DC135CE4C39A7390664456D7C98701AB11DF00C88DB5CBE4BF920B0D7BC6D007333B88F3A529CAB2166FD634EAAE394B918AFBED31DD84365097BBA04DC78FB9069BE9BA921797226EACD65D321681900DCB8731D557CA4A288287371A8E00DED3643E9A83150E15FAAA27578B24FFC8906BD168C8EB28B9EA4C2F9616C2BF5CD4D9372F9214CAE4488353C0BE99B08439CACB114662DC30C3DD6331E47A8AB9A74696A50AB296BB0C3765CCC4A8D0C9ACDC5490AB3CBC0641CEF551841C017D35AB95FA7C7ECAAC970CC0B90E66B3212C344873899C862A9D15E7B584C47C5A6F02BB2B1FA61724B84E0C2CA2DE59A6CFCA243A5A28E0B3A170A5A38C588BD24CA594255AE53C362873C9FAB975CE7BAA1B9326A363EFC927D935246ABEBCC8792BED5E44F44171CDDB6CE89168107B7BF73589E3D063FD007CE73DCC8DF473F8C57BA4833CBA618C15E9872D374C801C166D883B20BF83542881FDDAA01E9F9CF8BE538ED6181D0E0E74D7681B7714EF66BC10ED600D291FC37FA47B644973AC5E52BE416CDB0B7487678D2F69C0D00845417D0740BA7E803555E19BDB6001B74F56C3456AC65E78550BFFFC30F6EC5035175B6FF08B67107C9F852189550F953" | 857 | SDV_CRYPTO_MLKEM_INVALID_KEY_DECAPS_API_TC001:CRYPT_KEM_TYPE_MLKEM_1024:CRYPT_MLKEM_INVALID_PRVKEY:"B1A0A4F15091D04CC48FE4840F37B49AF0B7ADBCACB2468824B0B09902BEBD24254E271D2E9B9AEE5BBB4805AD0A3259C7FAA24A829D02EC441195432FE496B2398DEF08428B318911A8104777772794452464BC09941742A9A9B8FC7DFBCC3BE1563CC7F93950EA099B7C5E2585C93F6AB26B0B50FBA293256612DA131EAC2680B1B7C7C4A8CA87E2A9865036F9DCA961A59BADE809A90393686B874AF4758B702065B993DA602F5EA02DF3189E57B1CAB99099105134ACD33208487B849B19054575C383279EFA9C2211BD1E76662C5608BA902BB8A490F7D8C841E8509E228DCDF7267F6CABED44BE1823CCBE550014F7BC83F881B27A14FCFAB5AFD3C5FF9C72C0531A530B01EAA944B827A759A9A46F69036FEB56A6591CC929C464A0AFE7C394D380242F779FC0F10A0C89737D877151452189D7A99D508581E4B3F24B5C78E67B67BB07E9C2A887674374D8AE4658423271BE00FB13146197267A6D19600A3A116ACBCC3E2FC43F1E592FAB06CF46B3CF0940430486A3E86589C4D68A13F63F133B74A1B0A9A0C67B0983C8B311774B6B310BC83CAFE807A693AB29A240D8B80ABD7377AAF05755875315A14D12F7C1F8603ADE8809B52413F5E02B15970A515CBB0E15BC244B2712916B483A844BC9A545354F45665A33D85E69218ADB95BCE20711FFA813842717AFA17F41B01BCA56571D0004DAB9B522467CC5E84855AC542D1605AF84CDEF712B55DC875400075EE543015A1CD96B3358C98DC79146CFB17D4D7300F34A195C805B8F1C3DBD591CD4DCB502B7305675B8EEF14A8905A1ED294050A52CF1B55C1690210D27253CF09AD4BB113DB0101EE810C45CB144CA1577612ACC24ACE29B4E0A591B551165CF524A3C7540238C10897B560E7C7FFA2909BCBA96F0FA752F7B3ECF7B0E0E5272B30616274A8A17369092E28608A0665D87895E1350D7F3AF2B269DBEBA5C0A15212C483E5F68998811AE61D49AD223970DE112F4C768E8FA1A38F4BB1C8C0E9E133E1AE8123D38CEAC5383C4EA10DF2B6AA3596C19CCCE4EC231418ACE90B15657207F70780166DB903B39C8A0D51D11B13A9842240E40BDEA70B2E364C4C874309B708628FA86D41A411AA8398CC04CB8C32178F38C7995C47E757402769C4A8194C6DC22BEE794B5781DC00633AEEC28A3D13476494D176B4D96207097476D0EE1B2995A333E9188AB4B914EA094B0303EAE8174752461E87377425A818A309845D5CF8C953AAD1514EDE931F7F394C0D99824AA6C9A530F7F6C4BE2B62C8782C703BAB573B77620B65CA8B7B376212FF1B1020A299649E84ABCEA5834947B7C055BBBCC6332237DE0B886ADB50B057C07C4903081041FBD1B3A1300169E50CF073B8A41C13A05F986E7A5B5FD8B5CD59A47AAD22AE0968A78C9C914F7A8918BC2749C5362371D0D8B5E68915E28A8750A033D3C26B6939BC3C3E2B59D009265A833A8FB58758299DF52A23F8C9041674C6C64AB8A049AC35769DF4BB828224C6A4C3AC5483CE4F8A95957C90C37703FAB1D1E7048E62AB16AA8B0234AC0197351A8400A8C1A87AEE4B2537B5B400AC4EF98240D0620A63724F6BB9856F32AFC152AACEC7480A17DF7AAB9AFF93C6B56227B3072F74B88D00937D8C4BF18C1B7C3914EF1337C06F6C0A4DC6EB788469E6CBF0DD95C90975FBD34534D3999AA22AA5498AEFBF6A31A263C5CE2A925197A2F294425178319A8B28A430A792CC4360440C602936AD55301422540D931C3975B534C048D946B5FD120903BB3C082CFB0E375A1CB204D54A02A1120E46BB221247E2718315FC75DE4823B16474E086029AA4B852CA96D89FC81A619A1A48A47551440F516B3C09054EE085E92FA531D5B341F571D16B1B0A46168F4EC80770388E602A960B8A12E02920F54CE52560DF4356FD58020964AB4DC3942F04415373C7641A7A1E47B5B81A15BC534202083BB1C8245AA186A84133E0A692207F32C63B3A6FA24014B88AFFDC5AB2637525F9B7F0C960A5CC137C3314AECD96ABAA93774B76F9ED98C987C74BF57909127AE9E985AD526AD6E12292086852C2931D828202A0B02F3564E5BD85A478728A96192AF92046C212CD10033816484940B8F9DB790FA518401B0CFDD168D339A044FD37D9C4B37FACA18A80A3E010037D9420200DBA90B1B2E432798DCDCB7A41461DD869413291EDC75193FC968C5A6A24B59AE1051CB11091615891B065B437BF264DD5092682C67BE8A2FEE6A2932E0172D44A4F906633A282576A24C994C61BB2C6256E24C3B6736730BA4996631D973013057411F8419FA635D17BB145907C870B0331EB76DCC6595072A2A69317A03B887316132D2C28F89B32280793280AB874156C8D5946C26267542AA225CB3B09528465947354B876EEFA1CE06582DA725AD1105B3AD2013F9535F053C3672636E97858A5166C70DB3A2CCF57792B99B18FA700C47756B48BDBAEA2A0001A19A9B322B717AB07B051E8A61690961CBB980BC18BC0319C0FE4B7B75349C3DF488CA068F6FF41CE97CAD45835EA6FB27F894CC22C4226870C0F7D9B9133ABE3BE248190688E8F9117A2B20505C90EF8B86AA5C8DDDD6C7C3623E360652C943670D5891CFA03DF3B9ABA489225E6A6E0CEB5777414626824D1DE5368F1971A37779E7199F0BE779B498CA23E14BBCD30BFDC9BDD12932D8F00F96E089B152BA2B1A6EB504115AF2A83206B5D848644F876A07302D6B1098FC9C24AA709507236CD0FC34067219B3E307611000D0F74545E093E210BA8D48642EDB6DE5963973120DC15407A0426FC8D1CAB6B20DC5316F9B145E35F67F781C52ED19AF1AA49B54708964AB569F174E11276A11027C30E5BFE8A60E54277401A848AD31966DABCC5BE99C19CB5D7B538B18C874EEF9B22171230C7771BCBBCEE0818CA46C8D3B6C4504430581828E17C52665C7AFC14A671B9CB222D78DA359AE958781AE346AD481B2F949360FC84736577BD6C9831D981C8E928729965D5ED81E770748C5D9025D550844A42AA452164267C7B32C6BE4F322633A51A655B00AF53A70530E2ED2A795144314902CD77AAFA7E419A17540A6267302798E488B8CCBA8A7EB40806F980B1131882E37CB7A34583B09072798A1140C61B9E53B155C9800A18A901182DCE15626C6B8B753324DA30DEF51B6C4806A9243640960BA80F0C031A99EDBC7603FECC63086255D187756A5ADF6DB5045BB723866541188CD183CAB15558C87CC322A9AC61486A5B0E8296EE21AC11073D873307FF4C443F0365DD513AE6502F2E4758D58BAC2428EE5877AA76614C48B8309919ED07B0DB20099D0AB60B50243E3839C29E16F0B34025BDA400D7C9F9BBCB592574457005325C22BD36A7EEAA0BEF7F542F4319E51A51EB8580B8DA70C4DB535F626193029983FCB91BB057E7F246A8F078FDEFC014EA79D419B5344C99C566B9A2EE91C3566A275703121382E2BD88C3186ADDF677BD0DA7A6DF5BC9324995FC0559763520D090BCF9546D8A21E8120754AE96C9F726919225D50541D973C4DB2E47CC6079451E05ED9911FEA9196B4F22E43B15919104905618171680BF9213BF670B96545BD586B63E5068A85AC87F246706A107966D9A68F0332BFD39AEF0B426A919FAB9104C9554442C0BB2479B318575959AAC66F7C9FE99850242BBC5B523B517AAC0BB1C2601160987A4B962B398E80635CA634A473BD72F7C6B066672A02B1E758C89AE11F802114B2D66E1FF833CEC5992ED4C0109A2D63363FC8270B061986858A13E28288F0D862AB27020800774E5664F7E5BFFC07779200431936723F54540DC135CE4C39A7390664456D7C98701AB11DF00C88DB5CBE4BF920B0D7BC6D007333B88F3A529CAB2166FD634EAAE394B918AFBED31DD84365097BBA04DC78FB9069BE9BA921797226EACD65D321681900DCB8731D557CA4A288287371A8E00DED3643E9A83150E15FAAA27578B24FFC8906BD168C8EB28B9EA4C2F9616C2BF5CD4D9372F9214CAE4488353C0BE99B08439CACB114662DC30C3DD6331E47A8AB9A74696A50AB296BB0C3765CCC4A8D0C9ACDC5490AB3CBC0641CEF551841C017D35AB95FA7C7ECAAC970CC0B90E66B3212C344873899C862A9D15E7B584C47C5A6F02BB2B1FA61724B84E0C2CA2DE59A6CFCA243A5A28E0B3A170A5A38C588BD24CA594255AE53C362873C9FAB975CE7BAA1B9326A363EFC927D935246ABEBCC8792BED5E44F44171CDDB6CE89168107B7BF73589E3D063FD007CE73DCC8DF473F8C57BA4833CBA618C15E9872D374C801C166D883B20BF83542881FDDAA01E9F9CF8BE538ED6181D0E0E74D7681B7714EF66BC10ED600D291FC37FA47B644973AC5E52BE416CDB0B7487678D2F69C0D00845417D0740BA7E803555E19BDB6001B74F56C3456AC65E78550BFFFC30F6EC5035175B6FF08B67107C9F852189550F953" |
| 858 | SDV_CRYPTO_MLKEM_INVALID_KEY_DECAPS_API_TC001 tcId 154 | 858 | SDV_CRYPTO_MLKEM_INVALID_KEY_DECAPS_API_TC001 tcId 154 |
| 859 | SDV_CRYPTO_MLKEM_INVALID_KEY_DECAPS_API_TC001:CRYPT_KEM_TYPE_MLKEM_1024:CRYPT_MLKEM_INVALID_PRVKEY:"A6F730473935DAE39954B8C0D90C7F7AFB36F92A12C6C723E605C8203BAF53270D0DF2A25F0AC75A292AFD0C637893372ED15F53B9173524687744C8DF288A0CD07B2ADAA50D595698032665D8227ED63AB4B44288D282C1FB4F47955C9D987B37913F23836593187C37B43F5FDB65BE736C4167749F3951A3E9A502179384078447FB3D19C55541D91B97857E696A0DF3E4BED4E6A900389744F492B72B0D3CD2B4B195049B824CE934425FB0899066ABC199A8CA98A6FEF85311A45B92DA1A26069082A6AE59321599807828081B3E37B87935ADB6564A830BC20CE63E02030D19DC9F8A385418E4759A4A6CC3E8A79F39C6D1564DE4E9332D5809254B73BBF052698AB29C794D3C7C3562940B1756CC5BF792B8E5837D921B5F50B52DD37F6B156FBD67BBFD21448E479F44719A4DECAE0B658A691819D1E8A70DE269511A2277264E3880C0ED20C38452B2AE860EA21B969D7344C9A365514965607890B7A5A41AC123A84BB819B7B5DB140D276890E67AA49F1679B6B0218E53C543985C6C5B715856C0D0D3670AB9BEA8A789EA83429E5034AD9451E0A28F86C8901A788CB7D6684704346A44B44B5B0E82546506114A6C1326F4231097B8A59C791F17CC1B0117586423C45B212AEF7BCEBBB091CFDA1CCE2C7C56F4C93198CC397B4D44F460ADD771202C0BA5F85EBCA261EC6807979320DD1AAEBC58641126435B0B5DBC626D487A1CD7D58051FC0534368EF40876B0B99F5724748FE28D17B41EE75900D3C2AAC5AB237EF5BDC4A477F019856ABA8EE40C7919C3A064A76B63A64430D2A65CB3117457A02135A6D8B1B888485E20F676CA87613D08C64E3874BB1652F8474D93C16B11A06A0BB18B6FBC80DD12328833AC4CEC2AD9999ED42B96DC39C679806F2234C4FE583AF5A43F744405AE8241A46CC9A0B1A156D0143BC0585965734EDAC3D745AEA8D87D73B8C0E97574C02872A5164548FA5030C9730E1C217C84300B4C11A616C62A15752165200B196A5C59C3CE610406C540B1EA1F31310428086D0DAA0DC09A2833AB309C38B22203559DC13279A34B8A5A7C338479969B33CCDA608EE77DDE5123CB949031693D9DF25A5450861C27165487346F10902C866D941B3DEAC90ED9511EBD7673AA28BA1E523FB3355D0647CA4607620F391A7FE50649EC9460CB1E5FA731A28B8606FA9EA9D7213A5461A6B693FA763C5805CECB3AAC80C40BCCBBA2E671580553579F070BF91531D41A3191D1476F392FDC653323359AFACC16410954984B692126231297B4D2778EDD2670E2578FAB287BE5A5C503D9779564A9ADD0277B26610251B69F625293B3546486A5BB23A8CB3326C4979A3C526B1B0588EB9411E7862CAEC4C0C8C55F97889EF40761B5957657183B433200EEE8009408160F0C89E1A04F03F800375674B50A7ECA087583C572F066B6C333B7BBF945F0DBBDD5C1CCE435ACD1493F586CC22A16A7423B5B1BCBBE060C644CF33CBB93922083B573804B55C86EC7F88863AB441A00BC04A52FD99B4DBB937D9E80847168735A83688513A31D25B051B7090CCB79DB39B86BFC4ED7CB5F91E149C2361BE204C432F66CA4B732D3336EB43B34C1F8943C6BA5E409C1D3E08A17AA7AA7485948F38E2B743026B10DF7598B67A95A832B01DF22B8C2132D922359BEC56B3848CD70604C602C93DAFA2AAF2A882574727FAC08927B589D4A5A03F312671B7BFE87640132C6856541CEAB87821720FC963EA336735331A0CFA2114774B866900594422E24B83628E838D909586D16A1F9AA55F14260B1749D3EC966E40447AE1610ABCC8463EC9E63C69E434214C89AC75EBC16AC493C5E0AAC58A7A713B86BA96CCC3757725C9C0AF8A7027E6A1E70613650019656A0473590629CFB857AD561163280DA107B945C2AF7335A17D65A193A4859E6A5B44C2E13A45F20CCAE1BF5B76CF2AF0EE32EF13932D50B81DC6BB5B951C57D27C0D48A18118B0453DC766EA9C3FE8CCF82D92404BA03E53C1ECCB4AB2FB34660C29B68E7812B52AE701C75AD4A117B5C4922C8CEDCD33B42732C1DD1A5A5F78C7FEC9779B73B3DC922DE974D04C4661DDAA7F00136514874D5158D71F84FBFA10CD495595CF482E8874A7CCC6F1914691DB5B05A85C6A9C77284E15CA9E91F42511852719AB1182F484066F526798C59081F2A81B0B63937FA5258A389885B905EB1252837656F578E90128CCC6314720B6E52280912946BC18C0FE2E4A07074A2373A2E115470B143AA60A9A34F4B6D717879458C532ED1790DF9CC19605A2E186B5DC3602EF2CC5EAC9B1362951041BD7B003EF46B258352BB7556A135A5071116C11B73C46B4A280C39A29A78BE3349940D9C3608A2A0565A3448B65581A826A9388C00C34F0136763E409FE2A2A3A768C3C795AD7C852AEB65055CA77120AC0FE8514669FA627D24C2A977726015C8CA001F4291CB35A1C4CEB24A449419F8E4159124585BABA37868C42D85428294AEFC309C01E1AE07E688C19B0EC2568784D2308FA2A5AA36AD653A82F4A88C2F7361A5E9390E4B147CE780E958976529603640BED2338C0BD776A18331F5D06A9E5A2C5B971FCA2010A7040018891A73565AD911A93E275BB5724A4EE24C20AA2A9FE191C5C41CDC5C02F5D8134EA5B2A501AA6A708CD125A0B8129F4F1617607812A1E113ABB77CAB197F0CF368FFBCC5A860B19E6725C9D147AB1561DE1A27EDE91D33D36F7E099AF945ADC7CC2B59021090AC84CEDC3B77F93F6051AE15ACA0FFA48666B767B72C7168E658A8664AECCB34E66B4ACF0B2D84D9BFF84A9425E59F21A4163DC54AAE907BD77A36665B5CA5279B9C352FCD804ED886BFE49C090BD16A7D147C9E7120F347BD716A4E909CC4EF8946D5188D13A58B6CC487872281C6016C5D070020B277234A03E567C0E72255D2785B45AC4795C7175D129EC9D1AF1B56848EBC243F04165DC60CE6825673278AA6D9095F7C1E1C566DF02381F031461AA826D0B3BC059BAD358CA8D4F876C24C82B7F4754DFB0D35F7A5BA4A7179D535C05991AB7CB3BF7B93BB2AA699B2C4A2570A29537C60662BAE128079AC91AF3AB7D8297D3F1499ECD0B5B6906647889313736E5EF5263FF9C5B7B4ADC62C93D6C17181D24BC0DAB26FE5A5A117C66110024D1A56DEA244DEF8080AD8A9D2E0B0EC9A7B5662A43CF00FFEF9567A7BCC49021487E547B71B591849381EC7297323200E906ADBF2540DC3538AFBAFC35CC89B0301C20332D1091C86528C2BD10ABB55A2623605E981650985B89562C85DEA1B1BA784BAA56EB742426D67A08E196FEA2AAADE87C5B52B0AA58A79CCB4AF4AD849B98CB3F9FB2F3A9B3E7DB85663550078BA6F36A850162A0ECFE6845BB58D7079698F070C7DB0686DFACF0D721E01238BF8095E57F1A0E99023A8173C97DAA871D03BC3F085EA49B2F4A462D1133594F903BD8B1E4541760C5914DB159D778877E891336A295810A871B529A2D79AAF28C33C6BB70F633A4EC1B67C70A2C60F034D8A7C73AFD182A523BFEC267327C71F1868111793B129E17F481753AA0587AC435C476895B1721F2B9815A7509126C143A4FC91BE743148B038536879586B8372646F29AC295BDA470A511EAD8AA360A2934C128A23274246B72B77D30A063CCBFF24300D1595B12093ED8973AEE27EEBFA7EFD49823380C797AB41081603A996400AC73AF4C4691AF0888414C543BC2673034C674198C1A74B32D46A3BC75DDF86385AB16166B623B2B984F51392C0C91D1C403319191D8332945EA76AA7710BACA277B5B4302CD0114C3BAA490024B0A990B15B1442304C882CB1B49B6A17B502884385C7DA2741016C184656EB141378666A5EB72ED485231EB816A2372FC0221511F4557282923403A3B546ADB460768D0012B0A30E07FC3E1B233E3D527DF13A856C4C5ABAA0CF7F3405EB76CC873A94268958CA861128360C423022CB605972332D0366CBEA721B648B2B4259B9F7C81B4396197A228638D622C321A1E99B5FA641427D01639DAB7EAEA41EB0E8A2405BC3C51225A66269C1C50814499E2F85A698319B5040442F762A878137DBD7C2D32A02AAB036C87906FB048173BC2323459292A2230247657F74A5788596AB6890906ACBA09230273A2C61682DC39B55F902C26C8553F42B6D01741DC48203949A9D71B49FBC366B47C37328455404C669CA163B6DF31CCCD82DEF1CBBC7319C89F6CE8FF6522D6883E3632F0127A9499C31E1C05D8A06298530612B0ACD0804B6E72C67577689788829E9C331F56937525096669A961DCA549F00A9FE40C4D480B56DB17131FFABAFD1DD0635942836FC2F0D95C9DC102FB89E6BEAB3E5473A16B43D6F2DA98D3A4F0000B39C34943AF8DC741BFB7B46DD7F2BD36809A452321C70E78B22772D139A27731B256C2E92F7D49A52488CDE4B4CC1B3A6EBB8686B5EEEB6D4BE" | 859 | SDV_CRYPTO_MLKEM_INVALID_KEY_DECAPS_API_TC001:CRYPT_KEM_TYPE_MLKEM_1024:CRYPT_MLKEM_INVALID_PRVKEY:"A6F730473935DAE39954B8C0D90C7F7AFB36F92A12C6C723E605C8203BAF53270D0DF2A25F0AC75A292AFD0C637893372ED15F53B9173524687744C8DF288A0CD07B2ADAA50D595698032665D8227ED63AB4B44288D282C1FB4F47955C9D987B37913F23836593187C37B43F5FDB65BE736C4167749F3951A3E9A502179384078447FB3D19C55541D91B97857E696A0DF3E4BED4E6A900389744F492B72B0D3CD2B4B195049B824CE934425FB0899066ABC199A8CA98A6FEF85311A45B92DA1A26069082A6AE59321599807828081B3E37B87935ADB6564A830BC20CE63E02030D19DC9F8A385418E4759A4A6CC3E8A79F39C6D1564DE4E9332D5809254B73BBF052698AB29C794D3C7C3562940B1756CC5BF792B8E5837D921B5F50B52DD37F6B156FBD67BBFD21448E479F44719A4DECAE0B658A691819D1E8A70DE269511A2277264E3880C0ED20C38452B2AE860EA21B969D7344C9A365514965607890B7A5A41AC123A84BB819B7B5DB140D276890E67AA49F1679B6B0218E53C543985C6C5B715856C0D0D3670AB9BEA8A789EA83429E5034AD9451E0A28F86C8901A788CB7D6684704346A44B44B5B0E82546506114A6C1326F4231097B8A59C791F17CC1B0117586423C45B212AEF7BCEBBB091CFDA1CCE2C7C56F4C93198CC397B4D44F460ADD771202C0BA5F85EBCA261EC6807979320DD1AAEBC58641126435B0B5DBC626D487A1CD7D58051FC0534368EF40876B0B99F5724748FE28D17B41EE75900D3C2AAC5AB237EF5BDC4A477F019856ABA8EE40C7919C3A064A76B63A64430D2A65CB3117457A02135A6D8B1B888485E20F676CA87613D08C64E3874BB1652F8474D93C16B11A06A0BB18B6FBC80DD12328833AC4CEC2AD9999ED42B96DC39C679806F2234C4FE583AF5A43F744405AE8241A46CC9A0B1A156D0143BC0585965734EDAC3D745AEA8D87D73B8C0E97574C02872A5164548FA5030C9730E1C217C84300B4C11A616C62A15752165200B196A5C59C3CE610406C540B1EA1F31310428086D0DAA0DC09A2833AB309C38B22203559DC13279A34B8A5A7C338479969B33CCDA608EE77DDE5123CB949031693D9DF25A5450861C27165487346F10902C866D941B3DEAC90ED9511EBD7673AA28BA1E523FB3355D0647CA4607620F391A7FE50649EC9460CB1E5FA731A28B8606FA9EA9D7213A5461A6B693FA763C5805CECB3AAC80C40BCCBBA2E671580553579F070BF91531D41A3191D1476F392FDC653323359AFACC16410954984B692126231297B4D2778EDD2670E2578FAB287BE5A5C503D9779564A9ADD0277B26610251B69F625293B3546486A5BB23A8CB3326C4979A3C526B1B0588EB9411E7862CAEC4C0C8C55F97889EF40761B5957657183B433200EEE8009408160F0C89E1A04F03F800375674B50A7ECA087583C572F066B6C333B7BBF945F0DBBDD5C1CCE435ACD1493F586CC22A16A7423B5B1BCBBE060C644CF33CBB93922083B573804B55C86EC7F88863AB441A00BC04A52FD99B4DBB937D9E80847168735A83688513A31D25B051B7090CCB79DB39B86BFC4ED7CB5F91E149C2361BE204C432F66CA4B732D3336EB43B34C1F8943C6BA5E409C1D3E08A17AA7AA7485948F38E2B743026B10DF7598B67A95A832B01DF22B8C2132D922359BEC56B3848CD70604C602C93DAFA2AAF2A882574727FAC08927B589D4A5A03F312671B7BFE87640132C6856541CEAB87821720FC963EA336735331A0CFA2114774B866900594422E24B83628E838D909586D16A1F9AA55F14260B1749D3EC966E40447AE1610ABCC8463EC9E63C69E434214C89AC75EBC16AC493C5E0AAC58A7A713B86BA96CCC3757725C9C0AF8A7027E6A1E70613650019656A0473590629CFB857AD561163280DA107B945C2AF7335A17D65A193A4859E6A5B44C2E13A45F20CCAE1BF5B76CF2AF0EE32EF13932D50B81DC6BB5B951C57D27C0D48A18118B0453DC766EA9C3FE8CCF82D92404BA03E53C1ECCB4AB2FB34660C29B68E7812B52AE701C75AD4A117B5C4922C8CEDCD33B42732C1DD1A5A5F78C7FEC9779B73B3DC922DE974D04C4661DDAA7F00136514874D5158D71F84FBFA10CD495595CF482E8874A7CCC6F1914691DB5B05A85C6A9C77284E15CA9E91F42511852719AB1182F484066F526798C59081F2A81B0B63937FA5258A389885B905EB1252837656F578E90128CCC6314720B6E52280912946BC18C0FE2E4A07074A2373A2E115470B143AA60A9A34F4B6D717879458C532ED1790DF9CC19605A2E186B5DC3602EF2CC5EAC9B1362951041BD7B003EF46B258352BB7556A135A5071116C11B73C46B4A280C39A29A78BE3349940D9C3608A2A0565A3448B65581A826A9388C00C34F0136763E409FE2A2A3A768C3C795AD7C852AEB65055CA77120AC0FE8514669FA627D24C2A977726015C8CA001F4291CB35A1C4CEB24A449419F8E4159124585BABA37868C42D85428294AEFC309C01E1AE07E688C19B0EC2568784D2308FA2A5AA36AD653A82F4A88C2F7361A5E9390E4B147CE780E958976529603640BED2338C0BD776A18331F5D06A9E5A2C5B971FCA2010A7040018891A73565AD911A93E275BB5724A4EE24C20AA2A9FE191C5C41CDC5C02F5D8134EA5B2A501AA6A708CD125A0B8129F4F1617607812A1E113ABB77CAB197F0CF368FFBCC5A860B19E6725C9D147AB1561DE1A27EDE91D33D36F7E099AF945ADC7CC2B59021090AC84CEDC3B77F93F6051AE15ACA0FFA48666B767B72C7168E658A8664AECCB34E66B4ACF0B2D84D9BFF84A9425E59F21A4163DC54AAE907BD77A36665B5CA5279B9C352FCD804ED886BFE49C090BD16A7D147C9E7120F347BD716A4E909CC4EF8946D5188D13A58B6CC487872281C6016C5D070020B277234A03E567C0E72255D2785B45AC4795C7175D129EC9D1AF1B56848EBC243F04165DC60CE6825673278AA6D9095F7C1E1C566DF02381F031461AA826D0B3BC059BAD358CA8D4F876C24C82B7F4754DFB0D35F7A5BA4A7179D535C05991AB7CB3BF7B93BB2AA699B2C4A2570A29537C60662BAE128079AC91AF3AB7D8297D3F1499ECD0B5B6906647889313736E5EF5263FF9C5B7B4ADC62C93D6C17181D24BC0DAB26FE5A5A117C66110024D1A56DEA244DEF8080AD8A9D2E0B0EC9A7B5662A43CF00FFEF9567A7BCC49021487E547B71B591849381EC7297323200E906ADBF2540DC3538AFBAFC35CC89B0301C20332D1091C86528C2BD10ABB55A2623605E981650985B89562C85DEA1B1BA784BAA56EB742426D67A08E196FEA2AAADE87C5B52B0AA58A79CCB4AF4AD849B98CB3F9FB2F3A9B3E7DB85663550078BA6F36A850162A0ECFE6845BB58D7079698F070C7DB0686DFACF0D721E01238BF8095E57F1A0E99023A8173C97DAA871D03BC3F085EA49B2F4A462D1133594F903BD8B1E4541760C5914DB159D778877E891336A295810A871B529A2D79AAF28C33C6BB70F633A4EC1B67C70A2C60F034D8A7C73AFD182A523BFEC267327C71F1868111793B129E17F481753AA0587AC435C476895B1721F2B9815A7509126C143A4FC91BE743148B038536879586B8372646F29AC295BDA470A511EAD8AA360A2934C128A23274246B72B77D30A063CCBFF24300D1595B12093ED8973AEE27EEBFA7EFD49823380C797AB41081603A996400AC73AF4C4691AF0888414C543BC2673034C674198C1A74B32D46A3BC75DDF86385AB16166B623B2B984F51392C0C91D1C403319191D8332945EA76AA7710BACA277B5B4302CD0114C3BAA490024B0A990B15B1442304C882CB1B49B6A17B502884385C7DA2741016C184656EB141378666A5EB72ED485231EB816A2372FC0221511F4557282923403A3B546ADB460768D0012B0A30E07FC3E1B233E3D527DF13A856C4C5ABAA0CF7F3405EB76CC873A94268958CA861128360C423022CB605972332D0366CBEA721B648B2B4259B9F7C81B4396197A228638D622C321A1E99B5FA641427D01639DAB7EAEA41EB0E8A2405BC3C51225A66269C1C50814499E2F85A698319B5040442F762A878137DBD7C2D32A02AAB036C87906FB048173BC2323459292A2230247657F74A5788596AB6890906ACBA09230273A2C61682DC39B55F902C26C8553F42B6D01741DC48203949A9D71B49FBC366B47C37328455404C669CA163B6DF31CCCD82DEF1CBBC7319C89F6CE8FF6522D6883E3632F0127A9499C31E1C05D8A06298530612B0ACD0804B6E72C67577689788829E9C331F56937525096669A961DCA549F00A9FE40C4D480B56DB17131FFABAFD1DD0635942836FC2F0D95C9DC102FB89E6BEAB3E5473A16B43D6F2DA98D3A4F0000B39C34943AF8DC741BFB7B46DD7F2BD36809A452321C70E78B22772D139A27731B256C2E92F7D49A52488CDE4B4CC1B3A6EBB8686B5EEEB6D4BE" |
| 860 | + | ||
| 861 | +SDV_CRYPTO_MLKEM_DECAPS_DUP_API_TC001 ML-KEM 512 | ||
| 862 | +SDV_CRYPTO_MLKEM_DECAPS_DUP_API_TC001:CRYPT_KEM_TYPE_MLKEM_512 | ||
| 863 | + | ||
| 864 | +SDV_CRYPTO_MLKEM_DECAPS_DUP_API_TC001 ML-KEM 768 | ||
| 865 | +SDV_CRYPTO_MLKEM_DECAPS_DUP_API_TC001:CRYPT_KEM_TYPE_MLKEM_768 | ||
| 866 | + | ||
| 867 | +SDV_CRYPTO_MLKEM_DECAPS_DUP_API_TC001 ML-KEM 1024 | ||
| 868 | +SDV_CRYPTO_MLKEM_DECAPS_DUP_API_TC001:CRYPT_KEM_TYPE_MLKEM_1024 | ||
| @@ -1164,10 +1164,14 @@ void SDV_CRYPTO_RSA_DUP_CTX_API_TC001(Hex *e, int bits, int isProvider) | |||
| 1164 | CRYPT_EAL_PkeyCtx *newPkey = NULL; | 1164 | CRYPT_EAL_PkeyCtx *newPkey = NULL; |
| 1165 | CRYPT_EAL_PkeyCtx *pkey = NULL; | 1165 | CRYPT_EAL_PkeyCtx *pkey = NULL; |
| 1166 | SetRsaPara(¶, e->x, e->len, bits); | 1166 | SetRsaPara(¶, e->x, e->len, bits); |
| 1167 | - | 1167 | + uint8_t *sign = BSL_SAL_Malloc(bits / 8); |
| 1168 | + uint32_t signLen = bits / 8; | ||
| 1169 | + char *data = "Hello, openHiTLS"; | ||
| 1170 | + uint32_t dataLen = strlen(data); | ||
| 1168 | TestMemInit(); | 1171 | TestMemInit(); |
| 1169 | CRYPT_RandRegist(RandFunc); | 1172 | CRYPT_RandRegist(RandFunc); |
| 1170 | CRYPT_RandRegistEx(RandFuncEx); | 1173 | CRYPT_RandRegistEx(RandFuncEx); |
| 1174 | + int32_t pkcsv15 = CRYPT_MD_SHA224; | ||
| 1171 | 1175 | ||
| 1172 | pkey = TestPkeyNewCtx(NULL, CRYPT_PKEY_RSA, CRYPT_EAL_PKEY_KEYMGMT_OPERATE, "provider=default", isProvider); | 1176 | pkey = TestPkeyNewCtx(NULL, CRYPT_PKEY_RSA, CRYPT_EAL_PKEY_KEYMGMT_OPERATE, "provider=default", isProvider); |
| 1173 | ASSERT_TRUE(pkey != NULL); | 1177 | ASSERT_TRUE(pkey != NULL); |
| @@ -1196,7 +1200,12 @@ void SDV_CRYPTO_RSA_DUP_CTX_API_TC001(Hex *e, int bits, int isProvider) | |||
| 1196 | rsaCtx2->prvKey->d->data, | 1200 | rsaCtx2->prvKey->d->data, |
| 1197 | rsaCtx2->prvKey->d->size * sizeof(BN_UINT)); | 1201 | rsaCtx2->prvKey->d->size * sizeof(BN_UINT)); |
| 1198 | 1202 | ||
| 1203 | + ASSERT_EQ(CRYPT_EAL_PkeyCtrl(newPkey, CRYPT_CTRL_SET_RSA_EMSA_PKCSV15, &pkcsv15, sizeof(pkcsv15)), CRYPT_SUCCESS); | ||
| 1204 | + ASSERT_EQ(CRYPT_EAL_PkeySign(newPkey, CRYPT_MD_SHA224, (uint8_t *)data, dataLen, sign, &signLen), CRYPT_SUCCESS); | ||
| 1205 | + ASSERT_EQ(CRYPT_EAL_PkeyVerify(newPkey, CRYPT_MD_SHA224, (uint8_t *)data, dataLen, sign, signLen), CRYPT_SUCCESS); | ||
| 1206 | + | ||
| 1199 | EXIT: | 1207 | EXIT: |
| 1208 | + BSL_SAL_FREE(sign); | ||
| 1200 | CRYPT_EAL_PkeyFreeCtx(pkey); | 1209 | CRYPT_EAL_PkeyFreeCtx(pkey); |
| 1201 | CRYPT_EAL_PkeyFreeCtx(newPkey); | 1210 | CRYPT_EAL_PkeyFreeCtx(newPkey); |
| 1202 | TestRandDeInit(); | 1211 | TestRandDeInit(); |