已合并
feat: Support curve nistp192 and setting/getting generic extension #960
Ooohui创建于 2025年12月29日
feat: Support curve nistp192 and setting/getting generic extension #960
已合并
Ooohui创建于 2025年12月29日
47 个文件变更+1108-192
@@ -33,6 +33,10 @@ static BSL_SAL_ThreadLockHandle g_oidHashRwLock = NULL;
33static uint32_t g_oidHashInitOnce = BSL_SAL_ONCE_INIT;33static uint32_t g_oidHashInitOnce = BSL_SAL_ONCE_INIT;
34#endif // HITLS_BSL_HASH34#endif // HITLS_BSL_HASH
35 35 
36+#define BSL_OBJ_ARCS_X_MAX 2
37+#define BSL_OBJ_ARCS_Y_MAX 40
38+#define BSL_OBJ_ARCS_MAX (BSL_OBJ_ARCS_X_MAX * BSL_OBJ_ARCS_Y_MAX + BSL_OBJ_ARCS_Y_MAX - 1)
39+ 
36BslOidInfo g_oidTable[] = {40BslOidInfo g_oidTable[] = {
37 {{9, "\140\206\110\1\145\3\4\1\2", BSL_OID_GLOBAL}, "AES128-CBC", BSL_CID_AES128_CBC},41 {{9, "\140\206\110\1\145\3\4\1\2", BSL_OID_GLOBAL}, "AES128-CBC", BSL_CID_AES128_CBC},
38 {{9, "\140\206\110\1\145\3\4\1\26", BSL_OID_GLOBAL}, "AES192-CBC", BSL_CID_AES192_CBC},42 {{9, "\140\206\110\1\145\3\4\1\26", BSL_OID_GLOBAL}, "AES192-CBC", BSL_CID_AES192_CBC},
@@ -62,6 +66,7 @@ BslOidInfo g_oidTable[] = {
62 {{9, "\52\206\110\206\367\15\1\1\13", BSL_OID_GLOBAL}, "SHA256WITHRSA", BSL_CID_SHA256WITHRSAENCRYPTION},66 {{9, "\52\206\110\206\367\15\1\1\13", BSL_OID_GLOBAL}, "SHA256WITHRSA", BSL_CID_SHA256WITHRSAENCRYPTION},
63 {{9, "\52\206\110\206\367\15\1\1\14", BSL_OID_GLOBAL}, "SHA384WITHRSA", BSL_CID_SHA384WITHRSAENCRYPTION},67 {{9, "\52\206\110\206\367\15\1\1\14", BSL_OID_GLOBAL}, "SHA384WITHRSA", BSL_CID_SHA384WITHRSAENCRYPTION},
64 {{9, "\52\206\110\206\367\15\1\1\15", BSL_OID_GLOBAL}, "SHA512WITHRSA", BSL_CID_SHA512WITHRSAENCRYPTION},68 {{9, "\52\206\110\206\367\15\1\1\15", BSL_OID_GLOBAL}, "SHA512WITHRSA", BSL_CID_SHA512WITHRSAENCRYPTION},
69+ {{8, "\52\206\110\316\75\3\1\1", BSL_OID_GLOBAL}, "PRIME192V1", BSL_CID_PRIME192V1},
65 {{8, "\52\206\110\316\75\3\1\7", BSL_OID_GLOBAL}, "PRIME256V1", BSL_CID_PRIME256V1},70 {{8, "\52\206\110\316\75\3\1\7", BSL_OID_GLOBAL}, "PRIME256V1", BSL_CID_PRIME256V1},
66 {{9, "\52\206\110\206\367\15\1\5\14", BSL_OID_GLOBAL}, "PBKDF2", BSL_CID_PBKDF2},71 {{9, "\52\206\110\206\367\15\1\5\14", BSL_OID_GLOBAL}, "PBKDF2", BSL_CID_PBKDF2},
67 {{9, "\52\206\110\206\367\15\1\5\15", BSL_OID_GLOBAL}, "PBES2", BSL_CID_PBES2},72 {{9, "\52\206\110\206\367\15\1\5\15", BSL_OID_GLOBAL}, "PBES2", BSL_CID_PBES2},
@@ -523,4 +528,99 @@ void BSL_OBJ_FreeHashTable(void)
523}528}
524#endif // HITLS_BSL_HASH529#endif // HITLS_BSL_HASH
525 530 
531+static void BslEncodeOidPart(uint64_t num, uint8_t *output, uint32_t *offset)
532+{
533+ if (num < 0x80) {
534+ output[*offset] = num &0x7F;
535+ (*offset)++;
536+ } else {
537+ uint8_t temp[10]; // The data of uint64_t requires up to 10 bytes when encode in ASN1.
538+ int32_t i = 0;
539+ uint64_t t = num;
540+ while (t > 0) {
541+ temp[i] = (t & 0x7F) | 0x80;
542+ i++;
543+ t >>= 7; // Process 7 bits each time.
544+ }
545+ 
546+ temp[0] &= 0x7F;
547+ for (int32_t j = i - 1; j >= 0; j--) {
548+ output[*offset] = temp[j];
549+ (*offset)++;
550+ }
551+ }
552+}
553+ 
554+static bool BslEncodeOidValueCheck(uint64_t *parts, uint32_t count)
555+{
556+ // At least 2 pieces of data are required.
557+ if (count < 2 || parts[0] > BSL_OBJ_ARCS_X_MAX) {
558+ return false;
559+ }
560+ if (parts[1] >= BSL_OBJ_ARCS_Y_MAX) {
561+ return false;
562+ }
563+ return true;
564+}
565+ 
566+#define MAX_OID_PARTS_LEN 128
567+uint8_t *BSL_OBJ_GetOidFromNumericString(const char *oid, uint32_t len, uint32_t *outLen)
568+{
569+ if (len == 0 || oid == NULL || oid[0] == '.' || outLen == NULL || oid[len - 1] == '.') {
570+ BSL_ERR_PUSH_ERROR(BSL_INVALID_ARG);
571+ return NULL;
572+ }
573+ uint64_t parts[MAX_OID_PARTS_LEN];
574+ uint32_t count = 0;
575+ parts[count] = 0;
576+ 
577+ for (uint32_t i = 0; i < len; i++) {
578+ if (oid[i] > '9' || (oid[i] < '0' && oid[i] != '.')) {
579+ BSL_ERR_PUSH_ERROR(BSL_INVALID_ARG);
580+ return NULL;
581+ }
582+ if ((i < len - 1) && oid[i] == '.' && oid[i + 1] == '.') {
583+ BSL_ERR_PUSH_ERROR(BSL_INVALID_ARG);
584+ return NULL;
585+ }
586+ if (oid[i] != '.') {
587+ // Convert decimal string to number.
588+ if (parts[count] > (UINT64_MAX - (oid[i] - '0')) / 10) {
589+ BSL_ERR_PUSH_ERROR(BSL_INVALID_ARG);
590+ return NULL;
591+ }
592+ parts[count] = parts[count] * 10 + (oid[i] - '0');
593+ } else {
594+ count++;
595+ if (count >= MAX_OID_PARTS_LEN) {
596+ BSL_ERR_PUSH_ERROR(BSL_INVALID_ARG);
597+ return NULL;
598+ }
599+ parts[count] = 0;
600+ }
601+ }
602+ count++;
603+ 
604+ if (BslEncodeOidValueCheck(parts, count) != true) {
605+ BSL_ERR_PUSH_ERROR(BSL_INVALID_ARG);
606+ return NULL;
607+ }
608+ 
609+ uint32_t offset = 0;
610+ // The data of uint64_t requires up to 10 bytes when encode in ASN1.
611+ uint8_t *outBuf = BSL_SAL_Malloc(count * 10);
612+ if (outBuf == NULL) {
613+ BSL_ERR_PUSH_ERROR(BSL_MALLOC_FAIL);
614+ return NULL;
615+ }
616+ outBuf[0] = (uint8_t)(parts[0] * BSL_OBJ_ARCS_Y_MAX + parts[1]);
617+ offset++;
618+ 
619+ for (uint32_t i = 2; i < count; i++) {
620+ BslEncodeOidPart(parts[i], outBuf, &offset);
621+ }
622+ *outLen = offset;
623+ return outBuf;
624+}
625+ 
526#endif626#endif
@@ -106,6 +106,7 @@
106 },106 },
107 "pkey": {107 "pkey": {
108 "ecc": {108 "ecc": {
109+ "curve_nistp192": null,
109 "curve_nistp224": null,110 "curve_nistp224": null,
110 "curve_nistp256": null,111 "curve_nistp256": null,
111 "curve_nistp384": null,112 "curve_nistp384": null,
@@ -139,10 +140,10 @@
139 },140 },
140 "dsa": {"deps": ["bn_rand", "asn1", "obj"]},141 "dsa": {"deps": ["bn_rand", "asn1", "obj"]},
141 "dh": {"deps": ["bn_rand"]},142 "dh": {"deps": ["bn_rand"]},
142- "ecdh": {"opts": ["curve_nistp224", "curve_nistp256", "curve_nistp384", "curve_nistp521", "curve_bp256r1", "curve_bp384r1", "curve_bp512r1"]},143+ "ecdh": {"opts": ["curve_nistp192", "curve_nistp224", "curve_nistp256", "curve_nistp384", "curve_nistp521", "curve_bp256r1", "curve_bp384r1", "curve_bp512r1"]},
143 "ecdsa": {144 "ecdsa": {
144 "deps": ["asn1", "obj"],145 "deps": ["asn1", "obj"],
145- "opts": ["curve_nistp224", "curve_nistp256", "curve_nistp384", "curve_nistp521", "curve_bp256r1", "curve_bp384r1", "curve_bp512r1"]146+ "opts": ["curve_nistp192", "curve_nistp224", "curve_nistp256", "curve_nistp384", "curve_nistp521", "curve_bp256r1", "curve_bp384r1", "curve_bp512r1"]
146 },147 },
147 "curve25519": {148 "curve25519": {
148 "ed25519": {"deps": ["sha512"]},149 "ed25519": {"deps": ["sha512"]},
@@ -1133,7 +1134,7 @@
1133 "ecc": {1134 "ecc": {
1134 ".features": [1135 ".features": [
1135 "ecc",1136 "ecc",
1136- "curve_nistp224", "curve_nistp256", "curve_nistp384", "curve_nistp521",1137+ "curve_nistp192", "curve_nistp224", "curve_nistp256", "curve_nistp384", "curve_nistp521",
1137 "curve_bp256r1", "curve_bp384r1", "curve_bp512r1",1138 "curve_bp256r1", "curve_bp384r1", "curve_bp512r1",
1138 "curve_sm2"1139 "curve_sm2"
1139 ],1140 ],
@@ -701,7 +701,8 @@ chacha20poly1305, chacha20, rsa"
701 #if !defined(HITLS_CRYPTO_CURVE_NISTP224) && !defined(HITLS_CRYPTO_CURVE_NISTP256) && \701 #if !defined(HITLS_CRYPTO_CURVE_NISTP224) && !defined(HITLS_CRYPTO_CURVE_NISTP256) && \
702 !defined(HITLS_CRYPTO_CURVE_NISTP384) && !defined(HITLS_CRYPTO_CURVE_NISTP521) && \702 !defined(HITLS_CRYPTO_CURVE_NISTP384) && !defined(HITLS_CRYPTO_CURVE_NISTP521) && \
703 !defined(HITLS_CRYPTO_CURVE_BP256R1) && !defined(HITLS_CRYPTO_CURVE_BP384R1) && \703 !defined(HITLS_CRYPTO_CURVE_BP256R1) && !defined(HITLS_CRYPTO_CURVE_BP384R1) && \
704- !defined(HITLS_CRYPTO_CURVE_BP512R1) && !defined(HITLS_CRYPTO_CURVE_192WAPI)704+ !defined(HITLS_CRYPTO_CURVE_BP512R1) && !defined(HITLS_CRYPTO_CURVE_192WAPI) && \
705+ !defined(HITLS_CRYPTO_CURVE_NISTP192)
705 #error "[HiTLS] Nist curves or brainpool curves or 192Wapi curve must be enabled for ECDSA."706 #error "[HiTLS] Nist curves or brainpool curves or 192Wapi curve must be enabled for ECDSA."
706 #endif707 #endif
707#endif708#endif
@@ -710,7 +711,8 @@ chacha20poly1305, chacha20, rsa"
710 #if !defined(HITLS_CRYPTO_CURVE_NISTP224) && !defined(HITLS_CRYPTO_CURVE_NISTP256) && \711 #if !defined(HITLS_CRYPTO_CURVE_NISTP224) && !defined(HITLS_CRYPTO_CURVE_NISTP256) && \
711 !defined(HITLS_CRYPTO_CURVE_NISTP384) && !defined(HITLS_CRYPTO_CURVE_NISTP521) && \712 !defined(HITLS_CRYPTO_CURVE_NISTP384) && !defined(HITLS_CRYPTO_CURVE_NISTP521) && \
712 !defined(HITLS_CRYPTO_CURVE_BP256R1) && !defined(HITLS_CRYPTO_CURVE_BP384R1) && \713 !defined(HITLS_CRYPTO_CURVE_BP256R1) && !defined(HITLS_CRYPTO_CURVE_BP384R1) && \
713- !defined(HITLS_CRYPTO_CURVE_BP512R1) && !defined(HITLS_CRYPTO_CURVE_192WAPI)714+ !defined(HITLS_CRYPTO_CURVE_BP512R1) && !defined(HITLS_CRYPTO_CURVE_192WAPI) && \
715+ !defined(HITLS_CRYPTO_CURVE_NISTP192)
714 #error "[HiTLS] Nist curves or brainpool curves must be enabled for ECDH."716 #error "[HiTLS] Nist curves or brainpool curves must be enabled for ECDH."
715 #endif717 #endif
716#endif718#endif
@@ -540,6 +540,9 @@
540#endif540#endif
541 541 
542#ifdef HITLS_CRYPTO_ECC542#ifdef HITLS_CRYPTO_ECC
543+ #ifndef HITLS_CRYPTO_CURVE_NISTP192
544+ #define HITLS_CRYPTO_CURVE_NISTP192
545+ #endif
543 #ifndef HITLS_CRYPTO_CURVE_NISTP224546 #ifndef HITLS_CRYPTO_CURVE_NISTP224
544 #define HITLS_CRYPTO_CURVE_NISTP224547 #define HITLS_CRYPTO_CURVE_NISTP224
545 #endif548 #endif
@@ -569,7 +572,8 @@
569#if defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP256) || \572#if defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP256) || \
570 defined(HITLS_CRYPTO_CURVE_NISTP384) || defined(HITLS_CRYPTO_CURVE_NISTP521) || \573 defined(HITLS_CRYPTO_CURVE_NISTP384) || defined(HITLS_CRYPTO_CURVE_NISTP521) || \
571 defined(HITLS_CRYPTO_CURVE_BP256R1) || defined(HITLS_CRYPTO_CURVE_BP384R1) || \574 defined(HITLS_CRYPTO_CURVE_BP256R1) || defined(HITLS_CRYPTO_CURVE_BP384R1) || \
572- defined(HITLS_CRYPTO_CURVE_BP512R1) || defined(HITLS_CRYPTO_CURVE_SM2)575+ defined(HITLS_CRYPTO_CURVE_BP512R1) || defined(HITLS_CRYPTO_CURVE_SM2) || \
576+ defined(HITLS_CRYPTO_CURVE_NISTP192)
573 #ifndef HITLS_CRYPTO_ECC577 #ifndef HITLS_CRYPTO_ECC
574 #define HITLS_CRYPTO_ECC578 #define HITLS_CRYPTO_ECC
575 #endif579 #endif
@@ -776,12 +780,13 @@
776#endif780#endif
777 781 
778#if (!defined(HITLS_SIXTY_FOUR_BITS))782#if (!defined(HITLS_SIXTY_FOUR_BITS))
779- #if (((defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP521)) && \783+ #if defined(HITLS_CRYPTO_CURVE_NISTP192) || \
784+ ((defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP521)) && \
780 !defined(HITLS_CRYPTO_NIST_USE_ACCEL)) || \785 !defined(HITLS_CRYPTO_NIST_USE_ACCEL)) || \
781- defined(HITLS_CRYPTO_CURVE_NISTP384) || \786+ (HITLS_CRYPTO_CURVE_NISTP384) || \
782- (defined(HITLS_CRYPTO_CURVE_NISTP256) && !defined(HITLS_CRYPTO_CURVE_NISTP256_ASM) && \787+ (defined(HITLS_CRYPTO_CURVE_NISTP256) && (!defined(HITLS_CRYPTO_CURVE_NISTP256_ASM) || \
783- (!defined(HITLS_CRYPTO_NIST_ECC_ACCELERATE)) && (!defined(HITLS_CRYPTO_NIST_USE_ACCEL))) || \788+ (!defined(HITLS_CRYPTO_NIST_ECC_ACCELERATE))) && (!defined(HITLS_CRYPTO_NIST_USE_ACCEL))) || \
784- (defined(HITLS_CRYPTO_CURVE_SM2) && !defined(HITLS_CRYPTO_CURVE_SM2_ASM)))789+ (defined(HITLS_CRYPTO_CURVE_SM2) && !defined(HITLS_CRYPTO_CURVE_SM2_ASM))
785 #define HITLS_CRYPTO_CURVE_MONT_NIST790 #define HITLS_CRYPTO_CURVE_MONT_NIST
786 #endif791 #endif
787#endif792#endif
@@ -750,33 +750,16 @@ int32_t ModSm2P256(BN_BigNum *r, const BN_BigNum *a, const BN_BigNum *m, BN_Opti
750 750 
751#elif defined(HITLS_THIRTY_TWO_BITS)751#elif defined(HITLS_THIRTY_TWO_BITS)
752 752 
753-int32_t ModNistP224(BN_BigNum *r, const BN_BigNum *a, const BN_BigNum *m, BN_Optimizer *opt)753+#define ModNistP192(r, a, m, opt) BN_Mod(r, a, m, opt)
754-{754+#define ModNistP224(r, a, m, opt) BN_Mod(r, a, m, opt)
755- return BN_Mod(r, a, m, opt);755+#define ModNistP256(r, a, m, opt) BN_Mod(r, a, m, opt)
756-}756+#define ModNistP384(r, a, m, opt) BN_Mod(r, a, m, opt)
757- 757+#define ModNistP521(r, a, m, opt) BN_Mod(r, a, m, opt)
758-int32_t ModNistP256(BN_BigNum *r, const BN_BigNum *a, const BN_BigNum *m, BN_Optimizer *opt)
759-{
760- return BN_Mod(r, a, m, opt);
761-}
762 758 
763#ifdef HITLS_CRYPTO_CURVE_SM2759#ifdef HITLS_CRYPTO_CURVE_SM2
764-int32_t ModSm2P256(BN_BigNum *r, const BN_BigNum *a, const BN_BigNum *m, BN_Optimizer *opt)760+#define ModSm2P256(r, a, m, opt) BN_Mod(r, a, m, opt)
765-{
766- return BN_Mod(r, a, m, opt);
767-}
768#endif761#endif
769 762 
770-int32_t ModNistP384(BN_BigNum *r, const BN_BigNum *a, const BN_BigNum *m, BN_Optimizer *opt)
771-{
772- return BN_Mod(r, a, m, opt);
773-}
774- 
775-int32_t ModNistP521(BN_BigNum *r, const BN_BigNum *a, const BN_BigNum *m, BN_Optimizer *opt)
776-{
777- return BN_Mod(r, a, m, opt);
778-}
779- 
780#endif763#endif
781 764 
782#if defined(HITLS_CRYPTO_BN_COMBA) && defined(HITLS_SIXTY_FOUR_BITS)765#if defined(HITLS_CRYPTO_BN_COMBA) && defined(HITLS_SIXTY_FOUR_BITS)
@@ -848,27 +831,11 @@ static uint32_t SqrNistP384(BN_UINT *r, uint32_t rSize, const BN_UINT *a, uint32
848 return size;831 return size;
849}832}
850#else833#else
851-static uint32_t MulNistP256P224(BN_UINT *r, uint32_t rSize, const BN_UINT *a, uint32_t aSize,
852- const BN_UINT *b, uint32_t bSize)
853-{
854- return BinMul(r, rSize, a, aSize, b, bSize);
855-}
856 834 
857-static uint32_t SqrNistP256P224(BN_UINT *r, uint32_t rSize, const BN_UINT *a, uint32_t aSize)835+#define MulNistP256P224(r, rSize, a, aSize, b, bSize) BinMul(r, rSize, a, aSize, b, bSize)
858-{836+#define SqrNistP256P224(r, rSize, a, aSize) BinSqr(r, rSize, a, aSize)
859- return BinSqr(r, rSize, a, aSize);837+#define MulNistP384(r, rSize, a, aSize, b, bSize) BinMul(r, rSize, a, aSize, b, bSize)
860-}838+#define SqrNistP384(r, rSize, a, aSize) BinSqr(r, rSize, a, aSize)
861- 
862-static uint32_t MulNistP384(BN_UINT *r, uint32_t rSize, const BN_UINT *a, uint32_t aSize,
863- const BN_UINT *b, uint32_t bSize)
864-{
865- return BinMul(r, rSize, a, aSize, b, bSize);
866-}
867- 
868-static uint32_t SqrNistP384(BN_UINT *r, uint32_t rSize, const BN_UINT *a, uint32_t aSize)
869-{
870- return BinSqr(r, rSize, a, aSize);
871-}
872 839 
873#endif840#endif
874 841 
@@ -972,6 +939,8 @@ int32_t BN_ModNistEccMul(BN_BigNum *r, const BN_BigNum *a, const BN_BigNum *b, v
972 } else if (bits == 521) { // 521bit939 } else if (bits == 521) { // 521bit
973 rMul.size = BinMul(rMul.data, size, a->data, mod->size, b->data, mod->size);940 rMul.size = BinMul(rMul.data, size, a->data, mod->size, b->data, mod->size);
974 ModNistP521(r, &rMul, mod, opt);941 ModNistP521(r, &rMul, mod, opt);
942+ } else if (bits == 192) { // 192bit
943+ return BN_ModMul(r, a, b, mod, opt);
975 } else {944 } else {
976 BSL_ERR_PUSH_ERROR(CRYPT_BN_ERR_QUICK_MODDATA);945 BSL_ERR_PUSH_ERROR(CRYPT_BN_ERR_QUICK_MODDATA);
977 return CRYPT_BN_ERR_QUICK_MODDATA;946 return CRYPT_BN_ERR_QUICK_MODDATA;
@@ -1026,6 +995,8 @@ int32_t BN_ModNistEccSqr(BN_BigNum *r, const BN_BigNum *a, void *data, BN_Optimi
1026 } else if (bits == 521) { // 521bit995 } else if (bits == 521) { // 521bit
1027 rSqr.size = BinSqr(rSqr.data, size, a->data, mod->size);996 rSqr.size = BinSqr(rSqr.data, size, a->data, mod->size);
1028 ModNistP521(r, &rSqr, mod, opt);997 ModNistP521(r, &rSqr, mod, opt);
998+ } else if (bits == 192) { // 192bit
999+ return BN_ModSqr(r, a, mod, opt);
1029 } else {1000 } else {
1030 BSL_ERR_PUSH_ERROR(CRYPT_BN_ERR_QUICK_MODDATA);1001 BSL_ERR_PUSH_ERROR(CRYPT_BN_ERR_QUICK_MODDATA);
1031 return CRYPT_BN_ERR_QUICK_MODDATA;1002 return CRYPT_BN_ERR_QUICK_MODDATA;
@@ -211,7 +211,7 @@ int32_t CRYPT_ENCODE_RsaPubkeyAsn1Buff(BSL_ASN1_Buffer *pubAsn1, BSL_Buffer *enc
211 211 
212static inline bool IsEcdsaEcParaId(int32_t paraId)212static inline bool IsEcdsaEcParaId(int32_t paraId)
213{213{
214- return paraId == CRYPT_ECC_NISTP224 || paraId == CRYPT_ECC_NISTP256 ||214+ return paraId == CRYPT_ECC_NISTP192 || paraId == CRYPT_ECC_NISTP224 || paraId == CRYPT_ECC_NISTP256 ||
215 paraId == CRYPT_ECC_NISTP384 || paraId == CRYPT_ECC_NISTP521 ||215 paraId == CRYPT_ECC_NISTP384 || paraId == CRYPT_ECC_NISTP521 ||
216 paraId == CRYPT_ECC_BRAINPOOLP256R1 || paraId == CRYPT_ECC_BRAINPOOLP384R1 ||216 paraId == CRYPT_ECC_BRAINPOOLP256R1 || paraId == CRYPT_ECC_BRAINPOOLP384R1 ||
217 paraId == CRYPT_ECC_BRAINPOOLP512R1;217 paraId == CRYPT_ECC_BRAINPOOLP512R1;
@@ -30,11 +30,12 @@ typedef struct {
30} ECC_MethodMap;30} ECC_MethodMap;
31 31 
32#if defined(HITLS_SIXTY_FOUR_BITS)32#if defined(HITLS_SIXTY_FOUR_BITS)
33-#if (((defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP521)) && \33+#if defined(HITLS_CRYPTO_CURVE_NISTP192) || \
34+ ((defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP521)) && \
34 !defined(HITLS_CRYPTO_NIST_USE_ACCEL)) || \35 !defined(HITLS_CRYPTO_NIST_USE_ACCEL)) || \
35 defined(HITLS_CRYPTO_CURVE_NISTP384) || \36 defined(HITLS_CRYPTO_CURVE_NISTP384) || \
36 (defined(HITLS_CRYPTO_CURVE_NISTP256) && (!defined(HITLS_CRYPTO_CURVE_NISTP256_ASM) || \37 (defined(HITLS_CRYPTO_CURVE_NISTP256) && (!defined(HITLS_CRYPTO_CURVE_NISTP256_ASM) || \
37- (!defined(HITLS_CRYPTO_NIST_ECC_ACCELERATE))) && (!defined(HITLS_CRYPTO_NIST_USE_ACCEL))))38+ (!defined(HITLS_CRYPTO_NIST_ECC_ACCELERATE))) && (!defined(HITLS_CRYPTO_NIST_USE_ACCEL)))
38static const ECC_Method EC_METHOD_NIST = {39static const ECC_Method EC_METHOD_NIST = {
39 .pointMulAdd = ECP_PointMulAdd,40 .pointMulAdd = ECP_PointMulAdd,
40 .pointMul = ECP_PointMul,41 .pointMul = ECP_PointMul,
@@ -187,6 +188,15 @@ static const ECC_Method EC_METHOD_NIST_P256 = {
187#endif188#endif
188 189 
189static const ECC_MethodMap EC_METHODS[] = {190static const ECC_MethodMap EC_METHODS[] = {
191+// p192
192+#ifdef HITLS_CRYPTO_CURVE_NISTP192
193+ #ifdef HITLS_SIXTY_FOUR_BITS
194+ { CRYPT_ECC_NISTP192, &EC_METHOD_NIST }, // Common nist cal + fast modulus reduction of Bn
195+ #else
196+ { CRYPT_ECC_NISTP192, &EC_METHOD_NIST_MONT },
197+ #endif
198+#endif
199+ 
190// p224200// p224
191#ifdef HITLS_CRYPTO_CURVE_NISTP224201#ifdef HITLS_CRYPTO_CURVE_NISTP224
192 #ifdef HITLS_CRYPTO_NIST_USE_ACCEL202 #ifdef HITLS_CRYPTO_NIST_USE_ACCEL
@@ -43,12 +43,44 @@ typedef struct {
43 43 
44#if defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP256) || \44#if defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP256) || \
45 defined(HITLS_CRYPTO_CURVE_NISTP384) || defined(HITLS_CRYPTO_CURVE_NISTP521) || \45 defined(HITLS_CRYPTO_CURVE_NISTP384) || defined(HITLS_CRYPTO_CURVE_NISTP521) || \
46- defined(HITLS_CRYPTO_CURVE_SM2)46+ defined(HITLS_CRYPTO_CURVE_NISTP192) || defined(HITLS_CRYPTO_CURVE_SM2)
47static const uint8_t NIST_P_H[] = {47static const uint8_t NIST_P_H[] = {
48 0x0148 0x01
49};49};
50#endif50#endif
51 51 
52+#ifdef HITLS_CRYPTO_CURVE_NISTP192
53+static const uint8_t NIST_P192_P[] = {
54+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
55+ 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
56+};
57+ 
58+static const uint8_t NIST_P192_A[] = {
59+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
60+ 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc
61+};
62+ 
63+static const uint8_t NIST_P192_B[] = {
64+ 0x64, 0x21, 0x05, 0x19, 0xe5, 0x9c, 0x80, 0xe7, 0x0f, 0xa7, 0xe9, 0xab,
65+ 0x72, 0x24, 0x30, 0x49, 0xfe, 0xb8, 0xde, 0xec, 0xc1, 0x46, 0xb9, 0xb1
66+};
67+ 
68+static const uint8_t NIST_P192_X[] = {
69+ 0x18, 0x8d, 0xa8, 0x0e, 0xb0, 0x30, 0x90, 0xf6, 0x7c, 0xbf, 0x20, 0xeb,
70+ 0x43, 0xa1, 0x88, 0x00, 0xf4, 0xff, 0x0a, 0xfd, 0x82, 0xff, 0x10, 0x12
71+};
72+ 
73+static const uint8_t NIST_P192_Y[] = {
74+ 0x07, 0x19, 0x2b, 0x95, 0xff, 0xc8, 0xda, 0x78, 0x63, 0x10, 0x11, 0xed,
75+ 0x6b, 0x24, 0xcd, 0xd5, 0x73, 0xf9, 0x77, 0xa1, 0x1e, 0x79, 0x48, 0x11
76+};
77+ 
78+static const uint8_t NIST_P192_N[] = {
79+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
80+ 0x99, 0xde, 0xf8, 0x36, 0x14, 0x6b, 0xc9, 0xb1, 0xb4, 0xd2, 0x28, 0x31
81+};
82+#endif
83+ 
52#ifdef HITLS_CRYPTO_CURVE_NISTP22484#ifdef HITLS_CRYPTO_CURVE_NISTP224
53static const uint8_t NIST_P224_P[] = {85static const uint8_t NIST_P224_P[] = {
54 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,86 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
@@ -355,7 +387,7 @@ static const uint8_t NIST_SM2_N[] = {
355 387 
356#if defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP256) || \388#if defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP256) || \
357 defined(HITLS_CRYPTO_CURVE_NISTP384) || defined(HITLS_CRYPTO_CURVE_NISTP521) || \389 defined(HITLS_CRYPTO_CURVE_NISTP384) || defined(HITLS_CRYPTO_CURVE_NISTP521) || \
358- defined(HITLS_CRYPTO_CURVE_SM2)390+ defined(HITLS_CRYPTO_CURVE_NISTP192) || defined(HITLS_CRYPTO_CURVE_SM2)
359#define CRYPT_CURVE_PARA_DECLARE(name) \391#define CRYPT_CURVE_PARA_DECLARE(name) \
360 static const CURVE_Para paraNist##name = { \392 static const CURVE_Para paraNist##name = { \
361 .p.data = NIST_##name##_P, \393 .p.data = NIST_##name##_P, \
@@ -395,6 +427,9 @@ static const uint8_t NIST_SM2_N[] = {
395 }427 }
396#endif428#endif
397 429 
430+#ifdef HITLS_CRYPTO_CURVE_NISTP192
431+CRYPT_CURVE_PARA_DECLARE(P192);
432+#endif
398#ifdef HITLS_CRYPTO_CURVE_NISTP224433#ifdef HITLS_CRYPTO_CURVE_NISTP224
399CRYPT_CURVE_PARA_DECLARE(P224);434CRYPT_CURVE_PARA_DECLARE(P224);
400#endif435#endif
@@ -427,6 +462,9 @@ typedef struct {
427} CURVE_ParaMap;462} CURVE_ParaMap;
428 463 
429static const CURVE_ParaMap CURVE_PARAS[] = {464static const CURVE_ParaMap CURVE_PARAS[] = {
465+#ifdef HITLS_CRYPTO_CURVE_NISTP192
466+ { CRYPT_ECC_NISTP192, &paraNistP192 },
467+#endif
430#ifdef HITLS_CRYPTO_CURVE_NISTP224468#ifdef HITLS_CRYPTO_CURVE_NISTP224
431 { CRYPT_ECC_NISTP224, &paraNistP224 },469 { CRYPT_ECC_NISTP224, &paraNistP224 },
432#endif470#endif
@@ -346,6 +346,7 @@ ERR:
346static const char *EcCurveId2nist(CRYPT_PKEY_ParaId id)346static const char *EcCurveId2nist(CRYPT_PKEY_ParaId id)
347{347{
348 static EC_NAME nistCurves[] = {348 static EC_NAME nistCurves[] = {
349+ {"P-192", CRYPT_ECC_NISTP192},
349 {"P-224", CRYPT_ECC_NISTP224},350 {"P-224", CRYPT_ECC_NISTP224},
350 {"P-256", CRYPT_ECC_NISTP256},351 {"P-256", CRYPT_ECC_NISTP256},
351 {"P-384", CRYPT_ECC_NISTP384},352 {"P-384", CRYPT_ECC_NISTP384},
@@ -24,7 +24,8 @@
24#include "ecc_local.h"24#include "ecc_local.h"
25 25 
26#if defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP256) || \26#if defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP256) || \
27- defined(HITLS_CRYPTO_CURVE_NISTP384) || defined(HITLS_CRYPTO_CURVE_NISTP521) || defined(HITLS_CRYPTO_CURVE_SM2)27+ defined(HITLS_CRYPTO_CURVE_NISTP384) || defined(HITLS_CRYPTO_CURVE_NISTP521) || defined(HITLS_CRYPTO_CURVE_SM2) || \
28+ defined(HITLS_CRYPTO_CURVE_NISTP192)
28 29 
29static int32_t CreatTmpBn(BN_BigNum **t1, BN_BigNum **t2, BN_BigNum **t3, BN_BigNum **t4, uint32_t bits)30static int32_t CreatTmpBn(BN_BigNum **t1, BN_BigNum **t2, BN_BigNum **t3, BN_BigNum **t4, uint32_t bits)
30{31{
@@ -49,9 +49,9 @@ int32_t ECP_PointAtInfinity(const ECC_Para *para, const ECC_Point *pt)
49// Check whether the point is on the curve.49// Check whether the point is on the curve.
50int32_t ECP_PointOnCurve(const ECC_Para *para, const ECC_Point *pt)50int32_t ECP_PointOnCurve(const ECC_Para *para, const ECC_Point *pt)
51{51{
52- int32_t ret = 0;52+ uint32_t nistList[] = {CRYPT_ECC_NISTP192, CRYPT_ECC_NISTP224, CRYPT_ECC_NISTP256, CRYPT_ECC_NISTP384,
53- uint32_t nistList[] = {CRYPT_ECC_NISTP224, CRYPT_ECC_NISTP256, CRYPT_ECC_NISTP384, CRYPT_ECC_NISTP521};53+ CRYPT_ECC_NISTP521};
54- ret = ECP_PointAtInfinity(para, pt);54+ int32_t ret = ECP_PointAtInfinity(para, pt);
55 if (ret != CRYPT_SUCCESS) {55 if (ret != CRYPT_SUCCESS) {
56 return ret;56 return ret;
57 }57 }
@@ -625,6 +625,16 @@ BslOidString *BSL_OBJ_GetOID(BslCid ulCID);
625 */625 */
626BslCid BSL_OBJ_GetCID(const BslOidString *oidStr);626BslCid BSL_OBJ_GetCID(const BslOidString *oidStr);
627 627 
628+/**
629+ * @ingroup bsl_obj
630+ * @brief Get oid hex string from the number string
631+ * @param[in] oid The number string
632+ * @param[in] len The number string length
633+ * @param[out] outLen The length of hex string
634+ * @return Oid hex number
635+ */
636+uint8_t *BSL_OBJ_GetOidFromNumericString(const char *oid, uint32_t len, uint32_t *outLen);
637+ 
628#ifdef __cplusplus638#ifdef __cplusplus
629}639}
630#endif640#endif
@@ -205,6 +205,7 @@ typedef enum {
205 CRYPT_DH_RFC7919_4096 = BSL_CID_DH_RFC7919_4096,205 CRYPT_DH_RFC7919_4096 = BSL_CID_DH_RFC7919_4096,
206 CRYPT_DH_RFC7919_6144 = BSL_CID_DH_RFC7919_6144,206 CRYPT_DH_RFC7919_6144 = BSL_CID_DH_RFC7919_6144,
207 CRYPT_DH_RFC7919_8192 = BSL_CID_DH_RFC7919_8192,207 CRYPT_DH_RFC7919_8192 = BSL_CID_DH_RFC7919_8192,
208+ CRYPT_ECC_NISTP192 = BSL_CID_PRIME192V1,
208 CRYPT_ECC_NISTP224 = BSL_CID_NIST_PRIME224,209 CRYPT_ECC_NISTP224 = BSL_CID_NIST_PRIME224,
209 CRYPT_ECC_NISTP256 = BSL_CID_PRIME256V1,210 CRYPT_ECC_NISTP256 = BSL_CID_PRIME256V1,
210 CRYPT_ECC_NISTP384 = BSL_CID_SECP384R1,211 CRYPT_ECC_NISTP384 = BSL_CID_SECP384R1,
@@ -89,6 +89,8 @@ typedef enum {
89 HITLS_X509_EXT_SET_BCONS, /** Set the basic constraints extension. */89 HITLS_X509_EXT_SET_BCONS, /** Set the basic constraints extension. */
90 HITLS_X509_EXT_SET_EXKUSAGE, /** Set the extended key usage extension. */90 HITLS_X509_EXT_SET_EXKUSAGE, /** Set the extended key usage extension. */
91 HITLS_X509_EXT_SET_CRLNUMBER, /** Set the crlnumber extension. */91 HITLS_X509_EXT_SET_CRLNUMBER, /** Set the crlnumber extension. */
92+ HITLS_X509_EXT_SET_GENERIC, /** Set a generic extension by OID.
93+ Note: Only supported for custom extensions. */
92 94 
93 HITLS_X509_EXT_GET_SKI = 0x0500, /** Get Subject Key Identifier from extensions.95 HITLS_X509_EXT_GET_SKI = 0x0500, /** Get Subject Key Identifier from extensions.
94 Note: Kid is a shallow copy. */96 Note: Kid is a shallow copy. */
@@ -96,6 +98,10 @@ typedef enum {
96 HITLS_X509_EXT_GET_AKI, /** get the Authority Key Identifier form the crl/cert/csr. */98 HITLS_X509_EXT_GET_AKI, /** get the Authority Key Identifier form the crl/cert/csr. */
97 HITLS_X509_EXT_GET_KUSAGE, /** get the key usage form the crl/cert/csr.99 HITLS_X509_EXT_GET_KUSAGE, /** get the key usage form the crl/cert/csr.
98 Note: If key usage is not set, return 0xffff. */100 Note: If key usage is not set, return 0xffff. */
101+ HITLS_X509_EXT_GET_BCONS, /** Not supported yet. */
102+ HITLS_X509_EXT_GET_SAN, /** Not supported yet. */
103+ HITLS_X509_EXT_GET_GENERIC, /** Get a generic extension by OID.
104+ Note: Only supported for custom extensions. */
99 105 
100 HITLS_X509_EXT_CHECK_SKI = 0x0600, /** Check if ski is exists. */106 HITLS_X509_EXT_CHECK_SKI = 0x0600, /** Check if ski is exists. */
101 107 
@@ -220,6 +226,29 @@ typedef struct {
220 BSL_Buffer crlNumber; // crlNumber226 BSL_Buffer crlNumber; // crlNumber
221} HITLS_X509_ExtCrlNumber;227} HITLS_X509_ExtCrlNumber;
222 228 
229+/**
230+ * Generic extension for setting/getting arbitrary extensions by OID
231+ *
232+ * For SET operation (HITLS_X509_EXT_SET_GENERIC):
233+ * - oid: Input, DER-encoded OID buffer (can be converted from dot-notation using BSL_OBJ_GetOidFromNumericString)
234+ * - value: Input, DER-encoded extension value
235+ * - critical: Input, critical flag
236+ *
237+ * For GET operation (HITLS_X509_EXT_GET_GENERIC):
238+ * - oid: Input, DER-encoded OID buffer (used to search for the extension)
239+ * - value: Must be NULL on input (function will allocate memory and fill it
240+ * with DER-encoded extension value)
241+ * - critical: Output, critical flag
242+ *
243+ * Note: After GET operation, caller must free the memory allocated for value
244+ * field using the appropriate buffer free function.
245+ */
246+typedef struct {
247+ bool critical; /**< Critical flag of the extension */
248+ BSL_Buffer oid; /**< DER-encoded OID buffer */
249+ BSL_Buffer value; /**< DER-encoded extension value */
250+} HITLS_X509_ExtGeneric;
251+ 
223typedef struct {252typedef struct {
224 bool critical;253 bool critical;
225 BSL_TIME time;254 BSL_TIME time;
@@ -760,8 +760,9 @@ int32_t HITLS_X509_CertCtrl(HITLS_X509_Cert *cert, int32_t cmd, void *val, uint3
760#endif760#endif
761 } else if (cmd <= HITLS_X509_EXT_CHECK_SKI) {761 } else if (cmd <= HITLS_X509_EXT_CHECK_SKI) {
762 static int32_t cmdSet[] = {HITLS_X509_EXT_SET_SKI, HITLS_X509_EXT_SET_AKI, HITLS_X509_EXT_SET_KUSAGE,762 static int32_t cmdSet[] = {HITLS_X509_EXT_SET_SKI, HITLS_X509_EXT_SET_AKI, HITLS_X509_EXT_SET_KUSAGE,
763- HITLS_X509_EXT_SET_SAN, HITLS_X509_EXT_SET_BCONS, HITLS_X509_EXT_SET_EXKUSAGE, HITLS_X509_EXT_GET_SKI,763+ HITLS_X509_EXT_SET_SAN, HITLS_X509_EXT_SET_BCONS, HITLS_X509_EXT_SET_EXKUSAGE, HITLS_X509_EXT_SET_GENERIC,
764- HITLS_X509_EXT_GET_AKI, HITLS_X509_EXT_CHECK_SKI, HITLS_X509_EXT_GET_KUSAGE};764+ HITLS_X509_EXT_GET_SKI, HITLS_X509_EXT_GET_AKI, HITLS_X509_EXT_CHECK_SKI, HITLS_X509_EXT_GET_KUSAGE,
765+ HITLS_X509_EXT_GET_GENERIC};
765 if (!X509_CheckCmdValid(cmdSet, sizeof(cmdSet) / sizeof(int32_t), cmd)) {766 if (!X509_CheckCmdValid(cmdSet, sizeof(cmdSet) / sizeof(int32_t), cmd)) {
766 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_EXT_UNSUPPORT);767 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_EXT_UNSUPPORT);
767 return HITLS_X509_ERR_EXT_UNSUPPORT;768 return HITLS_X509_ERR_EXT_UNSUPPORT;
@@ -146,7 +146,6 @@ static int32_t CmpExtByCid(const void *pExt, const void *pCid)
146 return cid == ext->cid ? 0 : HITLS_X509_EXT_NOT_FOUND;146 return cid == ext->cid ? 0 : HITLS_X509_EXT_NOT_FOUND;
147}147}
148 148 
149-#if defined(HITLS_PKI_X509_CRT_PARSE) || defined(HITLS_PKI_X509_CRL_PARSE) || defined(HITLS_PKI_X509_CSR)
150static int32_t CmpExtByOid(const void *pExt, const void *pOid)149static int32_t CmpExtByOid(const void *pExt, const void *pOid)
151{150{
152 const HITLS_X509_ExtEntry *ext = pExt;151 const HITLS_X509_ExtEntry *ext = pExt;
@@ -157,6 +156,7 @@ static int32_t CmpExtByOid(const void *pExt, const void *pOid)
157 return memcmp(ext->extnId.buff, oid->buff, oid->len) == 0 ? 0 : HITLS_X509_EXT_NOT_FOUND;156 return memcmp(ext->extnId.buff, oid->buff, oid->len) == 0 ? 0 : HITLS_X509_EXT_NOT_FOUND;
158}157}
159 158 
159+#if defined(HITLS_PKI_X509_CRT_PARSE) || defined(HITLS_PKI_X509_CRL_PARSE) || defined(HITLS_PKI_X509_CSR)
160static int32_t ParseExtKeyUsage(HITLS_X509_ExtEntry *extEntry, HITLS_X509_CertExt *ext)160static int32_t ParseExtKeyUsage(HITLS_X509_ExtEntry *extEntry, HITLS_X509_CertExt *ext)
161{161{
162 uint32_t len;162 uint32_t len;
@@ -644,58 +644,7 @@ int32_t HITLS_X509_ParseExtItem(BSL_ASN1_Buffer *extItem, HITLS_X509_ExtEntry *e
644 extEntry->extnValue = asnArr[HITLS_X509_EXT_VALUE_IDX];644 extEntry->extnValue = asnArr[HITLS_X509_EXT_VALUE_IDX];
645 return ret;645 return ret;
646}646}
647-#endif
648 647 
649-#if defined(HITLS_PKI_X509_CRT_GEN) || defined(HITLS_PKI_X509_CRL_GEN) || defined(HITLS_PKI_X509_CSR_GEN)
650-static void FreeExtEntryCont(HITLS_X509_ExtEntry *entry)
651-{
652- BSL_SAL_FREE(entry->extnId.buff);
653- BSL_SAL_FREE(entry->extnValue.buff);
654- entry->extnId.len = 0;
655- entry->extnValue.len = 0;
656-}
657- 
658-static int32_t GetExtEntryByCid(BslList *extList, BslCid cid, HITLS_X509_ExtEntry **entry, bool *isNew)
659-{
660- BslOidString *oid = BSL_OBJ_GetOID(cid);
661- if (oid == NULL) {
662- BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_EXT_OID);
663- return HITLS_X509_ERR_EXT_OID;
664- }
665- HITLS_X509_ExtEntry *extEntry = BSL_LIST_Search(extList, &cid, CmpExtByCid, NULL);
666- if (extEntry != NULL) {
667- *isNew = false;
668- FreeExtEntryCont(extEntry);
669- extEntry->critical = false;
670- } else {
671- extEntry = BSL_SAL_Calloc(1, sizeof(HITLS_X509_ExtEntry));
672- if (extEntry == NULL) {
673- BSL_ERR_PUSH_ERROR(BSL_MALLOC_FAIL);
674- return BSL_MALLOC_FAIL;
675- }
676- *isNew = true;
677- }
678- 
679- extEntry->cid = cid;
680- extEntry->extnId.tag = BSL_ASN1_TAG_OBJECT_ID;
681- extEntry->extnId.len = oid->octetLen;
682- if (extEntry->extnId.len != 0) {
683- extEntry->extnId.buff = BSL_SAL_Dump(oid->octs, oid->octetLen);
684- if (extEntry->extnId.buff == NULL) {
685- if (*isNew) {
686- BSL_SAL_Free(extEntry);
687- }
688- BSL_ERR_PUSH_ERROR(BSL_DUMP_FAIL);
689- return BSL_DUMP_FAIL;
690- }
691- }
692- extEntry->extnValue.tag = BSL_ASN1_TAG_OCTETSTRING;
693- *entry = extEntry;
694- return HITLS_PKI_SUCCESS;
695-}
696-#endif
697- 
698-#if defined(HITLS_PKI_X509_CRT_PARSE) || defined(HITLS_PKI_X509_CRL_PARSE) || defined(HITLS_PKI_X509_CSR)
699static int32_t ParseExtAsnItem(BSL_ASN1_Buffer *asn, void *param, BSL_ASN1_List *list)648static int32_t ParseExtAsnItem(BSL_ASN1_Buffer *asn, void *param, BSL_ASN1_List *list)
700{649{
701 HITLS_X509_Ext *ext = param;650 HITLS_X509_Ext *ext = param;
@@ -1099,45 +1048,120 @@ static int32_t SetExtCrlNumber(HITLS_X509_Ext *ext, HITLS_X509_ExtEntry *entry,
1099 return ret;1048 return ret;
1100}1049}
1101 1050 
1102-int32_t HITLS_X509_SetExtList(void *param, BslList *extList, BslCid cid, BSL_Buffer *val, EncodeExtCb encodeExt)1051+static int32_t SetExtGeneric(HITLS_X509_Ext *ext, HITLS_X509_ExtEntry *entry, const void *val)
1103{1052{
1104- HITLS_X509_ExtEntry *extEntry = NULL;1053+ (void)ext;
1105- bool isNew;1054+ const HITLS_X509_ExtGeneric *generic = (const HITLS_X509_ExtGeneric *)val;
1106- int32_t ret = GetExtEntryByCid(extList, cid, &extEntry, &isNew);
1107- if (ret != HITLS_PKI_SUCCESS) {
1108- return ret;
1109- }
1110 1055 
1111- ret = encodeExt(param, extEntry, val->data);1056+ entry->critical = generic->critical;
1112- if (ret != HITLS_PKI_SUCCESS) {1057+ 
1113- FreeExtEntryCont(extEntry);1058+ entry->extnValue.len = generic->value.dataLen;
1114- if (isNew) {1059+ entry->extnValue.buff = BSL_SAL_Dump(generic->value.data, generic->value.dataLen);
1115- BSL_SAL_Free(extEntry);1060+ if (entry->extnValue.buff == NULL) {
1116- }1061+ BSL_ERR_PUSH_ERROR(BSL_DUMP_FAIL);
1117- return ret;1062+ return BSL_DUMP_FAIL;
1118- }
1119- if (isNew) {
1120- ret = BSL_LIST_AddElement(extList, extEntry, BSL_LIST_POS_END);
1121- if (ret != BSL_SUCCESS) {
1122- BSL_ERR_PUSH_ERROR(ret);
1123- FreeExtEntryCont(extEntry);
1124- BSL_SAL_Free(extEntry);
1125- return ret;
1126- }
1127 }1063 }
1128 return HITLS_PKI_SUCCESS;1064 return HITLS_PKI_SUCCESS;
1129}1065}
1130 1066 
1067+static HITLS_X509_ExtEntry *GetExtEntry(BslList *extList, BslCid cid, BSL_Buffer *val)
1068+{
1069+ if (cid == BSL_CID_UNKNOWN) {
1070+ HITLS_X509_ExtGeneric *generic = (HITLS_X509_ExtGeneric *)val->data;
1071+ BSL_ASN1_Buffer oidBuf = {BSL_ASN1_TAG_OBJECT_ID, generic->oid.dataLen, generic->oid.data};
1072+ return BSL_LIST_Search(extList, &oidBuf, CmpExtByOid, NULL);
1073+ }
1074+ return BSL_LIST_Search(extList, &cid, CmpExtByCid, NULL);
1075+}
1076+ 
1077+static int32_t GetOidBuffer(BslCid cid, BSL_Buffer *val, BSL_Buffer *oidBuf)
1078+{
1079+ if (cid == BSL_CID_UNKNOWN) {
1080+ HITLS_X509_ExtGeneric *generic = (HITLS_X509_ExtGeneric *)val->data;
1081+ oidBuf->data = generic->oid.data;
1082+ oidBuf->dataLen = generic->oid.dataLen;
1083+ return HITLS_PKI_SUCCESS;
1084+ }
1085+ BslOidString *oid = BSL_OBJ_GetOID(cid);
1086+ if (oid == NULL || oid->octetLen == 0 || oid->octs == NULL) {
1087+ BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_EXT_OID);
1088+ return HITLS_X509_ERR_EXT_OID;
1089+ }
1090+ oidBuf->data = (uint8_t *)oid->octs;
1091+ oidBuf->dataLen = oid->octetLen;
1092+ return HITLS_PKI_SUCCESS;
1093+}
1094+ 
1095+int32_t HITLS_X509_SetExtList(void *param, BslList *extList, BslCid cid, BSL_Buffer *val, EncodeExtCb encodeExt)
1096+{
1097+ HITLS_X509_ExtEntry *existingEntry = GetExtEntry(extList, cid, val);
1098+ int32_t ret;
1099+ /* Replace existing extension */
1100+ if (existingEntry != NULL) {
1101+ HITLS_X509_ExtEntry tmpEntry = {0, {0}, false, {BSL_ASN1_TAG_OCTETSTRING, 0, NULL}};
1102+ ret = encodeExt(param, &tmpEntry, val->data);
1103+ if (ret != HITLS_PKI_SUCCESS) {
1104+ BSL_ERR_PUSH_ERROR(ret);
1105+ return ret;
1106+ }
1107+ BSL_SAL_Free(existingEntry->extnValue.buff);
1108+ existingEntry->extnValue = tmpEntry.extnValue;
1109+ existingEntry->critical = tmpEntry.critical;
1110+ return HITLS_PKI_SUCCESS;
1111+ }
1112+ 
1113+ /* Add new extension */
1114+ BSL_Buffer oidBuf = {0};
1115+ if ((ret = GetOidBuffer(cid, val, &oidBuf)) != HITLS_PKI_SUCCESS) {
1116+ BSL_ERR_PUSH_ERROR(ret);
1117+ return ret;
1118+ }
1119+ 
1120+ HITLS_X509_ExtEntry *newEntry = BSL_SAL_Calloc(1, sizeof(HITLS_X509_ExtEntry));
1121+ if (newEntry == NULL) {
1122+ BSL_ERR_PUSH_ERROR(BSL_MALLOC_FAIL);
1123+ return BSL_MALLOC_FAIL;
1124+ }
1125+ newEntry->cid = cid;
1126+ newEntry->extnId.tag = BSL_ASN1_TAG_OBJECT_ID;
1127+ newEntry->extnId.len = oidBuf.dataLen;
1128+ newEntry->extnValue.tag = BSL_ASN1_TAG_OCTETSTRING;
1129+ newEntry->extnId.buff = BSL_SAL_Dump(oidBuf.data, oidBuf.dataLen);
1130+ if (newEntry->extnId.buff == NULL) {
1131+ ret = BSL_DUMP_FAIL;
1132+ BSL_ERR_PUSH_ERROR(ret);
1133+ goto ERR;
1134+ }
1135+ if ((ret = encodeExt(param, newEntry, val->data)) != HITLS_PKI_SUCCESS) {
1136+ BSL_ERR_PUSH_ERROR(ret);
1137+ goto ERR;
1138+ }
1139+ if ((ret = BSL_LIST_AddElement(extList, newEntry, BSL_LIST_POS_END)) == BSL_SUCCESS) {
1140+ return HITLS_PKI_SUCCESS;
1141+ }
1142+ERR:
1143+ if (newEntry != NULL) {
1144+ BSL_SAL_FREE(newEntry->extnValue.buff);
1145+ BSL_SAL_FREE(newEntry->extnId.buff);
1146+ BSL_SAL_Free(newEntry);
1147+ }
1148+ return ret;
1149+}
1150+ 
1131static int32_t SetExt(HITLS_X509_Ext *ext, BslCid cid, BSL_Buffer *val, uint32_t expectLen, EncodeExtCb encodeExt)1151static int32_t SetExt(HITLS_X509_Ext *ext, BslCid cid, BSL_Buffer *val, uint32_t expectLen, EncodeExtCb encodeExt)
1132{1152{
1133- if ((ext->flag & HITLS_X509_EXT_FLAG_PARSE) != 0) {
1134- BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_EXT_SET_AFTER_PARSE);
1135- return HITLS_X509_ERR_EXT_SET_AFTER_PARSE;
1136- }
1137 if (val->dataLen != expectLen) {1153 if (val->dataLen != expectLen) {
1138 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_INVALID_PARAM);1154 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_INVALID_PARAM);
1139 return HITLS_X509_ERR_INVALID_PARAM;1155 return HITLS_X509_ERR_INVALID_PARAM;
1140 }1156 }
1157+ if (cid == BSL_CID_UNKNOWN) {
1158+ HITLS_X509_ExtGeneric *generic = (HITLS_X509_ExtGeneric *)val->data;
1159+ if (generic->oid.data == NULL || generic->oid.dataLen == 0 ||
1160+ generic->value.data == NULL || generic->value.dataLen == 0) {
1161+ BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_INVALID_PARAM);
1162+ return HITLS_X509_ERR_INVALID_PARAM;
1163+ }
1164+ }
1141 1165 
1142 int32_t ret = HITLS_X509_SetExtList(ext, ext->extList, cid, val, encodeExt);1166 int32_t ret = HITLS_X509_SetExtList(ext, ext->extList, cid, val, encodeExt);
1143 if (ret != HITLS_PKI_SUCCESS) {1167 if (ret != HITLS_PKI_SUCCESS) {
@@ -1151,6 +1175,10 @@ static int32_t SetExt(HITLS_X509_Ext *ext, BslCid cid, BSL_Buffer *val, uint32_t
1151 1175 
1152static int32_t SetExtCtrl(HITLS_X509_Ext *ext, int32_t cmd, void *val, uint32_t valLen)1176static int32_t SetExtCtrl(HITLS_X509_Ext *ext, int32_t cmd, void *val, uint32_t valLen)
1153{1177{
1178+ if ((ext->flag & HITLS_X509_EXT_FLAG_PARSE) != 0) {
1179+ BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_EXT_SET_AFTER_PARSE);
1180+ return HITLS_X509_ERR_EXT_SET_AFTER_PARSE;
1181+ }
1154 BSL_Buffer buff = {val, valLen};1182 BSL_Buffer buff = {val, valLen};
1155 switch (cmd) {1183 switch (cmd) {
1156 case HITLS_X509_EXT_SET_BCONS:1184 case HITLS_X509_EXT_SET_BCONS:
@@ -1173,6 +1201,8 @@ static int32_t SetExtCtrl(HITLS_X509_Ext *ext, int32_t cmd, void *val, uint32_t
1173 case HITLS_X509_EXT_SET_CRLNUMBER:1201 case HITLS_X509_EXT_SET_CRLNUMBER:
1174 return SetExt(ext, BSL_CID_CE_CRLNUMBER, &buff, sizeof(HITLS_X509_ExtCrlNumber),1202 return SetExt(ext, BSL_CID_CE_CRLNUMBER, &buff, sizeof(HITLS_X509_ExtCrlNumber),
1175 (EncodeExtCb)SetExtCrlNumber);1203 (EncodeExtCb)SetExtCrlNumber);
1204+ case HITLS_X509_EXT_SET_GENERIC:
1205+ return SetExt(ext, BSL_CID_UNKNOWN, &buff, sizeof(HITLS_X509_ExtGeneric), (EncodeExtCb)SetExtGeneric);
1176 default:1206 default:
1177 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_INVALID_PARAM);1207 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_INVALID_PARAM);
1178 return HITLS_X509_ERR_INVALID_PARAM;1208 return HITLS_X509_ERR_INVALID_PARAM;
@@ -1209,6 +1239,31 @@ static int32_t GetExtKeyUsage(HITLS_X509_Ext *ext, uint32_t *val, uint32_t valLe
1209 return HITLS_PKI_SUCCESS;1239 return HITLS_PKI_SUCCESS;
1210}1240}
1211 1241 
1242+/* Generic extension get: user provides DER-encoded OID buffer and output buffer */
1243+static int32_t GetGenericExt(HITLS_X509_Ext *ext, HITLS_X509_ExtGeneric *generic, uint32_t valLen)
1244+{
1245+ if (valLen != sizeof(HITLS_X509_ExtGeneric) ||
1246+ generic->oid.data == NULL || generic->oid.dataLen == 0 || generic->value.data != NULL) {
1247+ BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_INVALID_PARAM);
1248+ return HITLS_X509_ERR_INVALID_PARAM;
1249+ }
1250+ BSL_ASN1_Buffer oidBuf = {BSL_ASN1_TAG_OBJECT_ID, generic->oid.dataLen, generic->oid.data};
1251+ HITLS_X509_ExtEntry *extEntry = BSL_LIST_Search(ext->extList, &oidBuf, CmpExtByOid, NULL);
1252+ if (extEntry == NULL) {
1253+ BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_EXT_NOT_FOUND);
1254+ return HITLS_X509_ERR_EXT_NOT_FOUND;
1255+ }
1256+ 
1257+ generic->value.data = BSL_SAL_Dump(extEntry->extnValue.buff, extEntry->extnValue.len);
1258+ if (generic->value.data == NULL) {
1259+ BSL_ERR_PUSH_ERROR(BSL_DUMP_FAIL);
1260+ return BSL_DUMP_FAIL;
1261+ }
1262+ generic->value.dataLen = extEntry->extnValue.len;
1263+ generic->critical = extEntry->critical;
1264+ return HITLS_PKI_SUCCESS;
1265+}
1266+ 
1212static int32_t GetExtCtrl(HITLS_X509_Ext *ext, int32_t cmd, void *val, uint32_t valLen)1267static int32_t GetExtCtrl(HITLS_X509_Ext *ext, int32_t cmd, void *val, uint32_t valLen)
1213{1268{
1214 BSL_Buffer buff = {val, valLen};1269 BSL_Buffer buff = {val, valLen};
@@ -1224,6 +1279,8 @@ static int32_t GetExtCtrl(HITLS_X509_Ext *ext, int32_t cmd, void *val, uint32_t
1224 (DecodeExtCb)X509_ParseCrlNumber);1279 (DecodeExtCb)X509_ParseCrlNumber);
1225 case HITLS_X509_EXT_GET_KUSAGE:1280 case HITLS_X509_EXT_GET_KUSAGE:
1226 return GetExtKeyUsage(ext, val, valLen);1281 return GetExtKeyUsage(ext, val, valLen);
1282+ case HITLS_X509_EXT_GET_GENERIC:
1283+ return GetGenericExt(ext, (HITLS_X509_ExtGeneric *)val, valLen);
1227 default:1284 default:
1228 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_INVALID_PARAM);1285 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_INVALID_PARAM);
1229 return HITLS_X509_ERR_INVALID_PARAM;1286 return HITLS_X509_ERR_INVALID_PARAM;
@@ -1278,8 +1335,9 @@ int32_t HITLS_X509_ExtCtrl(HITLS_X509_Ext *ext, int32_t cmd, void *val, uint32_t
1278 return HITLS_X509_ERR_EXT_UNSUPPORT;1335 return HITLS_X509_ERR_EXT_UNSUPPORT;
1279 }1336 }
1280 static int32_t cmdSet[] = {HITLS_X509_EXT_SET_SKI, HITLS_X509_EXT_SET_AKI, HITLS_X509_EXT_SET_KUSAGE,1337 static int32_t cmdSet[] = {HITLS_X509_EXT_SET_SKI, HITLS_X509_EXT_SET_AKI, HITLS_X509_EXT_SET_KUSAGE,
1281- HITLS_X509_EXT_SET_SAN, HITLS_X509_EXT_SET_BCONS, HITLS_X509_EXT_SET_EXKUSAGE, HITLS_X509_EXT_GET_SKI,1338+ HITLS_X509_EXT_SET_SAN, HITLS_X509_EXT_SET_BCONS, HITLS_X509_EXT_SET_EXKUSAGE, HITLS_X509_EXT_SET_GENERIC,
1282- HITLS_X509_EXT_GET_AKI, HITLS_X509_EXT_CHECK_SKI, HITLS_X509_EXT_GET_KUSAGE};1339+ HITLS_X509_EXT_GET_SKI, HITLS_X509_EXT_GET_AKI, HITLS_X509_EXT_CHECK_SKI, HITLS_X509_EXT_GET_KUSAGE,
1340+ HITLS_X509_EXT_GET_GENERIC};
1283 if (!X509_CheckCmdValid(cmdSet, sizeof(cmdSet) / sizeof(int32_t), cmd)) {1341 if (!X509_CheckCmdValid(cmdSet, sizeof(cmdSet) / sizeof(int32_t), cmd)) {
1284 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_EXT_UNSUPPORT);1342 BSL_ERR_PUSH_ERROR(HITLS_X509_ERR_EXT_UNSUPPORT);
1285 return HITLS_X509_ERR_EXT_UNSUPPORT;1343 return HITLS_X509_ERR_EXT_UNSUPPORT;
@@ -510,6 +510,10 @@ bool IsCmacAlgDisabled(int id)
510bool IsCurveDisabled(int eccId)510bool IsCurveDisabled(int eccId)
511{511{
512 switch (eccId) {512 switch (eccId) {
513+#ifdef HITLS_CRYPTO_CURVE_NISTP192
514+ case CRYPT_ECC_NISTP192:
515+ return false;
516+#endif
513#ifdef HITLS_CRYPTO_CURVE_NISTP224517#ifdef HITLS_CRYPTO_CURVE_NISTP224
514 case CRYPT_ECC_NISTP224:518 case CRYPT_ECC_NISTP224:
515 return false;519 return false;
@@ -248,7 +248,8 @@ test_ecc()
248 # Test all curves.248 # Test all curves.
249 bash mini_build_test.sh $COMMON_PARAM $NO_LIB enable=eal,eal_bn,ecdh,ecdsa,sm2,drbg_hash,entropy,sha2,ecc test=curve_nistp224249 bash mini_build_test.sh $COMMON_PARAM $NO_LIB enable=eal,eal_bn,ecdh,ecdsa,sm2,drbg_hash,entropy,sha2,ecc test=curve_nistp224
250 250 
251- # nist224/256/384/521251+ # nist192/224/256/384/521
252+ bash mini_build_test.sh $COMMON_PARAM $NO_LIB enable=eal,eal_bn,ecdh,ecdsa,drbg_hash,entropy,sha2,curve_nistp192 test=curve_nistp192
252 bash mini_build_test.sh $COMMON_PARAM $NO_LIB enable=eal,eal_bn,ecdh,ecdsa,drbg_hash,entropy,sha2,curve_nistp224 test=curve_nistp224253 bash mini_build_test.sh $COMMON_PARAM $NO_LIB enable=eal,eal_bn,ecdh,ecdsa,drbg_hash,entropy,sha2,curve_nistp224 test=curve_nistp224
253 bash mini_build_test.sh $COMMON_PARAM $NO_LIB enable=eal,eal_bn,ecdh,ecdsa,drbg_hash,entropy,sha2,curve_nistp256 test=curve_nistp256254 bash mini_build_test.sh $COMMON_PARAM $NO_LIB enable=eal,eal_bn,ecdh,ecdsa,drbg_hash,entropy,sha2,curve_nistp256 test=curve_nistp256
254 bash mini_build_test.sh $COMMON_PARAM $NO_LIB enable=eal,eal_bn,ecdh,ecdsa,drbg_hash,entropy,sha2,curve_nistp384 test=curve_nistp384255 bash mini_build_test.sh $COMMON_PARAM $NO_LIB enable=eal,eal_bn,ecdh,ecdsa,drbg_hash,entropy,sha2,curve_nistp384 test=curve_nistp384
@@ -26,7 +26,7 @@ FEATURES=()
26TEST_FEATURE=""26TEST_FEATURE=""
27BUILD_HITLS="on"27BUILD_HITLS="on"
28EXE_TEST="on"28EXE_TEST="on"
29-SHOW_SIZE="on" # size libhitls_*.a29+SHOW_SIZE="off" # size libhitls_*.a
30SHOW_MACRO="off"30SHOW_MACRO="off"
31 31 
32ASM_TYPE=""32ASM_TYPE=""
@@ -81,8 +81,8 @@ parse_option()
81 ADD_OPTIONS="${ADD_OPTIONS} -E -dM"81 ADD_OPTIONS="${ADD_OPTIONS} -E -dM"
82 LIB_TYPE="static"82 LIB_TYPE="static"
83 ;;83 ;;
84- "no-size")84+ "size")
85- SHOW_SIZE="off"85+ SHOW_SIZE="on"
86 ;;86 ;;
87 "no-build")87 "no-build")
88 BUILD_HITLS="off"88 BUILD_HITLS="off"
@@ -249,3 +249,25 @@ EXIT:
249#endif249#endif
250}250}
251/* END_CASE */251/* END_CASE */
252+ 
253+/**
254+ * @test SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001
255+ * @title Exception Parameter Testing for the BSL_OBJ_GetOidFromNumericString Function.
256+ * @expect success
257+ */
258+/* BEGIN_CASE */
259+void SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001(char *expect)
260+{
261+ TestMemInit();
262+ uint32_t outLen = 0;
263+ uint8_t *hexOid = NULL;
264+ ASSERT_TRUE(BSL_OBJ_GetOidFromNumericString(NULL, 0, &outLen) == NULL);
265+ ASSERT_TRUE(BSL_OBJ_GetOidFromNumericString(expect, strlen(expect), NULL) == NULL);
266+ hexOid = BSL_OBJ_GetOidFromNumericString(expect, strlen(expect), &outLen);
267+ ASSERT_TRUE(hexOid == NULL);
268+ free(hexOid);
269+EXIT:
270+ return;
271+}
272+/* END_CASE */
273+ 
@@ -12,3 +12,33 @@ SDV_BSL_OBJ_CREATE_TC001:
12 12 
13SDV_BSL_OBJ_HASH_TABLE_LOOKUP_TC00113SDV_BSL_OBJ_HASH_TABLE_LOOKUP_TC001
14SDV_BSL_OBJ_HASH_TABLE_LOOKUP_TC001:14SDV_BSL_OBJ_HASH_TABLE_LOOKUP_TC001:
15+ 
16+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #1
17+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:"1.2/840.113549.1.1.1"
18+ 
19+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #2
20+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:"1.A.2.840.113549.1.1.1"
21+ 
22+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #3
23+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:".2.840.113549.1.1.1"
24+ 
25+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #4
26+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:"1.2..113549.1.1.1"
27+ 
28+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #5
29+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:"3.2.840.113549.1.1.1"
30+ 
31+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #6
32+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:"1.40.2.840.113549.1.1.1"
33+ 
34+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #7
35+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:"2.40.2.840.113549.1.1.1"
36+ 
37+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #8
38+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:"1.2.92233720368547758070.113549.1.1.1"
39+ 
40+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #9
41+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:"1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100.1.3.6.1.4.1.2011.7.6.100"
42+ 
43+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001 #10
44+SDV_BSL_OBJ_GETOID_FROM_NUMBERIC_FUNC_TC001:"1.2.3.4.1.1.1."
@@ -123,6 +123,8 @@ EXIT:
123static int GetPubKeyLen(int eccId)123static int GetPubKeyLen(int eccId)
124{124{
125 switch (eccId) {125 switch (eccId) {
126+ case CRYPT_ECC_NISTP192:
127+ return 49; /* SECP192R1 */
126 case CRYPT_ECC_NISTP224:128 case CRYPT_ECC_NISTP224:
127 return 57; /* SECP224R1 */129 return 57; /* SECP224R1 */
128 case CRYPT_ECC_NISTP256: /* (32 * 2) + 1 SECP256R1, brainpoolP256r1 */130 case CRYPT_ECC_NISTP256: /* (32 * 2) + 1 SECP256R1, brainpoolP256r1 */
@@ -143,6 +145,8 @@ static int GetPubKeyLen(int eccId)
143static int GetPrvKeyLen(int eccId)145static int GetPrvKeyLen(int eccId)
144{146{
145 switch (eccId) {147 switch (eccId) {
148+ case CRYPT_ECC_NISTP192:
149+ return 24;
146 case CRYPT_ECC_NISTP224:150 case CRYPT_ECC_NISTP224:
147 return 28;151 return 28;
148 case CRYPT_ECC_NISTP256:152 case CRYPT_ECC_NISTP256:
@@ -289,6 +293,7 @@ int EAL_PkeySetParaById_Api_TC001(int algId)
289 pkeyCtx = CRYPT_EAL_PkeyNewCtx(algId);293 pkeyCtx = CRYPT_EAL_PkeyNewCtx(algId);
290 ASSERT_TRUE_AND_LOG("CRYPT_EAL_PkeyNewCtx", pkeyCtx != NULL);294 ASSERT_TRUE_AND_LOG("CRYPT_EAL_PkeyNewCtx", pkeyCtx != NULL);
291 ASSERT_TRUE_AND_LOG("Invalid Pkey", CRYPT_EAL_PkeySetParaById(NULL, CRYPT_ECC_NISTP224) == CRYPT_NULL_INPUT);295 ASSERT_TRUE_AND_LOG("Invalid Pkey", CRYPT_EAL_PkeySetParaById(NULL, CRYPT_ECC_NISTP224) == CRYPT_NULL_INPUT);
296+ ASSERT_TRUE_AND_LOG("CRYPT_ECC_NISTP192", CRYPT_EAL_PkeySetParaById(pkeyCtx, CRYPT_ECC_NISTP192) == CRYPT_SUCCESS);
292 ASSERT_TRUE_AND_LOG("CRYPT_ECC_NISTP224", CRYPT_EAL_PkeySetParaById(pkeyCtx, CRYPT_ECC_NISTP224) == CRYPT_SUCCESS);297 ASSERT_TRUE_AND_LOG("CRYPT_ECC_NISTP224", CRYPT_EAL_PkeySetParaById(pkeyCtx, CRYPT_ECC_NISTP224) == CRYPT_SUCCESS);
293 ASSERT_TRUE_AND_LOG("CRYPT_ECC_NISTP256", CRYPT_EAL_PkeySetParaById(pkeyCtx, CRYPT_ECC_NISTP256) == CRYPT_SUCCESS);298 ASSERT_TRUE_AND_LOG("CRYPT_ECC_NISTP256", CRYPT_EAL_PkeySetParaById(pkeyCtx, CRYPT_ECC_NISTP256) == CRYPT_SUCCESS);
294 ASSERT_TRUE_AND_LOG("CRYPT_ECC_NISTP384", CRYPT_EAL_PkeySetParaById(pkeyCtx, CRYPT_ECC_NISTP384) == CRYPT_SUCCESS);299 ASSERT_TRUE_AND_LOG("CRYPT_ECC_NISTP384", CRYPT_EAL_PkeySetParaById(pkeyCtx, CRYPT_ECC_NISTP384) == CRYPT_SUCCESS);
@@ -47,13 +47,14 @@ EXIT:
47 * 1. Create the context of the ecdh algorithm, expected result 147 * 1. Create the context of the ecdh algorithm, expected result 1
48 * 2. Call the CRYPT_EAL_PkeySetParaById method:48 * 2. Call the CRYPT_EAL_PkeySetParaById method:
49 * (1) context = NULL, expected result 2.49 * (1) context = NULL, expected result 2.
50- * (2) CRYPT_PKEY_ParaId = CRYPT_ECC_NISTP224, expected result 3.50+ * (2) CRYPT_PKEY_ParaId = CRYPT_ECC_NISTP192, expected result 3.
51- * (3) CRYPT_PKEY_ParaId = CRYPT_ECC_NISTP256, expected result 3.51+ * (3) CRYPT_PKEY_ParaId = CRYPT_ECC_NISTP224, expected result 3.
52- * (4) CRYPT_PKEY_ParaId = CRYPT_ECC_NISTP384, expected result 3.52+ * (4) CRYPT_PKEY_ParaId = CRYPT_ECC_NISTP256, expected result 3.
53- * (5) CRYPT_PKEY_ParaId = CRYPT_ECC_NISTP521, expected result 3.53+ * (5) CRYPT_PKEY_ParaId = CRYPT_ECC_NISTP384, expected result 3.
54- * (6) CRYPT_PKEY_ParaId = CRYPT_ECC_BRAINPOOLP256R1, expected result 3.54+ * (6) CRYPT_PKEY_ParaId = CRYPT_ECC_NISTP521, expected result 3.
55- * (7) CRYPT_PKEY_ParaId = CRYPT_ECC_BRAINPOOLP384R1, expected result 3.55+ * (7) CRYPT_PKEY_ParaId = CRYPT_ECC_BRAINPOOLP256R1, expected result 3.
56- * (8) CRYPT_PKEY_ParaId = CRYPT_ECC_BRAINPOOLP512R1, expected result 3.56+ * (8) CRYPT_PKEY_ParaId = CRYPT_ECC_BRAINPOOLP384R1, expected result 3.
57+ * (9) CRYPT_PKEY_ParaId = CRYPT_ECC_BRAINPOOLP512R1, expected result 3.
57 * @expect58 * @expect
58 * 1. Success, and the context is not NULL.59 * 1. Success, and the context is not NULL.
59 * 2. CRYPT_NULL_INPUT60 * 2. CRYPT_NULL_INPUT
@@ -223,7 +224,7 @@ EXIT:
223 * public key point224 * public key point
224 * @brief225 * @brief
225 * 1. Create the context of the ecdh algorithm, expected result 1226 * 1. Create the context of the ecdh algorithm, expected result 1
226- * 2. Set the para by eccId(p-224/256/384/512, bp256r1/384r1/512/r1), expected result 2227+ * 2. Set the para by eccId(p-192/224/256/384/512, bp256r1/384r1/512/r1), expected result 2
227 * 3. Convert the format of the public key vector to COMPRESSED, expected result 3228 * 3. Convert the format of the public key vector to COMPRESSED, expected result 3
228 * 4. Set the public key, expected result 4229 * 4. Set the public key, expected result 4
229 * 5. Call the CRYPT_EAL_PkeyCtrl method to set point format to COMPRESSED, expected result 5230 * 5. Call the CRYPT_EAL_PkeyCtrl method to set point format to COMPRESSED, expected result 5
@@ -431,7 +432,7 @@ EXIT:
431 * @precon Public keys of different lengths.432 * @precon Public keys of different lengths.
432 * @brief433 * @brief
433 * 1. Create the context of the ecdh algorithm, expected result 1434 * 1. Create the context of the ecdh algorithm, expected result 1
434- * 2. Set the para by eccId(p-224/256/384/512, bp256r1/384r1/512/r1), expected result 2435+ * 2. Set the para by eccId(p-192/224/256/384/512, bp256r1/384r1/512/r1), expected result 2
435 * 3. Set public keys of different lengths, expected result 3436 * 3. Set public keys of different lengths, expected result 3
436 * @expect437 * @expect
437 * 1. Success, and the context is not NULL.438 * 1. Success, and the context is not NULL.
@@ -441,7 +442,7 @@ EXIT:
441/* BEGIN_CASE */442/* BEGIN_CASE */
442void SDV_CRYPTO_ECDH_SET_PUB_API_TC003(int eccId, Hex *pubKey, Hex *errorPubKey, int isProvider)443void SDV_CRYPTO_ECDH_SET_PUB_API_TC003(int eccId, Hex *pubKey, Hex *errorPubKey, int isProvider)
443{444{
444- ASSERT_TRUE(EAL_PkeySetPub_Api_TC003(CRYPT_PKEY_ECDSA, eccId, pubKey, errorPubKey, isProvider) == 0);445+ ASSERT_TRUE(EAL_PkeySetPub_Api_TC003(CRYPT_PKEY_ECDH, eccId, pubKey, errorPubKey, isProvider) == 0);
445EXIT:446EXIT:
446 return;447 return;
447}448}
@@ -454,7 +455,7 @@ EXIT:
454 * @brief455 * @brief
455 * 1. Get para id before creating context, expected result 1456 * 1. Get para id before creating context, expected result 1
456 * 1. Create the context of the ecdh algorithm, expected result 2457 * 1. Create the context of the ecdh algorithm, expected result 2
457- * 2. Set para id(p-224/256/384/512), expected result 3458+ * 2. Set para id(p-192/224/256/384/512), expected result 3
458 * 3. Get para id, expected result 4459 * 3. Get para id, expected result 4
459 * @expect460 * @expect
460 * 1. CRYPT_PKEY_PARAID_MAX461 * 1. CRYPT_PKEY_PARAID_MAX
@@ -478,7 +479,7 @@ EXIT:
478 * @precon Registering memory-related functions.479 * @precon Registering memory-related functions.
479 * @brief480 * @brief
480 * 1. Create the context(pKeyCtx) of the ecdh algorithm, expected result 1481 * 1. Create the context(pKeyCtx) of the ecdh algorithm, expected result 1
481- * 2. Set the para by eccId(p-224/256/384/512, bp256r1/384r1/512/r1), expected result 2482+ * 2. Set the para by eccId(p-192/224/256/384/512, bp256r1/384r1/512/r1), expected result 2
482 * 3. Call the CRYPT_EAL_PkeyDupCtx to dup context where the parameter is null, expected result 3483 * 3. Call the CRYPT_EAL_PkeyDupCtx to dup context where the parameter is null, expected result 3
483 * 4. Call the CRYPT_EAL_PkeyDupCtx to dup context(newCtx), expected result 4484 * 4. Call the CRYPT_EAL_PkeyDupCtx to dup context(newCtx), expected result 4
484 * 5. Get the reference count, expected result 5485 * 5. Get the reference count, expected result 5
@@ -570,8 +571,8 @@ EXIT:
570 * @brief571 * @brief
571 * 1. Create two contexts(ecdhPkey, peerEcdhPubPkey) of the ECDH algorithm, expected result 1572 * 1. Create two contexts(ecdhPkey, peerEcdhPubPkey) of the ECDH algorithm, expected result 1
572 * 2. Init the drbg, expected result 2573 * 2. Init the drbg, expected result 2
573- * 3. ecdhPkey: Set elliptic curve type(p-224/256/384/512, bp256r1/384r1/512/r1) and private key, expected result 3574+ * 3. ecdhPkey: Set elliptic curve type(p-192/224/256/384/512, bp256r1/384r1/512/r1) and private key, expected result 3
574- * 4. peerEcdhPubPkey: Set elliptic curve type(p-224/256/384/512, bp256r1/384r1/512/r1) and public key(compressed/575+ * 4. peerEcdhPubPkey: Set elliptic curve type(p-192/224/256/384/512, bp256r1/384r1/512/r1) and public key(compressed/
575 * uncompressed/hybrid), expected result 4576 * uncompressed/hybrid), expected result 4
576 * 5. Compute the shared key, expected result 5577 * 5. Compute the shared key, expected result 5
577 * 6. Compare the output shared secret and shared secret vector, expected result 6578 * 6. Compare the output shared secret and shared secret vector, expected result 6
@@ -25,6 +25,9 @@ SDV_CRYPTO_ECDH_CTRL_API_TC001:CRYPT_CTRL_SET_RSA_PADDING:CRYPT_ECC_PKEY_ERR_UNS
25SDV_CRYPTO_ECDH_CTRL_API_TC00225SDV_CRYPTO_ECDH_CTRL_API_TC002
26SDV_CRYPTO_ECDH_CTRL_API_TC002:26SDV_CRYPTO_ECDH_CTRL_API_TC002:
27 27 
28+SDV_CRYPTO_ECDH_CTRL_API_TC003 P-192: Nist
29+SDV_CRYPTO_ECDH_CTRL_API_TC003:CRYPT_ECC_NISTP192:"646c22e8aa5f7833390e0399155ac198ae42470bba4fc834":"8d4afcfffd80e69a4d180178b37c44572495b7b267ee32a9"
30+ 
28SDV_CRYPTO_ECDH_CTRL_API_TC003 P-224: Nist31SDV_CRYPTO_ECDH_CTRL_API_TC003 P-224: Nist
29SDV_CRYPTO_ECDH_CTRL_API_TC003:CRYPT_ECC_NISTP224:"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669"32SDV_CRYPTO_ECDH_CTRL_API_TC003:CRYPT_ECC_NISTP224:"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669"
30 33 
@@ -70,6 +73,12 @@ SDV_CRYPTO_ECDH_SET_PUB_API_TC001:"04605495756e6e88f1d07ae5f98787af9b4da8a641d1a
70SDV_CRYPTO_ECDH_SET_PUB_API_TC002: Nist73SDV_CRYPTO_ECDH_SET_PUB_API_TC002: Nist
71SDV_CRYPTO_ECDH_SET_PUB_API_TC002:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":"04605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669"74SDV_CRYPTO_ECDH_SET_PUB_API_TC002:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":"04605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669"
72 75 
76+SDV_CRYPTO_ECDH_SET_PUB_API_TC003
77+SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_NISTP192:"":"":0
78+ 
79+SDV_CRYPTO_ECDH_SET_PUB_API_TC003
80+SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_NISTP192:"":"":1
81+ 
73SDV_CRYPTO_ECDH_SET_PUB_API_TC00382SDV_CRYPTO_ECDH_SET_PUB_API_TC003
74SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"":"":083SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"":"":0
75 84 
@@ -113,7 +122,10 @@ SDV_CRYPTO_ECDH_SET_PUB_API_TC003
113SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"":"":1122SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"":"":1
114 123 
115SDV_CRYPTO_ECDH_SET_PUB_API_TC003: Nist124SDV_CRYPTO_ECDH_SET_PUB_API_TC003: Nist
116-SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"05605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"04605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc666a":0125+SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_NISTP192:"05284fbaa76ce0faae2ca4867d01092fa1ace5724cd12c8dd0e42af3dbf3206be3fcbcc3a7ccaf60c73dc29e7bb9b44fca":"0482c949295156192df0b52480e38c810751ac570daec460a3200057ada615c80b8ff256ce8d47f2562b74a438f1921ac3":0
126+ 
127+SDV_CRYPTO_ECDH_SET_PUB_API_TC003: Nist
128+SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_NISTP192:"05284fbaa76ce0faae2ca4867d01092fa1ace5724cd12c8dd0e42af3dbf3206be3fcbcc3a7ccaf60c73dc29e7bb9b44fca":"0482c949295156192df0b52480e38c810751ac570daec460a3200057ada615c80b8ff256ce8d47f2562b74a438f1921ac3":1
117 129 
118SDV_CRYPTO_ECDH_SET_PUB_API_TC003: Nist130SDV_CRYPTO_ECDH_SET_PUB_API_TC003: Nist
119SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"05605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"04605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc666a":1131SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"05605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"04605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc666a":1
@@ -178,6 +190,9 @@ SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"0A420517E406AAC0ACD
178SDV_CRYPTO_ECDH_SET_PUB_API_TC003: FRC 7072190SDV_CRYPTO_ECDH_SET_PUB_API_TC003: FRC 7072
179SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"0A420517E406AAC0ACDCE90FCD71487718D3B953EFD7FBEC5F7F27E28C6149999397E91E029E06457DB2D3E640668B392C2A7E737A7F0BF04436D11640FD09FD72E6882E8DB28AAD36237CD25D580DB23783961C8DC52DFA2EC138AD472A0FCEF3887CF62B623B2A87DE5C588301EA3E5FC269B373B60724F5E82A6AD147FDE7":"070562E68B9AF7CBFD5565C6B16883B777FF11C199161ECC427A39D17EC2166499389571D6A994977C56AD8252658BA8A1B72AE42F4FB7532151AFC3EF0971CCDAA7CA2D8191E21776A89860AFBC1F582FAA308D551C1DC6133AF9F9C3CAD59998D70079548140B90B1F311AFB378AA81F51B275B2BE6B7DEE978EFC7343EA642F":1191SDV_CRYPTO_ECDH_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"0A420517E406AAC0ACDCE90FCD71487718D3B953EFD7FBEC5F7F27E28C6149999397E91E029E06457DB2D3E640668B392C2A7E737A7F0BF04436D11640FD09FD72E6882E8DB28AAD36237CD25D580DB23783961C8DC52DFA2EC138AD472A0FCEF3887CF62B623B2A87DE5C588301EA3E5FC269B373B60724F5E82A6AD147FDE7":"070562E68B9AF7CBFD5565C6B16883B777FF11C199161ECC427A39D17EC2166499389571D6A994977C56AD8252658BA8A1B72AE42F4FB7532151AFC3EF0971CCDAA7CA2D8191E21776A89860AFBC1F582FAA308D551C1DC6133AF9F9C3CAD59998D70079548140B90B1F311AFB378AA81F51B275B2BE6B7DEE978EFC7343EA642F":1
180 192 
193+SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001
194+SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001:CRYPT_ECC_NISTP192
195+ 
181SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001196SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001
182SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001:CRYPT_ECC_NISTP224197SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001:CRYPT_ECC_NISTP224
183 198 
@@ -190,6 +205,9 @@ SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001:CRYPT_ECC_NISTP384
190SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001205SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001
191SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001:CRYPT_ECC_NISTP521206SDV_CRYPTO_ECDH_GET_PARA_ID_API_TC001:CRYPT_ECC_NISTP521
192 207 
208+SDV_CRYPTO_ECDH_DUP_CTX_API_TC001: CRYPT_ECC_NISTP192
209+SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP192:0
210+ 
193SDV_CRYPTO_ECDH_DUP_CTX_API_TC001211SDV_CRYPTO_ECDH_DUP_CTX_API_TC001
194SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP224:0212SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP224:0
195 213 
@@ -202,6 +220,9 @@ SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP384:0
202SDV_CRYPTO_ECDH_DUP_CTX_API_TC001220SDV_CRYPTO_ECDH_DUP_CTX_API_TC001
203SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP521:0221SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP521:0
204 222 
223+SDV_CRYPTO_ECDH_DUP_CTX_API_TC001
224+SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP192:1
225+ 
205SDV_CRYPTO_ECDH_DUP_CTX_API_TC001226SDV_CRYPTO_ECDH_DUP_CTX_API_TC001
206SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP224:1227SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP224:1
207 228 
@@ -217,6 +238,24 @@ SDV_CRYPTO_ECDH_DUP_CTX_API_TC001:CRYPT_ECC_NISTP521:1
217SDV_CRYPTO_ECDH_CMP_FUNC_TC001 Nist, P-224 COMPRESS238SDV_CRYPTO_ECDH_CMP_FUNC_TC001 Nist, P-224 COMPRESS
218SDV_CRYPTO_ECDH_CMP_FUNC_TC001:"af33cd0629bc7e996320a3f40368f74de8704fa37b8fab69abaae280":"882092ccbba7930f419a8a4f9bb16978bbc3838729992559a6f2e2d7"239SDV_CRYPTO_ECDH_CMP_FUNC_TC001:"af33cd0629bc7e996320a3f40368f74de8704fa37b8fab69abaae280":"882092ccbba7930f419a8a4f9bb16978bbc3838729992559a6f2e2d7"
219 240 
241+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 Nist, P-192 COMPRESS
242+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_NISTP192:"f17d3fea367b74d340851ca4270dcb24c271f445bed9d527":"42ea6dd9969dd2a61fea1aac7f8e98edcc896c6e55857cc0":"dfbe5d7c61fac88b11811bde328e8a0d12bf01a9d204b523":CRYPT_POINT_COMPRESSED:"803d8ab2e5b6e6fca715737c3a82f7ce3c783124f6d51cd0":0
243+ 
244+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 Nist, P-192 COMPRESS
245+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_NISTP192:"56e853349d96fe4c442448dacb7cf92bb7a95dcf574a9bd5":"deb5712fa027ac8d2f22c455ccb73a91e17b6512b5e030e7":"7e2690a02cc9b28708431a29fb54b87b1f0c14e011ac2125":CRYPT_POINT_COMPRESSED:"c208847568b98835d7312cef1f97f7aa298283152313c29d":1
246+ 
247+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 Nist, P-192 UNCOMPRESS
248+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_NISTP192:"c6ef61fe12e80bf56f2d3f7d0bb757394519906d55500949":"4edaa8efc5a0f40f843663ec5815e7762dddc008e663c20f":"0a9f8dc67a3e60ef6d64b522185d03df1fc0adfd42478279":CRYPT_POINT_UNCOMPRESSED:"87229107047a3b611920d6e3b2c0c89bea4f49412260b8dd":0
249+ 
250+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 Nist, P-192 UNCOMPRESS
251+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_NISTP192:"e6747b9c23ba7044f38ff7e62c35e4038920f5a0163d3cda":"8887c276edeed3e9e866b46d58d895c73fbd80b63e382e88":"04c5097ba6645e16206cfb70f7052655947dd44a17f1f9d5":CRYPT_POINT_UNCOMPRESSED:"eec0bed8fc55e1feddc82158fd6dc0d48a4d796aaf47d46c":1
252+ 
253+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 Nist, P-192 HYBID
254+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_NISTP192:"beabedd0154a1afcfc85d52181c10f5eb47adc51f655047d":"0d045f30254adc1fcefa8a5b1f31bf4e739dd327cd18d594":"542c314e41427c08278a08ce8d7305f3b5b849c72d8aff73":CRYPT_POINT_HYBRID:"716e743b1b37a2cd8479f0a3d5a74c10ba2599be18d7e2f4":0
255+ 
256+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 Nist, P-192 HYBID
257+SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_NISTP192:"cf70354226667321d6e2baf40999e2fd74c7a0f793fa8699":"fb35ca20d2e96665c51b98e8f6eb3d79113508d8bccd4516":"368eec0d5bfb847721df6aaff0e5d48c444f74bf9cd8a5a7":CRYPT_POINT_HYBRID:"f67053b934459985a315cb017bf0302891798d45d0e19508":1
258+ 
220SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 Nist, P-224 COMPRESS259SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 Nist, P-224 COMPRESS
221SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_NISTP224:"8346a60fc6f293ca5a0d2af68ba71d1dd389e5e40837942df3e43cbd":"af33cd0629bc7e996320a3f40368f74de8704fa37b8fab69abaae280":"882092ccbba7930f419a8a4f9bb16978bbc3838729992559a6f2e2d7":CRYPT_POINT_COMPRESSED:"7d96f9a3bd3c05cf5cc37feb8b9d5209d5c2597464dec3e9983743e8":0260SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_NISTP224:"8346a60fc6f293ca5a0d2af68ba71d1dd389e5e40837942df3e43cbd":"af33cd0629bc7e996320a3f40368f74de8704fa37b8fab69abaae280":"882092ccbba7930f419a8a4f9bb16978bbc3838729992559a6f2e2d7":CRYPT_POINT_COMPRESSED:"7d96f9a3bd3c05cf5cc37feb8b9d5209d5c2597464dec3e9983743e8":0
222 261 
@@ -325,6 +364,15 @@ SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_BRAINPOOLP512R1:"16302FF0DBBB5A8D733DA
325SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 RFC 7027, brainpool p512r1, HYBID364SDV_CRYPTO_ECDH_EXCH_FUNC_TC001 RFC 7027, brainpool p512r1, HYBID
326SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_BRAINPOOLP512R1:"16302FF0DBBB5A8D733DAB7141C1B45ACBC8715939677F6A56850A38BD87BD59B09E80279609FF333EB9D4C061231FB26F92EEB04982A5F1D1764CAD57665422":"9D45F66DE5D67E2E6DB6E93A59CE0BB48106097FF78A081DE781CDB31FCE8CCBAAEA8DD4320C4119F1E9CD437A2EAB3731FA9668AB268D871DEDA55A5473199F":"2FDC313095BCDD5FB3A91636F07A959C8E86B5636A1E930E8396049CB481961D365CC11453A06C719835475B12CB52FC3C383BCE35E27EF194512B71876285FA":CRYPT_POINT_HYBRID:"A7927098655F1F9976FA50A9D566865DC530331846381C87256BAF3226244B76D36403C024D7BBF0AA0803EAFF405D3D24F11A9B5C0BEF679FE1454B21C4CD1F":0365SDV_CRYPTO_ECDH_EXCH_FUNC_TC001:CRYPT_ECC_BRAINPOOLP512R1:"16302FF0DBBB5A8D733DAB7141C1B45ACBC8715939677F6A56850A38BD87BD59B09E80279609FF333EB9D4C061231FB26F92EEB04982A5F1D1764CAD57665422":"9D45F66DE5D67E2E6DB6E93A59CE0BB48106097FF78A081DE781CDB31FCE8CCBAAEA8DD4320C4119F1E9CD437A2EAB3731FA9668AB268D871DEDA55A5473199F":"2FDC313095BCDD5FB3A91636F07A959C8E86B5636A1E930E8396049CB481961D365CC11453A06C719835475B12CB52FC3C383BCE35E27EF194512B71876285FA":CRYPT_POINT_HYBRID:"A7927098655F1F9976FA50A9D566865DC530331846381C87256BAF3226244B76D36403C024D7BBF0AA0803EAFF405D3D24F11A9B5C0BEF679FE1454B21C4CD1F":0
327 366 
367+SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001 Nist, P-192 COMPRESS
368+SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001:CRYPT_ECC_NISTP192:"e5ce89a34adddf25ff3bf1ffe6803f57d0220de3118798ea":"8abf7b3ceb2b02438af19543d3e5b1d573fa9ac60085840f":"a87f80182dcd56a6a061f81f7da393e7cffd5e0738c6b245":0:0
369+ 
370+SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001 Nist, P-192 UNCOMPRESS
371+SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001:CRYPT_ECC_NISTP192:"7d14435714ad13ff23341cb567cc91198ff8617cc39751b2":"39dc723b19527daa1e80425209c56463481b9b47c51f8cbd":"432a3e84f2a16418834fabaf6b7d2341669512951f1672ad":1:0
372+ 
373+SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001 Nist, P-192 HYBID
374+SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001:CRYPT_ECC_NISTP192:"12039a122de1725d8d0e369b2fb536f7a38414a67cf69a83":"eb7e6011e825eb9f0c19d7d8695cf8da5805bf1f86019cef":"59694469ad604f6b407a9cba3d696b33ff410a9357b34baa":2:0
375+ 
328SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001 Nist, P-224 COMPRESS376SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001 Nist, P-224 COMPRESS
329SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001:CRYPT_ECC_NISTP224:"e7c92383846a4e6887a10498d8eaca2bd0487d985bd7d3f92ce3ab30":"0a3682d2aaa4dd931bee042d32e95755507ab164b12f84843f4b7b96":"a6313a938eff7a293222e0e3c7b4c6132489b33255a61c3fc1ce2256":0:0377SDV_CRYPTO_ECDH_GEN_KEY_FUNC_TC001:CRYPT_ECC_NISTP224:"e7c92383846a4e6887a10498d8eaca2bd0487d985bd7d3f92ce3ab30":"0a3682d2aaa4dd931bee042d32e95755507ab164b12f84843f4b7b96":"a6313a938eff7a293222e0e3c7b4c6132489b33255a61c3fc1ce2256":0:0
330 378 
@@ -403,6 +451,9 @@ SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001:CRYPT_ECC_NISTP521:1064:0
403SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001451SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001
404SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001:CRYPT_ECC_NISTP224:456:0452SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001:CRYPT_ECC_NISTP224:456:0
405 453 
454+SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001
455+SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001:CRYPT_ECC_NISTP192:392:1
456+ 
406SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001457SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001
407SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001:CRYPT_ECC_NISTP256:520:1458SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001:CRYPT_ECC_NISTP256:520:1
408 459 
@@ -418,6 +469,12 @@ SDV_CRYPTO_ECDH_GET_KEY_BITS_FUNC_TC001:CRYPT_ECC_NISTP224:456:1
418SDV_CRYPTO_ECDH_GET_SEC_BITS_FUNC_TC001469SDV_CRYPTO_ECDH_GET_SEC_BITS_FUNC_TC001
419SDV_CRYPTO_ECDH_GET_SEC_BITS_FUNC_TC001:CRYPT_ECC_NISTP224:112470SDV_CRYPTO_ECDH_GET_SEC_BITS_FUNC_TC001:CRYPT_ECC_NISTP224:112
420 471 
472+SDV_CRYPTO_ECDH_GET_SEC_BITS_FUNC_TC001
473+SDV_CRYPTO_ECDH_GET_SEC_BITS_FUNC_TC001:CRYPT_ECC_NISTP192:80
474+ 
475+SDV_CRYPTO_ECC_ADD_CAL_TEST_FUNC_TC001
476+SDV_CRYPTO_ECC_ADD_CAL_TEST_FUNC_TC001:CRYPT_ECC_NISTP192:"fffffffe338637100030353629323dbe":"79983a6b221fab08796ad40f712de3b6":"02"
477+ 
421SDV_CRYPTO_ECC_ADD_CAL_TEST_FUNC_TC001478SDV_CRYPTO_ECC_ADD_CAL_TEST_FUNC_TC001
422SDV_CRYPTO_ECC_ADD_CAL_TEST_FUNC_TC001:CRYPT_ECC_NISTP224:"fffffffe338637100030353629323dbe":"79983a6b221fab08796ad40f712de3b6":"02"479SDV_CRYPTO_ECC_ADD_CAL_TEST_FUNC_TC001:CRYPT_ECC_NISTP224:"fffffffe338637100030353629323dbe":"79983a6b221fab08796ad40f712de3b6":"02"
423 480 
@@ -482,7 +482,7 @@ EXIT:
482 * @precon public key point482 * @precon public key point
483 * @brief483 * @brief
484 * 1. Create the context of the ecdsa algorithm, expected result 1484 * 1. Create the context of the ecdsa algorithm, expected result 1
485- * 2. Set the para by eccId(p-224/256/384/512, bp256r1/384r1/512/r1), expected result 2485+ * 2. Set the para by eccId(p-192/224/256/384/512, bp256r1/384r1/512/r1), expected result 2
486 * 3. Convert the format of the public key vector to COMPRESSED, expected result 3486 * 3. Convert the format of the public key vector to COMPRESSED, expected result 3
487 * 4. Set the public key, expected result 4487 * 4. Set the public key, expected result 4
488 * 5. Call the CRYPT_EAL_PkeyCtrl method to set point format to COMPRESSED, expected result 5488 * 5. Call the CRYPT_EAL_PkeyCtrl method to set point format to COMPRESSED, expected result 5
@@ -682,7 +682,7 @@ EXIT:
682 * @precon Public keys of different lengths.682 * @precon Public keys of different lengths.
683 * @brief683 * @brief
684 * 1. Create the context of the ecdsa algorithm, expected result 1684 * 1. Create the context of the ecdsa algorithm, expected result 1
685- * 2. Set the para by eccId(p-224/256/384/512, bp256r1/384r1/512/r1), expected result 2685+ * 2. Set the para by eccId(p-192/224/256/384/512, bp256r1/384r1/512/r1), expected result 2
686 * 3. Set public keys of different lengths, expected result 3686 * 3. Set public keys of different lengths, expected result 3
687 * @expect687 * @expect
688 * 1. Success, and the context is not NULL.688 * 1. Success, and the context is not NULL.
@@ -705,7 +705,7 @@ EXIT:
705 * @brief705 * @brief
706 * 1. Get para id before creating context, expected result 1706 * 1. Get para id before creating context, expected result 1
707 * 2. Create the context of the ECDSA algorithm, expected result 2707 * 2. Create the context of the ECDSA algorithm, expected result 2
708- * 3. Set para id(p-224/256/384/512), expected result 3708+ * 3. Set para id(p-192/224/256/384/512), expected result 3
709 * 4. Get para id, expected result 4709 * 4. Get para id, expected result 4
710 * @expect710 * @expect
711 * 1. CRYPT_PKEY_PARAID_MAX711 * 1. CRYPT_PKEY_PARAID_MAX
@@ -47,6 +47,18 @@ SDV_CRYPTO_ECDSA_SIGN_DATA_API_TC001:"708309a7449e156b0db70e5b52e606c7e094ed676c
47SDV_CRYPTO_ECDSA_SIGN_DATA_API_TC001: Nist47SDV_CRYPTO_ECDSA_SIGN_DATA_API_TC001: Nist
48SDV_CRYPTO_ECDSA_SIGN_DATA_API_TC001:"708309a7449e156b0db70e5b52e606c7e094ed676ce8953bf6c14757c826f590":"ff624d0ba02c7b6370c1622eec3fa2186ea681d1659e0a845448e777b75a8e77a77bb26e5733179d58ef9bc8a4e8b6971aef2539f77ab0963a3415bbd6258339bd1bf55de65db520c63f5b8eab3d55debd05e9494212170f5d65b3286b8b668705b1e2b2b5568610617abb51d2dd0cb450ef59df4b907da90cfa7b268de8c4c2":148SDV_CRYPTO_ECDSA_SIGN_DATA_API_TC001:"708309a7449e156b0db70e5b52e606c7e094ed676ce8953bf6c14757c826f590":"ff624d0ba02c7b6370c1622eec3fa2186ea681d1659e0a845448e777b75a8e77a77bb26e5733179d58ef9bc8a4e8b6971aef2539f77ab0963a3415bbd6258339bd1bf55de65db520c63f5b8eab3d55debd05e9494212170f5d65b3286b8b668705b1e2b2b5568610617abb51d2dd0cb450ef59df4b907da90cfa7b268de8c4c2":1
49 49 
50+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002 P-192 msg IS ALL 0X00
51+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002:CRYPT_ECC_NISTP192:"0017899949d02b55f9556846411cc9de512c6f16ecdeb1c4":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":"0098e9c07e8e6adb97b77d85b0c10a265e11737a89a3e37b":"14f69738599689f5706ab71343becc886ef1569a2d1137fe":"0cf5a433909e33217fb4df6b9593f71d43fb1c2a5653b763":1:0
52+ 
53+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002 P-224 msg IS ALL 0X00
54+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002:CRYPT_ECC_NISTP192:"0064c3a51fb6188170f3cdf12b474a77de4ae0052b84ece8":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":"00797552b9abf541c886f93556103b817a46c9aa0e2bc86f":"386afa71afc065019f3d2021ead531ed1d365887122d2d4b":"bbfb6e9cdb32c2252015acfb4cfb049b08b4cb279c64928a":1:1
55+ 
56+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002 P-224 msg IS ALL 0XFF
57+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002:CRYPT_ECC_NISTP192:"00abd205ef412646907d2e4886b8ffd7d94678bd3818ed54":"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff":"00b81567f9e19c4ace373a26337488c1a476b7ee8d8e52bf":"3b1c19d73b6a4d7a12003530a54ae0f5ba18d75c98a0db95":"afb8bd8c94c6e3d5dc050e3641c0fad771557ce97f5f3dba":1:0
58+ 
59+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002 P-224 msg IS ALL 0XFF
60+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002:CRYPT_ECC_NISTP192:"0045624e643545c113e4a1993cfac6f23c6e0486c98e14c9":"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff":"008df8209daae53a365bdcc8608f597315d43f587859d96a":"21933e6e8cdcfff62f36c45e83dece1280a888663a34608f":"565890e37fdf563595d24524ef1da9aae246892e75a74234":1:1
61+ 
50SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002 P-224 msg IS ALL 0X0062SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002 P-224 msg IS ALL 0X00
51SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002:CRYPT_ECC_NISTP224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":"d9a5a7328117f48b4b8dd8c17dae722e756b3ff64bd29a527137eec0":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":1:063SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC002:CRYPT_ECC_NISTP224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":"d9a5a7328117f48b4b8dd8c17dae722e756b3ff64bd29a527137eec0":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":1:0
52 64 
@@ -89,6 +101,9 @@ SDV_CRYPTO_ECDSA_CTRL_API_TC001:CRYPT_CTRL_SET_RSA_PADDING:CRYPT_ECC_PKEY_ERR_UN
89SDV_CRYPTO_ECDSA_CTRL_API_TC002101SDV_CRYPTO_ECDSA_CTRL_API_TC002
90SDV_CRYPTO_ECDSA_CTRL_API_TC002:102SDV_CRYPTO_ECDSA_CTRL_API_TC002:
91 103 
104+SDV_CRYPTO_ECDSA_CTRL_API_TC003: Nist P-192
105+SDV_CRYPTO_ECDSA_CTRL_API_TC003:CRYPT_ECC_NISTP192:"14f69738599689f5706ab71343becc886ef1569a2d1137fe":"0cf5a433909e33217fb4df6b9593f71d43fb1c2a5653b763"
106+ 
92SDV_CRYPTO_ECDSA_CTRL_API_TC003: Nist P-224107SDV_CRYPTO_ECDSA_CTRL_API_TC003: Nist P-224
93SDV_CRYPTO_ECDSA_CTRL_API_TC003:CRYPT_ECC_NISTP224:"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669"108SDV_CRYPTO_ECDSA_CTRL_API_TC003:CRYPT_ECC_NISTP224:"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669"
94 109 
@@ -140,6 +155,12 @@ SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"":"":0
140SDV_CRYPTO_ECDSA_SET_PUB_API_TC003155SDV_CRYPTO_ECDSA_SET_PUB_API_TC003
141SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"":"":1156SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"":"":1
142 157 
158+SDV_CRYPTO_ECDSA_SET_PUB_API_TC003
159+SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP192:"":"":0
160+ 
161+SDV_CRYPTO_ECDSA_SET_PUB_API_TC003
162+SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP192:"":"":1
163+ 
143SDV_CRYPTO_ECDSA_SET_PUB_API_TC003164SDV_CRYPTO_ECDSA_SET_PUB_API_TC003
144SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP256:"":"":0165SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP256:"":"":0
145 166 
@@ -161,6 +182,12 @@ SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP384R1:"":"":0
161SDV_CRYPTO_ECDSA_SET_PUB_API_TC003182SDV_CRYPTO_ECDSA_SET_PUB_API_TC003
162SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"":"":0183SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"":"":0
163 184 
185+SDV_CRYPTO_ECDSA_SET_PUB_API_TC003: Nist
186+SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP192:"05284fbaa76ce0faae2ca4867d01092fa1ace5724cd12c8dd0e42af3dbf3206be3fcbcc3a7ccaf60c73dc29e7bb9b44fca":"0482c949295156192df0b52480e38c810751ac570daec460a3200057ada615c80b8ff256ce8d47f2562b74a438f1921ac3":0
187+ 
188+SDV_CRYPTO_ECDSA_SET_PUB_API_TC003: Nist
189+SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP192:"05284fbaa76ce0faae2ca4867d01092fa1ace5724cd12c8dd0e42af3dbf3206be3fcbcc3a7ccaf60c73dc29e7bb9b44fca":"0482c949295156192df0b52480e38c810751ac570daec460a3200057ada615c80b8ff256ce8d47f2562b74a438f1921ac3":1
190+ 
164SDV_CRYPTO_ECDSA_SET_PUB_API_TC003: Nist191SDV_CRYPTO_ECDSA_SET_PUB_API_TC003: Nist
165SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"05605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"04605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc666a":0192SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_NISTP224:"05605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"04605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc666a":0
166 193 
@@ -215,6 +242,9 @@ SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"0A420517E406AAC0AC
215SDV_CRYPTO_ECDSA_SET_PUB_API_TC003: FRC 7072242SDV_CRYPTO_ECDSA_SET_PUB_API_TC003: FRC 7072
216SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"0A420517E406AAC0ACDCE90FCD71487718D3B953EFD7FBEC5F7F27E28C6149999397E91E029E06457DB2D3E640668B392C2A7E737A7F0BF04436D11640FD09FD72E6882E8DB28AAD36237CD25D580DB23783961C8DC52DFA2EC138AD472A0FCEF3887CF62B623B2A87DE5C588301EA3E5FC269B373B60724F5E82A6AD147FDE7":"070562E68B9AF7CBFD5565C6B16883B777FF11C199161ECC427A39D17EC2166499389571D6A994977C56AD8252658BA8A1B72AE42F4FB7532151AFC3EF0971CCDAA7CA2D8191E21776A89860AFBC1F582FAA308D551C1DC6133AF9F9C3CAD59998D70079548140B90B1F311AFB378AA81F51B275B2BE6B7DEE978EFC7343EA642F":1243SDV_CRYPTO_ECDSA_SET_PUB_API_TC003:CRYPT_ECC_BRAINPOOLP512R1:"0A420517E406AAC0ACDCE90FCD71487718D3B953EFD7FBEC5F7F27E28C6149999397E91E029E06457DB2D3E640668B392C2A7E737A7F0BF04436D11640FD09FD72E6882E8DB28AAD36237CD25D580DB23783961C8DC52DFA2EC138AD472A0FCEF3887CF62B623B2A87DE5C588301EA3E5FC269B373B60724F5E82A6AD147FDE7":"070562E68B9AF7CBFD5565C6B16883B777FF11C199161ECC427A39D17EC2166499389571D6A994977C56AD8252658BA8A1B72AE42F4FB7532151AFC3EF0971CCDAA7CA2D8191E21776A89860AFBC1F582FAA308D551C1DC6133AF9F9C3CAD59998D70079548140B90B1F311AFB378AA81F51B275B2BE6B7DEE978EFC7343EA642F":1
217 244 
245+SDV_CRYPTO_ECDSA_GET_PARA_ID_API_TC001
246+SDV_CRYPTO_ECDSA_GET_PARA_ID_API_TC001:CRYPT_ECC_NISTP192
247+ 
218SDV_CRYPTO_ECDSA_GET_PARA_ID_API_TC001248SDV_CRYPTO_ECDSA_GET_PARA_ID_API_TC001
219SDV_CRYPTO_ECDSA_GET_PARA_ID_API_TC001:CRYPT_ECC_NISTP224249SDV_CRYPTO_ECDSA_GET_PARA_ID_API_TC001:CRYPT_ECC_NISTP224
220 250 
@@ -235,12 +265,24 @@ SDV_CRYPTO_ECDSA_VERIFY_API_TC001:"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669
235SDV_CRYPTO_ECDSA_VERIFY_API_TC001: Nist265SDV_CRYPTO_ECDSA_VERIFY_API_TC001: Nist
236SDV_CRYPTO_ECDSA_VERIFY_API_TC001:"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc19495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a22367308036e2070f544ad4fff3d5122c76fad5d":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"303d021c2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6021d008d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb":1266SDV_CRYPTO_ECDSA_VERIFY_API_TC001:"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc19495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a22367308036e2070f544ad4fff3d5122c76fad5d":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"303d021c2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6021d008d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb":1
237 267 
268+SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001: Nist p192
269+SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001:CRYPT_ECC_NISTP192:"66e98a165854cd07989b1ee0ec3f8dbe0ee3c2fb0051ef53a0be03457c4f21bce7dc50ef4df37486c3207dfee26bde4ed62340cbb2da784906b1b783b4d601bdff4ae1a7e5e85a85afa3208dc60f0990c823bedddb3db663426665152ed7b093d6bda506c93a694b83ac71553f31f5cc0d6ba2fa248090e8796573c4915d1586":"14f69738599689f5706ab71343becc886ef1569a2d1137fe":"0cf5a433909e33217fb4df6b9593f71d43fb1c2a5653b763":"3036021900af1f749e3df6220ff04efd178618a977e0838b1b9dc126e30219008990a04c6cc0ff26264ecf8f7831381a9dbc6e53cc8cc860":0
270+ 
271+SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001: Nist p192
272+SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001:CRYPT_ECC_NISTP192:"66e98a165854cd07989b1ee0ec3f8dbe0ee3c2fb0051ef53a0be03457c4f21bce7dc50ef4df37486c3207dfee26bde4ed62340cbb2da784906b1b783b4d601bdff4ae1a7e5e85a85afa3208dc60f0990c823bedddb3db663426665152ed7b093d6bda506c93a694b83ac71553f31f5cc0d6ba2fa248090e8796573c4915d1586":"14f69738599689f5706ab71343becc886ef1569a2d1137fe":"0cf5a433909e33217fb4df6b9593f71d43fb1c2a5653b763":"3036021900af1f749e3df6220ff04efd178618a977e0838b1b9dc126e30219008990a04c6cc0ff26264ecf8f7831381a9dbc6e53cc8cc860":1
273+ 
238SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001: Nist274SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001: Nist
239SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001:CRYPT_ECC_NISTP224:"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc19495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a22367308036e2070f544ad4fff3d5122c76fad5d":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"303d021c2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6021d008d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb":0275SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001:CRYPT_ECC_NISTP224:"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc19495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a22367308036e2070f544ad4fff3d5122c76fad5d":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"303d021c2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6021d008d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb":0
240 276 
241SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001: Nist277SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001: Nist
242SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001:CRYPT_ECC_NISTP224:"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc19495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a22367308036e2070f544ad4fff3d5122c76fad5d":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"303d021c2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6021d008d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb":1278SDV_CRYPTO_ECDSA_VERIFY_DATA_API_TC001:CRYPT_ECC_NISTP224:"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc19495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a22367308036e2070f544ad4fff3d5122c76fad5d":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":"303d021c2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6021d008d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb":1
243 279 
280+SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001
281+SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001:CRYPT_ECC_NISTP192:80:0
282+ 
283+SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001
284+SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001:CRYPT_ECC_NISTP192:80:1
285+ 
244SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001286SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001
245SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001:CRYPT_ECC_NISTP224:112:0287SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001:CRYPT_ECC_NISTP224:112:0
246 288 
@@ -259,6 +301,12 @@ SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001:CRYPT_ECC_NISTP384:192:0
259SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001301SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001
260SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001:CRYPT_ECC_NISTP521:256:0302SDV_CRYPTO_ECDSA_GET_SECURITY_BITS_API_TC001:CRYPT_ECC_NISTP521:256:0
261 303 
304+SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001
305+SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001:CRYPT_ECC_NISTP192:392:0
306+ 
307+SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001
308+SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001:CRYPT_ECC_NISTP192:392:1
309+ 
262SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001310SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001
263SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001:CRYPT_ECC_NISTP224:456:0311SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001:CRYPT_ECC_NISTP224:456:0
264 312 
@@ -277,6 +325,12 @@ SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001:CRYPT_ECC_NISTP384:776:0
277SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001325SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001
278SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001:CRYPT_ECC_NISTP521:1064:0326SDV_CRYPTO_ECDSA_GET_KEY_BITS_API_TC001:CRYPT_ECC_NISTP521:1064:0
279 327 
328+SDV_CRYPTO_ECDSA_SET_PARA_API_TC001
329+SDV_CRYPTO_ECDSA_SET_PARA_API_TC001:CRYPT_ECC_NISTP192:0
330+ 
331+SDV_CRYPTO_ECDSA_SET_PARA_API_TC001
332+SDV_CRYPTO_ECDSA_SET_PARA_API_TC001:CRYPT_ECC_NISTP192:1
333+ 
280SDV_CRYPTO_ECDSA_SET_PARA_API_TC001334SDV_CRYPTO_ECDSA_SET_PARA_API_TC001
281SDV_CRYPTO_ECDSA_SET_PARA_API_TC001:CRYPT_ECC_NISTP224:0335SDV_CRYPTO_ECDSA_SET_PARA_API_TC001:CRYPT_ECC_NISTP224:0
282 336 
@@ -295,6 +349,12 @@ SDV_CRYPTO_ECDSA_SET_PARA_API_TC001:CRYPT_ECC_NISTP384:0
295SDV_CRYPTO_ECDSA_SET_PARA_API_TC001349SDV_CRYPTO_ECDSA_SET_PARA_API_TC001
296SDV_CRYPTO_ECDSA_SET_PARA_API_TC001:CRYPT_ECC_NISTP256:0350SDV_CRYPTO_ECDSA_SET_PARA_API_TC001:CRYPT_ECC_NISTP256:0
297 351 
352+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001 nist, [P-192,SHA-1]
353+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001:CRYPT_ECC_NISTP192:CRYPT_MD_SHA1:"0017899949d02b55f9556846411cc9de512c6f16ecdeb1c4":"66e98a165854cd07989b1ee0ec3f8dbe0ee3c2fb0051ef53a0be03457c4f21bce7dc50ef4df37486c3207dfee26bde4ed62340cbb2da784906b1b783b4d601bdff4ae1a7e5e85a85afa3208dc60f0990c823bedddb3db663426665152ed7b093d6bda506c93a694b83ac71553f31f5cc0d6ba2fa248090e8796573c4915d1586":"af1f749e3df6220ff04efd178618a977e0838b1b9dc126e3":"8990a04c6cc0ff26264ecf8f7831381a9dbc6e53cc8cc860":"0098e9c07e8e6adb97b77d85b0c10a265e11737a89a3e37b":"14f69738599689f5706ab71343becc886ef1569a2d1137fe":"0cf5a433909e33217fb4df6b9593f71d43fb1c2a5653b763":0:0
354+ 
355+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001 nist, [P-192,SHA-1]
356+SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001:CRYPT_ECC_NISTP192:CRYPT_MD_SHA1:"00abd205ef412646907d2e4886b8ffd7d94678bd3818ed54":"477101daa282a5a55b48c5313290c8da65b07cc4d41a5a1463300c60a05a2c63a6564ff641d0423c5233931c75be53f4e2da1b8b91ab4d48a2e59ca2fbe1cfd833f0c1e2afefada70a1ba870ba276f9df18c6397c221d20585eb78437c36460fb7e4628634066e504ba90d1749f2a33d5c6e5dceafa372b3d5eba8296b821972":"e36d5dbb9560d959814cbd30aa6a405da9652fbd250da9ab":"f2db3d62733f6d08b08ef0682f579ac527950117f39e474b":"00b81567f9e19c4ace373a26337488c1a476b7ee8d8e52bf":"3b1c19d73b6a4d7a12003530a54ae0f5ba18d75c98a0db95":"afb8bd8c94c6e3d5dc050e3641c0fad771557ce97f5f3dba":1:1
357+ 
298SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001 nist, [P-224,SHA-224]358SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001 nist, [P-224,SHA-224]
299SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001:CRYPT_ECC_NISTP224:CRYPT_MD_SHA224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc19495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a22367308036e2070f544ad4fff3d5122c76fad5d":"2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6":"8d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb":"d9a5a7328117f48b4b8dd8c17dae722e756b3ff64bd29a527137eec0":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":0:0359SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001:CRYPT_ECC_NISTP224:CRYPT_MD_SHA224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":"699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc19495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a22367308036e2070f544ad4fff3d5122c76fad5d":"2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6":"8d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb":"d9a5a7328117f48b4b8dd8c17dae722e756b3ff64bd29a527137eec0":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":0:0
300 360 
@@ -355,6 +415,42 @@ SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001:CRYPT_ECC_NISTP521:CRYPT_MD_SHA384:"0095
355SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001 nist, [P-521,SHA-512]415SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001 nist, [P-521,SHA-512]
356SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001:CRYPT_ECC_NISTP521:CRYPT_MD_SHA512:"01a4d2623a7d59c55f408331ba8d1523b94d6bf8ac83375ceb57a2b395a5bcf977cfc16234d4a97d6f6ee25a99aa5bff15ff535891bcb7ae849a583e01ac49e0e9b6":"b3c63e5f5a21c4bfe3dbc644354d9a949186d6a9e1dd873828782aa6a0f1df2f64114a430b1c13fe8a2e09099e1ed05ef70de698161039ded73bcb50b312673bb073f8a792ac140a78a8b7f3586dffb1fc8be4f54516d57418ccc9945025ce3acf1eb84f69ceee5e9bd10c18c251dbc481562cd3aae54b54ab618cb1eeda33cf":"01a3c4a6386c4fb614fba2cb9e74201e1aaa0001aa931a2a939c92e04b8344535a20f53c6e3c69c75c2e5d2fe3549ed27e6713cb0f4a9a94f6189eb33bff7d453fce":"016a997f81aa0bea2e1469c8c1dab7df02a8b2086ba482c43af04f2174831f2b1761658795adfbdd44190a9b06fe10e578987369f3a2eced147cff89d8c2818f7471":"00bc2c0f37155859303de6fa539a39714e195c37c6ea826e224c8218584ae09cd0d1cc14d94d93f2d83c96e4ef68517fdb3f383da5404e5a426bfc5d424e253c181b":"004d5c8afee038984d2ea96681ec0dccb6b52dfa4ee2e2a77a23c8cf43ef19905a34d6f5d8c5cf0981ed804d89d175b17d1a63522ceb1e785c0f5a1d2f3d15e51352":"0014368b8e746807b2b68f3615cd78d761a464ddd7918fc8df51d225962fdf1e3dc243e265100ff0ec133359e332e44dd49afd8e5f38fe86133573432d33c02fa0a3":0:0416SDV_CRYPTO_ECDSA_SIGN_VERIFY_FUNC_TC001:CRYPT_ECC_NISTP521:CRYPT_MD_SHA512:"01a4d2623a7d59c55f408331ba8d1523b94d6bf8ac83375ceb57a2b395a5bcf977cfc16234d4a97d6f6ee25a99aa5bff15ff535891bcb7ae849a583e01ac49e0e9b6":"b3c63e5f5a21c4bfe3dbc644354d9a949186d6a9e1dd873828782aa6a0f1df2f64114a430b1c13fe8a2e09099e1ed05ef70de698161039ded73bcb50b312673bb073f8a792ac140a78a8b7f3586dffb1fc8be4f54516d57418ccc9945025ce3acf1eb84f69ceee5e9bd10c18c251dbc481562cd3aae54b54ab618cb1eeda33cf":"01a3c4a6386c4fb614fba2cb9e74201e1aaa0001aa931a2a939c92e04b8344535a20f53c6e3c69c75c2e5d2fe3549ed27e6713cb0f4a9a94f6189eb33bff7d453fce":"016a997f81aa0bea2e1469c8c1dab7df02a8b2086ba482c43af04f2174831f2b1761658795adfbdd44190a9b06fe10e578987369f3a2eced147cff89d8c2818f7471":"00bc2c0f37155859303de6fa539a39714e195c37c6ea826e224c8218584ae09cd0d1cc14d94d93f2d83c96e4ef68517fdb3f383da5404e5a426bfc5d424e253c181b":"004d5c8afee038984d2ea96681ec0dccb6b52dfa4ee2e2a77a23c8cf43ef19905a34d6f5d8c5cf0981ed804d89d175b17d1a63522ceb1e785c0f5a1d2f3d15e51352":"0014368b8e746807b2b68f3615cd78d761a464ddd7918fc8df51d225962fdf1e3dc243e265100ff0ec133359e332e44dd49afd8e5f38fe86133573432d33c02fa0a3":0:0
357 417 
418+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], F (2 - Point not on curve)
419+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"491c0c4761b0a4a147b5e4ce03a531546644f5d1e3d05e57":"6fa5addd47c5d6be3933fbff88f57a6c8ca0232c471965de":0:CRYPT_POINT_UNCOMPRESSED:0
420+ 
421+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], P
422+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"646c22e8aa5f7833390e0399155ac198ae42470bba4fc834":"8d4afcfffd80e69a4d180178b37c44572495b7b267ee32a9":1:CRYPT_POINT_UNCOMPRESSED:0
423+ 
424+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], F (2 - Point not on curve)
425+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"4c6b9ea0dec92ecfff7799470be6a2277b9169daf45d54bb":"f0eab42826704f51b26ae98036e83230becb639dd1964627":0:CRYPT_POINT_UNCOMPRESSED:0
426+ 
427+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], P
428+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"0673c8bb717b055c3d6f55c06acfcfb7260361ed3ec0f414":"ba8b172826eb0b854026968d2338a180450a27906f6eddea":1:CRYPT_POINT_HYBRID:0
429+ 
430+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], F (2 - Point not on curve)
431+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"82c949295156192df0b52480e38c810751ac570daec460a3":"200057ada615c80b8ff256ce8d47f2562b74a438f1921ac3":0:CRYPT_POINT_HYBRID:0
432+ 
433+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], P
434+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"284fbaa76ce0faae2ca4867d01092fa1ace5724cd12c8dd0":"e42af3dbf3206be3fcbcc3a7ccaf60c73dc29e7bb9b44fca":1:CRYPT_POINT_COMPRESSED:0
435+ 
436+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], F (1 - Q_x or Q_y out of range)
437+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"01b574acd4fb0f60dde3e3b5f3f0e94211f95112e43cba6fd2":"bcc1b8a770f01a22e84d7f14e44932ffe094d8e3b1e6ac26":0:CRYPT_POINT_UNCOMPRESSED:0
438+ 
439+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], F (1 - Q_x or Q_y out of range)
440+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"016ba109f1f1bb44e0d05b80181c03412ea764a59601d17e9f":"0569a843dbb4e287db420d6b9fe30cd7b5d578b052315f56":0:CRYPT_POINT_HYBRID:0
441+ 
442+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], F (1 - Q_x or Q_y out of range)
443+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"01333308a7c833ede5189d25ea3525919c9bd16370d904938d":"b10fd01d67df75ff9b726c700c1b50596c9f0766ea56f80e":0:CRYPT_POINT_UNCOMPRESSED:0
444+ 
445+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], P
446+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"9671ec444cff24c8a5be80b018fa505ed6109a731e88c91a":"fe79dae23008e46bf4230c895aab261a95845a77f06d0655":1:CRYPT_POINT_COMPRESSED:0
447+ 
448+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], F (1 - Q_x or Q_y out of range)P
449+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"0158e8b6f0b14216bc52fe8897b4305d870ede70436a96741d":"fb3f970b19a313571a1a23be310923f85acc1cab0a157cbd":0:CRYPT_POINT_HYBRID:0
450+ 
451+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-192], F (2 - Point not on curve)
452+SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP192:"ace95b650c08f73dbb4fa7b4bbdebd6b809a25b28ed135ef":"e9b8679404166d1329dd539ad52aad9a1b6681f5f26bb9aa":0:CRYPT_POINT_UNCOMPRESSED:0
453+ 
358SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-224], P454SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001: nist, [P-224], P
359SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP224:"7fb5f1881188022d9b0a8b808834dfdc0c7388459350983e4aee1412":"661c3e17be24b038b1532d90675747482c238911093fb7035cc9b2cd":1:CRYPT_POINT_UNCOMPRESSED:0455SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_NISTP224:"7fb5f1881188022d9b0a8b808834dfdc0c7388459350983e4aee1412":"661c3e17be24b038b1532d90675747482c238911093fb7035cc9b2cd":1:CRYPT_POINT_UNCOMPRESSED:0
360 456 
@@ -529,6 +625,12 @@ SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_BRAINPOOLP384R1:"45CB26E4384DAF6FB
529SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001 RFC 6932, brainpool p512r1625SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001 RFC 6932, brainpool p512r1
530SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_BRAINPOOLP512R1:"0562E68B9AF7CBFD5565C6B16883B777FF11C199161ECC427A39D17EC2166499389571D6A994977C56AD8252658BA8A1B72AE42F4FB7532151AFC3EF0971CCDA":"A7CA2D8191E21776A89860AFBC1F582FAA308D551C1DC6133AF9F9C3CAD59998D70079548140B90B1F311AFB378AA81F51B275B2BE6B7DEE978EFC7343EA642E":1:CRYPT_POINT_UNCOMPRESSED:0626SDV_CRYPTO_ECDSA_SET_PUB_FUNC_TC001:CRYPT_ECC_BRAINPOOLP512R1:"0562E68B9AF7CBFD5565C6B16883B777FF11C199161ECC427A39D17EC2166499389571D6A994977C56AD8252658BA8A1B72AE42F4FB7532151AFC3EF0971CCDA":"A7CA2D8191E21776A89860AFBC1F582FAA308D551C1DC6133AF9F9C3CAD59998D70079548140B90B1F311AFB378AA81F51B275B2BE6B7DEE978EFC7343EA642E":1:CRYPT_POINT_UNCOMPRESSED:0
531 627 
628+SDV_CRYPTO_ECDSA_GEN_KEY_FUNC_TC001 Nist, P-192 COMPRESS
629+SDV_CRYPTO_ECDSA_GEN_KEY_FUNC_TC001:CRYPT_ECC_NISTP192:"a18d8e411b209b8f3cc01714667cd1497e7da7100337d61c":"54d3206218f2228ee22d2b055940106ab610e608ecdbad37":"0afcfb2095fb68886a7bc34d5c6d7df3fbee59ff746373aa":0:0
630+ 
631+SDV_CRYPTO_ECDSA_GEN_KEY_FUNC_TC001 Nist, P-192 COMPRESS
632+SDV_CRYPTO_ECDSA_GEN_KEY_FUNC_TC001:CRYPT_ECC_NISTP192:"24edd22f7ddd6fa5bc61fc0653479aa40809ef865cf27a47":"9bf12d7174b7708a076a38bc80aa28662f251e2ed8d414dc":"4854c8d07dfc08824e9e471ca2fedcfcff3ddcb011573498":0:1
633+ 
532SDV_CRYPTO_ECDSA_GEN_KEY_FUNC_TC001 Nist, P-224 COMPRESS634SDV_CRYPTO_ECDSA_GEN_KEY_FUNC_TC001 Nist, P-224 COMPRESS
533SDV_CRYPTO_ECDSA_GEN_KEY_FUNC_TC001:CRYPT_ECC_NISTP224:"e7c92383846a4e6887a10498d8eaca2bd0487d985bd7d3f92ce3ab30":"0a3682d2aaa4dd931bee042d32e95755507ab164b12f84843f4b7b96":"a6313a938eff7a293222e0e3c7b4c6132489b33255a61c3fc1ce2256":0:0635SDV_CRYPTO_ECDSA_GEN_KEY_FUNC_TC001:CRYPT_ECC_NISTP224:"e7c92383846a4e6887a10498d8eaca2bd0487d985bd7d3f92ce3ab30":"0a3682d2aaa4dd931bee042d32e95755507ab164b12f84843f4b7b96":"a6313a938eff7a293222e0e3c7b4c6132489b33255a61c3fc1ce2256":0:0
534 636 
@@ -559,12 +661,24 @@ SDV_CRYPTO_ECDSA_GEN_KEY_FUNC_TC001:CRYPT_ECC_BRAINPOOLP512R1:"636B6BE0482A6C1C4
559SDV_CRYPTO_ECDSA_GET_PARA_FUNC_TC001661SDV_CRYPTO_ECDSA_GET_PARA_FUNC_TC001
560SDV_CRYPTO_ECDSA_GET_PARA_FUNC_TC001:"ffffffffffffffffffffffffffffffff000000000000000000000001":"fffffffffffffffffffffffffffffffefffffffffffffffffffffffe":"b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4":"b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21":"bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34":"ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d":"01"662SDV_CRYPTO_ECDSA_GET_PARA_FUNC_TC001:"ffffffffffffffffffffffffffffffff000000000000000000000001":"fffffffffffffffffffffffffffffffefffffffffffffffffffffffe":"b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4":"b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21":"bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34":"ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d":"01"
561 663 
562-Ecdsa key pair check: Nist, [P-224,SHA-224], Pass664+Ecdsa key pair check: Nist, [P-192], Pass
665+SDV_CRYPTO_ECDSA_KEY_PAIR_CHECK_FUNC_TC001:CRYPT_ECC_NISTP192:"756270bc1c92cd7a586d7c808d75570cee966a42a61435ed":"8b64bda6551000bf416c1d14560afacedb720a87f06d8bdd":"10d5179a28bff54c1d885a9d068978c53b0096511a69551b":CRYPT_POINT_COMPRESSED:1
666+ 
667+Ecdsa key pair check: Nist, [P-192], Fail
668+SDV_CRYPTO_ECDSA_KEY_PAIR_CHECK_FUNC_TC001:CRYPT_ECC_NISTP192:"bc66fa4faf6d77f488bd38f07630832de202fd894c2707e6":"96b758c5f6ab47d21bc3d80126d968fa243c8f8b24644bad":"792cfc9dcfe4533fd2f72c35a18b27d4ea9875d9bea9590a":CRYPT_POINT_COMPRESSED:0
669+ 
670+Ecdsa key pair check: Nist, [P-224], Pass
563SDV_CRYPTO_ECDSA_KEY_PAIR_CHECK_FUNC_TC001:CRYPT_ECC_NISTP224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":CRYPT_POINT_COMPRESSED:1671SDV_CRYPTO_ECDSA_KEY_PAIR_CHECK_FUNC_TC001:CRYPT_ECC_NISTP224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":CRYPT_POINT_COMPRESSED:1
564 672 
565-Ecdsa key pair check: Nist, [P-224,SHA-224], Fail673+Ecdsa key pair check: Nist, [P-224], Fail
566SDV_CRYPTO_ECDSA_KEY_PAIR_CHECK_FUNC_TC001:CRYPT_ECC_NISTP224:"cf020a1ff36c28511191482ed1e5259c60d383606c581948c3fbe2c5":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":CRYPT_POINT_COMPRESSED:0674SDV_CRYPTO_ECDSA_KEY_PAIR_CHECK_FUNC_TC001:CRYPT_ECC_NISTP224:"cf020a1ff36c28511191482ed1e5259c60d383606c581948c3fbe2c5":"605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab":"f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669":CRYPT_POINT_COMPRESSED:0
567 675 
676+SDV_CRYPTO_ECDSA_API_TC026 ecdsa key len
677+SDV_CRYPTO_ECDSA_API_TC026:CRYPT_ECC_NISTP192:49:0
678+ 
679+SDV_CRYPTO_ECDSA_API_TC026 ecdsa key len
680+SDV_CRYPTO_ECDSA_API_TC026:CRYPT_ECC_NISTP192:49:1
681+ 
568SDV_CRYPTO_ECDSA_API_TC026 ecdsa key len682SDV_CRYPTO_ECDSA_API_TC026 ecdsa key len
569SDV_CRYPTO_ECDSA_API_TC026:CRYPT_ECC_NISTP224:57:0683SDV_CRYPTO_ECDSA_API_TC026:CRYPT_ECC_NISTP224:57:0
570 684 
@@ -589,10 +703,13 @@ SDV_CRYPTO_ECDSA_API_TC026:CRYPT_ECC_NISTP521:133:0
589SDV_CRYPTO_ECDSA_API_TC026 ecdsa key len703SDV_CRYPTO_ECDSA_API_TC026 ecdsa key len
590SDV_CRYPTO_ECDSA_API_TC026:CRYPT_ECC_NISTP521:133:1704SDV_CRYPTO_ECDSA_API_TC026:CRYPT_ECC_NISTP521:133:1
591 705 
592-SDV_CRYPTO_GETSECURITYBITS_API_TC001 P-224 CRYPT_MD_SHA224706+SDV_CRYPTO_GETSECURITYBITS_API_TC001 P-192
707+SDV_CRYPTO_GETSECURITYBITS_API_TC001:CRYPT_ECC_NISTP192:"578a58f71c8deb5ceff819f0f5f1b3d92b9b045a0a1bf5b4":80:0
708+ 
709+SDV_CRYPTO_GETSECURITYBITS_API_TC001 P-224
593SDV_CRYPTO_GETSECURITYBITS_API_TC001:CRYPT_ECC_NISTP224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":112:0710SDV_CRYPTO_GETSECURITYBITS_API_TC001:CRYPT_ECC_NISTP224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":112:0
594 711 
595-SDV_CRYPTO_GETSECURITYBITS_API_TC001 P-224 CRYPT_MD_SHA224712+SDV_CRYPTO_GETSECURITYBITS_API_TC001 P-224
596SDV_CRYPTO_GETSECURITYBITS_API_TC001:CRYPT_ECC_NISTP224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":112:1713SDV_CRYPTO_GETSECURITYBITS_API_TC001:CRYPT_ECC_NISTP224:"16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615":112:1
597 714 
598SDV_CRYPTO_ECDSA_Import_Export_FUNC_TC001715SDV_CRYPTO_ECDSA_Import_Export_FUNC_TC001
@@ -13,6 +13,9 @@ SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001:"../testdata/cert/asn1/rsa3072pub_pkcs1.der
13SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001 parse rsa4096 pubkey file and verify signature13SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001 parse rsa4096 pubkey file and verify signature
14SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001:"../testdata/cert/asn1/rsa4096pub_pkcs1.der":CRYPT_PUBKEY_RSA:CRYPT_MD_SHA256:"00010203040506070809":"52b83ba5f352aaa2bdcce579f55bc3665f7794169198c49ffcc3a8a6ad220e480b20010e2bbdbb66e5df08a9b54bc10af33c03b39a81bec743dd48ac281f8037e071fd800b9d429ec2f0c029a35fd65d8c6adc884cd7bae1bf0dc10631a7c8968a4e5cb29774b803a5fbd62a3386183b6faee7c4b0cf409c88f349073ae47d92cd8b70b1e9c8f12219869d7fc5e330d98bd825933cb63739d95f8c1ced7f9aa3da20caa9bb07bbc9acaad29805960350a7df3b5d45c9a9bef99efb49f926da543336fbc680868efae2f9cd36c3be6dec7ae3a27038a445753adeae0f12245d2654b882fbd40255b56019865f7db30d2c14e25710ef12025de18d26b54ea474e36116cba2a2f929d210cee259802ee9555f26e30f0f92b2db3871e840dc7fd999cfe255ff313cbfaa81325549e56bff4fbcefd3981a810554d421bf428c210b5958a80127a7ff7a7cbd2a9d1899b620faa7a3fc4de62c816d81d6521a86406c3b4e3d24ab2dec26385b8c4ac73d8719c6bd642242386f52aab92426e90be8cb53a343e341963e0ce421b90d635cffff6733dc0c5d97809eafbf0c5a6f231a51f5c67e598b1ee8b9ab9ab0260647038bd89b77694aa09ba8b7cefd9d78722ed9213a11a9c38c8d1894002e3e7fbae36e6229b758866af72b10b93f8cc8c85101d57a3c7ef57cc3cb80837041742cd97a20388378cd662ece1cca37dabe06d1db65"14SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001:"../testdata/cert/asn1/rsa4096pub_pkcs1.der":CRYPT_PUBKEY_RSA:CRYPT_MD_SHA256:"00010203040506070809":"52b83ba5f352aaa2bdcce579f55bc3665f7794169198c49ffcc3a8a6ad220e480b20010e2bbdbb66e5df08a9b54bc10af33c03b39a81bec743dd48ac281f8037e071fd800b9d429ec2f0c029a35fd65d8c6adc884cd7bae1bf0dc10631a7c8968a4e5cb29774b803a5fbd62a3386183b6faee7c4b0cf409c88f349073ae47d92cd8b70b1e9c8f12219869d7fc5e330d98bd825933cb63739d95f8c1ced7f9aa3da20caa9bb07bbc9acaad29805960350a7df3b5d45c9a9bef99efb49f926da543336fbc680868efae2f9cd36c3be6dec7ae3a27038a445753adeae0f12245d2654b882fbd40255b56019865f7db30d2c14e25710ef12025de18d26b54ea474e36116cba2a2f929d210cee259802ee9555f26e30f0f92b2db3871e840dc7fd999cfe255ff313cbfaa81325549e56bff4fbcefd3981a810554d421bf428c210b5958a80127a7ff7a7cbd2a9d1899b620faa7a3fc4de62c816d81d6521a86406c3b4e3d24ab2dec26385b8c4ac73d8719c6bd642242386f52aab92426e90be8cb53a343e341963e0ce421b90d635cffff6733dc0c5d97809eafbf0c5a6f231a51f5c67e598b1ee8b9ab9ab0260647038bd89b77694aa09ba8b7cefd9d78722ed9213a11a9c38c8d1894002e3e7fbae36e6229b758866af72b10b93f8cc8c85101d57a3c7ef57cc3cb80837041742cd97a20388378cd662ece1cca37dabe06d1db65"
15 15 
16+SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001 parse prime192v1 pubkey file and verify signature
17+SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001:"../testdata/cert/chain/nistp192_certs/ee_nistp192_pubkey.der":CRYPT_PUBKEY_SUBKEY:CRYPT_MD_SHA256:"00010203040506070809":"3035021870cb71da14e192f9cff974ab54c486544db71cbe14c19519021900e7b37aa77486f4677f306b4feb09df7be02c4839d2dbb7fa"
18+ 
16SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001 parse prime256v1 pubkey file and verify signature19SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001 parse prime256v1 pubkey file and verify signature
17SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001:"../testdata/cert/asn1/prime256v1pub.der":CRYPT_PUBKEY_SUBKEY:CRYPT_MD_SHA256:"00010203040506070809":"304402207e82bdc8d6e0ab55aa1c989867afd473bb057e48213b33d368105cd87f65027b022018c4ce1dfa13bf89b555c4fbf3e5a19bfbf6b14d33b2fd34991541283e4badca"20SDV_BSL_ASN1_PARSE_PUBKEY_FILE_TC001:"../testdata/cert/asn1/prime256v1pub.der":CRYPT_PUBKEY_SUBKEY:CRYPT_MD_SHA256:"00010203040506070809":"304402207e82bdc8d6e0ab55aa1c989867afd473bb057e48213b33d368105cd87f65027b022018c4ce1dfa13bf89b555c4fbf3e5a19bfbf6b14d33b2fd34991541283e4badca"
18 21 
@@ -70,6 +73,12 @@ SDV_BSL_ASN1_PARSE_PRIKEY_FILE_TC001:1:"../testdata/cert/asn1/rsa3072key_pkcs8.d
70SDV_BSL_ASN1_PARSE_PRIKEY_FILE_TC001 parse rsa4096 pkcs8 prikey file and sign data73SDV_BSL_ASN1_PARSE_PRIKEY_FILE_TC001 parse rsa4096 pkcs8 prikey file and sign data
71SDV_BSL_ASN1_PARSE_PRIKEY_FILE_TC001:1:"../testdata/cert/asn1/rsa4096key_pkcs8.der":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"PRIKEY_PKCS8_UNENCRYPT":CRYPT_MD_SHA256:"00010203040506070809":"52b83ba5f352aaa2bdcce579f55bc3665f7794169198c49ffcc3a8a6ad220e480b20010e2bbdbb66e5df08a9b54bc10af33c03b39a81bec743dd48ac281f8037e071fd800b9d429ec2f0c029a35fd65d8c6adc884cd7bae1bf0dc10631a7c8968a4e5cb29774b803a5fbd62a3386183b6faee7c4b0cf409c88f349073ae47d92cd8b70b1e9c8f12219869d7fc5e330d98bd825933cb63739d95f8c1ced7f9aa3da20caa9bb07bbc9acaad29805960350a7df3b5d45c9a9bef99efb49f926da543336fbc680868efae2f9cd36c3be6dec7ae3a27038a445753adeae0f12245d2654b882fbd40255b56019865f7db30d2c14e25710ef12025de18d26b54ea474e36116cba2a2f929d210cee259802ee9555f26e30f0f92b2db3871e840dc7fd999cfe255ff313cbfaa81325549e56bff4fbcefd3981a810554d421bf428c210b5958a80127a7ff7a7cbd2a9d1899b620faa7a3fc4de62c816d81d6521a86406c3b4e3d24ab2dec26385b8c4ac73d8719c6bd642242386f52aab92426e90be8cb53a343e341963e0ce421b90d635cffff6733dc0c5d97809eafbf0c5a6f231a51f5c67e598b1ee8b9ab9ab0260647038bd89b77694aa09ba8b7cefd9d78722ed9213a11a9c38c8d1894002e3e7fbae36e6229b758866af72b10b93f8cc8c85101d57a3c7ef57cc3cb80837041742cd97a20388378cd662ece1cca37dabe06d1db65"74SDV_BSL_ASN1_PARSE_PRIKEY_FILE_TC001:1:"../testdata/cert/asn1/rsa4096key_pkcs8.der":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"PRIKEY_PKCS8_UNENCRYPT":CRYPT_MD_SHA256:"00010203040506070809":"52b83ba5f352aaa2bdcce579f55bc3665f7794169198c49ffcc3a8a6ad220e480b20010e2bbdbb66e5df08a9b54bc10af33c03b39a81bec743dd48ac281f8037e071fd800b9d429ec2f0c029a35fd65d8c6adc884cd7bae1bf0dc10631a7c8968a4e5cb29774b803a5fbd62a3386183b6faee7c4b0cf409c88f349073ae47d92cd8b70b1e9c8f12219869d7fc5e330d98bd825933cb63739d95f8c1ced7f9aa3da20caa9bb07bbc9acaad29805960350a7df3b5d45c9a9bef99efb49f926da543336fbc680868efae2f9cd36c3be6dec7ae3a27038a445753adeae0f12245d2654b882fbd40255b56019865f7db30d2c14e25710ef12025de18d26b54ea474e36116cba2a2f929d210cee259802ee9555f26e30f0f92b2db3871e840dc7fd999cfe255ff313cbfaa81325549e56bff4fbcefd3981a810554d421bf428c210b5958a80127a7ff7a7cbd2a9d1899b620faa7a3fc4de62c816d81d6521a86406c3b4e3d24ab2dec26385b8c4ac73d8719c6bd642242386f52aab92426e90be8cb53a343e341963e0ce421b90d635cffff6733dc0c5d97809eafbf0c5a6f231a51f5c67e598b1ee8b9ab9ab0260647038bd89b77694aa09ba8b7cefd9d78722ed9213a11a9c38c8d1894002e3e7fbae36e6229b758866af72b10b93f8cc8c85101d57a3c7ef57cc3cb80837041742cd97a20388378cd662ece1cca37dabe06d1db65"
72 75 
76+SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001 parse prime192v1 prikey file and sign data
77+SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001:1:1:"../testdata/cert/chain/nistp192_certs/ee_nistp192_key_pkcs1.der":CRYPT_PRIKEY_ECC:"PRIKEY_ECC":CRYPT_MD_SHA256:"00010203040506070809":CRYPT_PKEY_ECDSA:"4BA2FC3877E6E012D8B74BBB8D5E1C485A6B227A3AEBBB62":CRYPT_ECC_NISTP192:"302902010104184ba2fc3877e6e012d8b74bbb8d5e1c485a6b227a3aebbb62a00a06082a8648ce3d030101"
78+ 
79+SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001 parse prime192v1 prikey file and sign data
80+SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001:0:1:"../testdata/cert/chain/nistp192_certs/ee_nistp192_key_pkcs8.der":CRYPT_PRIKEY_PKCS8_UNENCRYPT:"PRIKEY_PKCS8_UNENCRYPT":CRYPT_MD_SHA256:"00010203040506070809":CRYPT_PKEY_ECDSA:"4BA2FC3877E6E012D8B74BBB8D5E1C485A6B227A3AEBBB62":CRYPT_ECC_NISTP192:"3039020100301306072a8648ce3d020106082a8648ce3d030101041f301d02010104184ba2fc3877e6e012d8b74bbb8d5e1c485a6b227a3aebbb62"
81+ 
73SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001 parse prime256v1 prikey file and sign data82SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001 parse prime256v1 prikey file and sign data
74SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001:1:1:"../testdata/cert/asn1/prime256v1.der":CRYPT_PRIKEY_ECC:"PRIKEY_ECC":CRYPT_MD_SHA256:"00010203040506070809":CRYPT_PKEY_ECDSA:"069db63c9e8012972c7f71bcd0ef1f6e23edc9f73ec68d49748c2159af25933b":CRYPT_ECC_NISTP256:"30310201010420069db63c9e8012972c7f71bcd0ef1f6e23edc9f73ec68d49748c2159af25933ba00a06082a8648ce3d030107"83SDV_BSL_ASN1_PARSE_ECCPRIKEY_FILE_TC001:1:1:"../testdata/cert/asn1/prime256v1.der":CRYPT_PRIKEY_ECC:"PRIKEY_ECC":CRYPT_MD_SHA256:"00010203040506070809":CRYPT_PKEY_ECDSA:"069db63c9e8012972c7f71bcd0ef1f6e23edc9f73ec68d49748c2159af25933b":CRYPT_ECC_NISTP256:"30310201010420069db63c9e8012972c7f71bcd0ef1f6e23edc9f73ec68d49748c2159af25933ba00a06082a8648ce3d030107"
75 84 
@@ -151,6 +160,9 @@ SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002:"../testdata/cert/ed25519/ed25519-wr
151SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002: wrong tag160SDV_BSL_ASN1_PARSE_ED25519PRIKEY_FILE_TC002: wrong tag
152SDV_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_TAG161SDV_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
153 162 
163+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":""
165+ 
154SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse prime256v1 pkcs8 encrypted prikey file and sign data, prf hmac256, aes256 cbc166SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse prime256v1 pkcs8 encrypted prikey file and sign data, prf hmac256, aes256 cbc
155SDV_BSL_ASN1_PARSE_ENCPK8_TC001:0:"../testdata/cert/asn1/prime256v1_pkcs8_enc.der":CRYPT_PRIKEY_PKCS8_ENCRYPT:"PRIKEY_PKCS8_ENCRYPT":"31323334":CRYPT_MD_SHA256:"00010203040506070809":""167SDV_BSL_ASN1_PARSE_ENCPK8_TC001:0:"../testdata/cert/asn1/prime256v1_pkcs8_enc.der":CRYPT_PRIKEY_PKCS8_ENCRYPT:"PRIKEY_PKCS8_ENCRYPT":"31323334":CRYPT_MD_SHA256:"00010203040506070809":""
156 168 
@@ -160,6 +172,9 @@ SDV_BSL_ASN1_PARSE_ENCPK8_TC001:0:"../testdata/cert/asn1/rsa2048key_pkcs8_enc.de
160SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse rsa2048 pkcs8 prikey encrypted prikey file and sign data, prf hmac1 optional, sm4 cbc172SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse rsa2048 pkcs8 prikey encrypted prikey file and sign data, prf hmac1 optional, sm4 cbc
161SDV_BSL_ASN1_PARSE_ENCPK8_TC001:0:"../testdata/cert/asn1/rsa2048key_pkcs8_sm4enc.der":CRYPT_PRIKEY_PKCS8_ENCRYPT:"PRIKEY_PKCS8_ENCRYPT":"31323334":CRYPT_MD_SHA256:"00010203040506070809":"2a4054ff8a8fbc4d035cbcda43a114db28b19a5190d58a794600d898e6d396ebef5af7ee91764cea4c1d65c0581950bf7463da1dc0b844c0f7439f2f2583f386609157e9a9a3a57a5cae537f418435275d745dd2b5c4c871571d99711ef1baf640be1743c7ada6c28113ebdf1f5171d54b2f83707e159d2dbecfa26a3c7a9a9dcfc83b6cba1bb8db0d55a5f1875fb7e2b21d58da1f8ebe128e979008800361a770745fadafc9cfd62bc1b4424d3fdeec531621d52cb231c69790dc7a1be5393d7b3417b0a88a93fc472eb718f7ed7800c537f1c55adc5f22f963bb199dfefa4fc1ff27510442e2e86526eaa29773e2560ab2c3bfe6a56ff7b7c72dff78a00fad"173SDV_BSL_ASN1_PARSE_ENCPK8_TC001:0:"../testdata/cert/asn1/rsa2048key_pkcs8_sm4enc.der":CRYPT_PRIKEY_PKCS8_ENCRYPT:"PRIKEY_PKCS8_ENCRYPT":"31323334":CRYPT_MD_SHA256:"00010203040506070809":"2a4054ff8a8fbc4d035cbcda43a114db28b19a5190d58a794600d898e6d396ebef5af7ee91764cea4c1d65c0581950bf7463da1dc0b844c0f7439f2f2583f386609157e9a9a3a57a5cae537f418435275d745dd2b5c4c871571d99711ef1baf640be1743c7ada6c28113ebdf1f5171d54b2f83707e159d2dbecfa26a3c7a9a9dcfc83b6cba1bb8db0d55a5f1875fb7e2b21d58da1f8ebe128e979008800361a770745fadafc9cfd62bc1b4424d3fdeec531621d52cb231c69790dc7a1be5393d7b3417b0a88a93fc472eb718f7ed7800c537f1c55adc5f22f963bb199dfefa4fc1ff27510442e2e86526eaa29773e2560ab2c3bfe6a56ff7b7c72dff78a00fad"
162 174 
175+SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse prime192v1 pkcs8 encrypted prikey file and sign data, prf hmac256, aes256 cbc
176+SDV_BSL_ASN1_PARSE_ENCPK8_TC001:1:"../testdata/cert/chain/nistp192_certs/ee_nistp192_key_pkcs8_encrypted.der":CRYPT_PRIKEY_PKCS8_ENCRYPT:"PRIKEY_PKCS8_ENCRYPT":"313233343536":CRYPT_MD_SHA256:"00010203040506070809":""
177+ 
163SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse prime256v1 pkcs8 encrypted prikey file and sign data, prf hmac256, aes256 cbc178SDV_BSL_ASN1_PARSE_ENCPK8_TC001 parse prime256v1 pkcs8 encrypted prikey file and sign data, prf hmac256, aes256 cbc
164SDV_BSL_ASN1_PARSE_ENCPK8_TC001:1:"../testdata/cert/asn1/prime256v1_pkcs8_enc.der":CRYPT_PRIKEY_PKCS8_ENCRYPT:"PRIKEY_PKCS8_ENCRYPT":"31323334":CRYPT_MD_SHA256:"00010203040506070809":""179SDV_BSL_ASN1_PARSE_ENCPK8_TC001:1:"../testdata/cert/asn1/prime256v1_pkcs8_enc.der":CRYPT_PRIKEY_PKCS8_ENCRYPT:"PRIKEY_PKCS8_ENCRYPT":"31323334":CRYPT_MD_SHA256:"00010203040506070809":""
165 180 
@@ -187,22 +202,28 @@ SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/publicpkcs8.pem":CR
187SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 rsa pkcs1202SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 rsa pkcs1
188SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/rsa2048pub.pem":CRYPT_PUBKEY_RSA:1:"3082010A0282010100A54E1B3861B07E97D99F1746CB0FD4B626E69B8D2C6332492DE37429EDE5C8910211DD2031E67C7404FA58D97E3DF21468AF6A92FA60A86A042058D47A19FDEA653CE2133EBFA0F6BF2EF2DF20DFBDD0DED3CF79DE8E1CC1A748AF9F7D435A4A08B0579D1A2FDCB7F0E4A4770FB6860D22A8B03709EF80811592A792EA7D58185725D78787F05F83210B42B012B6557EBDB8FE46C6F3F5A78B26840CD951D89681180CC817307EB673EDD3E699508456C834112E7E9F121376E5F5060635A9660F50DD938CCD643A61D3CFCD3E1D4C1D751576F029E88A522237D25A7376AB1B8133B75CAED8389339613FD39387170137C589A2C5BBAFB5B9AB0C48804D2E210203010001"203SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/rsa2048pub.pem":CRYPT_PUBKEY_RSA:1:"3082010A0282010100A54E1B3861B07E97D99F1746CB0FD4B626E69B8D2C6332492DE37429EDE5C8910211DD2031E67C7404FA58D97E3DF21468AF6A92FA60A86A042058D47A19FDEA653CE2133EBFA0F6BF2EF2DF20DFBDD0DED3CF79DE8E1CC1A748AF9F7D435A4A08B0579D1A2FDCB7F0E4A4770FB6860D22A8B03709EF80811592A792EA7D58185725D78787F05F83210B42B012B6557EBDB8FE46C6F3F5A78B26840CD951D89681180CC817307EB673EDD3E699508456C834112E7E9F121376E5F5060635A9660F50DD938CCD643A61D3CFCD3E1D4C1D751576F029E88A522237D25A7376AB1B8133B75CAED8389339613FD39387170137C589A2C5BBAFB5B9AB0C48804D2E210203010001"
189 204 
190-SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8205+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8 prime192v1 complete
206+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/chain/nistp192_certs/ee_nistp192_pubkey.der":CRYPT_PUBKEY_SUBKEY:1:"3049301306072A8648CE3D020106082A8648CE3D03010103320004B62BD68F29E864FD7F2077D78383A695636BD73081E6B43937B9A533C100AB0DA9FCDA76644CBA2844C8D06F2D68EED8"
207+ 
208+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8 prime192v1
209+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/chain/nistp192_certs/ee_nistp192_pubkey.der":CRYPT_PUBKEY_SUBKEY:0:"301306072A8648CE3D020106082A8648CE3D03010103320004B62BD68F29E864FD7F2077D78383A695636BD73081E6B43937B9A533C100AB0DA9FCDA76644CBA2844C8D06F2D68EED8"
210+ 
211+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8 secp384r1 complete
191SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/secp384r1pub.pem":CRYPT_PUBKEY_SUBKEY:1:"3076301006072A8648CE3D020106052B8104002203620004AEBF47BD84A597CB41F09E1F28E13813993476C2840084DAB242737516D1231B5DB3CD30DF7159E04ABE5A6BED2F36016C2FDABB9A6F28EA558CCDD4B8E8AACA9E8ACA0F55C04DAD4F0F1028E4D4B0185E55C37CB25FCDFADA182F0355B4AAAD"212SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/secp384r1pub.pem":CRYPT_PUBKEY_SUBKEY:1:"3076301006072A8648CE3D020106052B8104002203620004AEBF47BD84A597CB41F09E1F28E13813993476C2840084DAB242737516D1231B5DB3CD30DF7159E04ABE5A6BED2F36016C2FDABB9A6F28EA558CCDD4B8E8AACA9E8ACA0F55C04DAD4F0F1028E4D4B0185E55C37CB25FCDFADA182F0355B4AAAD"
192 213 
193-SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8214+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8 secp384r1
194SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/secp384r1pub.pem":CRYPT_PUBKEY_SUBKEY:0:"301006072A8648CE3D020106052B8104002203620004AEBF47BD84A597CB41F09E1F28E13813993476C2840084DAB242737516D1231B5DB3CD30DF7159E04ABE5A6BED2F36016C2FDABB9A6F28EA558CCDD4B8E8AACA9E8ACA0F55C04DAD4F0F1028E4D4B0185E55C37CB25FCDFADA182F0355B4AAAD"215SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/secp384r1pub.pem":CRYPT_PUBKEY_SUBKEY:0:"301006072A8648CE3D020106052B8104002203620004AEBF47BD84A597CB41F09E1F28E13813993476C2840084DAB242737516D1231B5DB3CD30DF7159E04ABE5A6BED2F36016C2FDABB9A6F28EA558CCDD4B8E8AACA9E8ACA0F55C04DAD4F0F1028E4D4B0185E55C37CB25FCDFADA182F0355B4AAAD"
195 216 
196-SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8217+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8 secp521r1 complete
197SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/secp521r1pub.der":CRYPT_PUBKEY_SUBKEY:1:"30819B301006072A8648CE3D020106052B81040023038186000400A4142D36E1BA9805684E2F795D174C0DACD3BB06D9B593B8473408A78F2AD8CC1D1A1B66F480F49346C4C579F15B0E3F4C4C6EB896354CF1B7EE3BE7E7E04011AC01462B5AA9A717A4E08A43AFAF37BF6AF782747FFE88AE813BF9FC5B37DF224E0C2AAB6566623CE7E6FDB3657E6C97FDFA3A1921B84D5662C85921298B90504DC0CA"218SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/secp521r1pub.der":CRYPT_PUBKEY_SUBKEY:1:"30819B301006072A8648CE3D020106052B81040023038186000400A4142D36E1BA9805684E2F795D174C0DACD3BB06D9B593B8473408A78F2AD8CC1D1A1B66F480F49346C4C579F15B0E3F4C4C6EB896354CF1B7EE3BE7E7E04011AC01462B5AA9A717A4E08A43AFAF37BF6AF782747FFE88AE813BF9FC5B37DF224E0C2AAB6566623CE7E6FDB3657E6C97FDFA3A1921B84D5662C85921298B90504DC0CA"
198 219 
199-SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8220+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8 secp521r1
200SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/secp521r1pub.der":CRYPT_PUBKEY_SUBKEY:0:"301006072A8648CE3D020106052B81040023038186000400A4142D36E1BA9805684E2F795D174C0DACD3BB06D9B593B8473408A78F2AD8CC1D1A1B66F480F49346C4C579F15B0E3F4C4C6EB896354CF1B7EE3BE7E7E04011AC01462B5AA9A717A4E08A43AFAF37BF6AF782747FFE88AE813BF9FC5B37DF224E0C2AAB6566623CE7E6FDB3657E6C97FDFA3A1921B84D5662C85921298B90504DC0CA"221SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/secp521r1pub.der":CRYPT_PUBKEY_SUBKEY:0:"301006072A8648CE3D020106052B81040023038186000400A4142D36E1BA9805684E2F795D174C0DACD3BB06D9B593B8473408A78F2AD8CC1D1A1B66F480F49346C4C579F15B0E3F4C4C6EB896354CF1B7EE3BE7E7E04011AC01462B5AA9A717A4E08A43AFAF37BF6AF782747FFE88AE813BF9FC5B37DF224E0C2AAB6566623CE7E6FDB3657E6C97FDFA3A1921B84D5662C85921298B90504DC0CA"
201 222 
202-SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8223+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8 prime256v1 complete
203SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/prime256v1pub.der":CRYPT_PUBKEY_SUBKEY:1:"3059301306072A8648CE3D020106082A8648CE3D030107034200043C528D0C6C84EC7112D613DDF265F2757E10BA71AF937EC848F3A15C94ADCF14EDF2C59D704B5581A5E102B371F43CFCA4A221A0672F8B2F3130BDF03C80AFF5"224SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/prime256v1pub.der":CRYPT_PUBKEY_SUBKEY:1:"3059301306072A8648CE3D020106082A8648CE3D030107034200043C528D0C6C84EC7112D613DDF265F2757E10BA71AF937EC848F3A15C94ADCF14EDF2C59D704B5581A5E102B371F43CFCA4A221A0672F8B2F3130BDF03C80AFF5"
204 225 
205-SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8226+SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 ecc pkcs8 prime256v1
206SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/prime256v1pub.der":CRYPT_PUBKEY_SUBKEY:0:"301306072A8648CE3D020106082A8648CE3D030107034200043C528D0C6C84EC7112D613DDF265F2757E10BA71AF937EC848F3A15C94ADCF14EDF2C59D704B5581A5E102B371F43CFCA4A221A0672F8B2F3130BDF03C80AFF5"227SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001:"../testdata/cert/asn1/prime256v1pub.der":CRYPT_PUBKEY_SUBKEY:0:"301306072A8648CE3D020106082A8648CE3D030107034200043C528D0C6C84EC7112D613DDF265F2757E10BA71AF937EC848F3A15C94ADCF14EDF2C59D704B5581A5E102B371F43CFCA4A221A0672F8B2F3130BDF03C80AFF5"
207 228 
208SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 sm2 pkcs8229SDV_BSL_ASN1_ENCODE_PUBKEY_BUFF_TC001 sm2 pkcs8
@@ -17,6 +17,7 @@
17#include "bsl_sal.h"17#include "bsl_sal.h"
18#include "securec.h"18#include "securec.h"
19#include "hitls_error.h"19#include "hitls_error.h"
20+#include "stub_replace.h"
20#include "hitls_pki_cert.h"21#include "hitls_pki_cert.h"
21#include "hitls_pki_utils.h"22#include "hitls_pki_utils.h"
22#include "hitls_pki_errno.h"23#include "hitls_pki_errno.h"
@@ -57,6 +58,62 @@ static void FreeSanListData(void *data)
57 }58 }
58}59}
59 60 
61+static volatile uint32_t g_malloc_called_idx = 0;
62+static volatile uint32_t g_malloc_failed_idx = 0;
63+static volatile bool g_malloc_fail_enabled = true;
64+ 
65+void *STUB_BSL_SAL_Malloc(uint32_t size)
66+{
67+ uint32_t current_call_index = g_malloc_called_idx;
68+ g_malloc_called_idx = current_call_index + 1;
69+ 
70+ if (g_malloc_fail_enabled && current_call_index == g_malloc_failed_idx) {
71+ return NULL;
72+ }
73+ 
74+ return malloc(size);
75+}
76+ 
77+void STUB_ResetMallocCount(void)
78+{
79+ g_malloc_called_idx = 0;
80+}
81+ 
82+void STUB_SetMallocFailIndex(uint32_t failIdx)
83+{
84+ g_malloc_failed_idx = failIdx;
85+}
86+ 
87+uint32_t STUB_GetMallocCallCount(void)
88+{
89+ return g_malloc_called_idx;
90+}
91+ 
92+void STUB_EnableMallocFail(bool enable)
93+{
94+ g_malloc_fail_enabled = enable;
95+}
96+ 
97+ 
98+static int32_t STUB_BSL_LIST_AddElement(BslList *pList, void *pData, BslListPosition enPosition)
99+{
100+ (void)pList;
101+ (void)pData;
102+ (void)enPosition;
103+ return BSL_LIST_FULL;
104+}
105+ 
106+static int32_t STUB_BSL_ASN1_EncodeTemplate(BSL_ASN1_Template *templ, BSL_ASN1_Buffer *asnArr, uint32_t arrNum,
107+ uint8_t **encode, uint32_t *encLen)
108+{
109+ (void)templ;
110+ (void)asnArr;
111+ (void)arrNum;
112+ (void)encode;
113+ (void)encLen;
114+ return BSL_ASN1_FAIL;
115+}
116+ 
60static int32_t TestSignCb(int32_t mdId, CRYPT_EAL_PkeyCtx *prvKey, HITLS_X509_Asn1AlgId *signAlgId, void *obj)117static int32_t TestSignCb(int32_t mdId, CRYPT_EAL_PkeyCtx *prvKey, HITLS_X509_Asn1AlgId *signAlgId, void *obj)
61{118{
62 (void)signAlgId;119 (void)signAlgId;
@@ -416,6 +473,218 @@ EXIT:
416}473}
417/* END_CASE */474/* END_CASE */
418 475 
476+/* BEGIN_CASE */
477+void SDV_X509_EXT_Set_Api_TC001(void)
478+{
479+ HITLS_X509_Ext *ext = NULL;
480+ HITLS_X509_ExtBCons bCons = {true, true, 1};
481+ FuncStubInfo tmpRpInfo = {0};
482+ 
483+ TestMemInit();
484+ 
485+ /* 1 Test set the bcons once */
486+ /* 1.1 Test calloc failure in HITLS_X509_SetExtList */
487+ ext = HITLS_X509_ExtNew(HITLS_X509_EXT_TYPE_CSR);
488+ ASSERT_TRUE_AND_LOG("ext != NULL 1", ext != NULL);
489+ STUB_Init();
490+ STUB_ResetMallocCount();
491+ STUB_SetMallocFailIndex(0);
492+ ASSERT_TRUE(STUB_Replace(&tmpRpInfo, BSL_SAL_Malloc, STUB_BSL_SAL_Malloc) == 0);
493+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_SET_BCONS, &bCons, sizeof(HITLS_X509_ExtBCons)), BSL_MALLOC_FAIL);
494+ STUB_Reset(&tmpRpInfo);
495+ HITLS_X509_ExtFree(ext);
496+ 
497+ /* 1.2 Test dump failure in HITLS_X509_SetExtList */
498+ ext = HITLS_X509_ExtNew(HITLS_X509_EXT_TYPE_CSR);
499+ ASSERT_TRUE_AND_LOG("ext != NULL 2", ext != NULL);
500+ ASSERT_TRUE(STUB_Replace(&tmpRpInfo, BSL_SAL_Malloc, STUB_BSL_SAL_Malloc) == 0);
501+ STUB_ResetMallocCount();
502+ STUB_SetMallocFailIndex(1);
503+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_SET_BCONS, &bCons, sizeof(HITLS_X509_ExtBCons)), BSL_DUMP_FAIL);
504+ STUB_Reset(&tmpRpInfo);
505+ HITLS_X509_ExtFree(ext);
506+ 
507+ /* 1.3 Test encodeExt failure in HITLS_X509_SetExtList when adding new extension */
508+ ext = HITLS_X509_ExtNew(HITLS_X509_EXT_TYPE_CSR);
509+ ASSERT_TRUE_AND_LOG("ext != NULL 3", ext != NULL);
510+ ASSERT_TRUE(STUB_Replace(&tmpRpInfo, BSL_ASN1_EncodeTemplate, STUB_BSL_ASN1_EncodeTemplate) == 0);
511+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_SET_BCONS, &bCons, sizeof(HITLS_X509_ExtBCons)), BSL_ASN1_FAIL);
512+ STUB_Reset(&tmpRpInfo);
513+ HITLS_X509_ExtFree(ext);
514+ 
515+ /* 1.4 Test BSL_LIST_AddElement failure in HITLS_X509_SetExtList */
516+ ext = HITLS_X509_ExtNew(HITLS_X509_EXT_TYPE_CSR);
517+ ASSERT_TRUE_AND_LOG("ext != NULL 4", ext != NULL);
518+ ASSERT_TRUE(STUB_Replace(&tmpRpInfo, BSL_LIST_AddElement, STUB_BSL_LIST_AddElement) == 0);
519+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_SET_BCONS, &bCons, sizeof(HITLS_X509_ExtBCons)), BSL_LIST_FULL);
520+ STUB_Reset(&tmpRpInfo);
521+ HITLS_X509_ExtFree(ext);
522+ 
523+ /* 2 Test set the bcons twice (replace existing extension) */
524+ /* 2.1 Test encodeExt failure in HITLS_X509_SetExtList */
525+ ext = HITLS_X509_ExtNew(HITLS_X509_EXT_TYPE_CSR);
526+ ASSERT_TRUE_AND_LOG("ext != NULL 5", ext != NULL);
527+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_SET_BCONS, &bCons, sizeof(HITLS_X509_ExtBCons)), 0);
528+ ASSERT_TRUE(STUB_Replace(&tmpRpInfo, BSL_ASN1_EncodeTemplate, STUB_BSL_ASN1_EncodeTemplate) == 0);
529+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_SET_BCONS, &bCons, sizeof(HITLS_X509_ExtBCons)), BSL_ASN1_FAIL);
530+ STUB_Reset(&tmpRpInfo);
531+ HITLS_X509_ExtFree(ext);
532+ 
533+ /* 2.2 Test set the bcons twice successfully */
534+ ext = HITLS_X509_ExtNew(HITLS_X509_EXT_TYPE_CSR);
535+ ASSERT_TRUE_AND_LOG("ext != NULL 6", ext != NULL);
536+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_SET_BCONS, &bCons, sizeof(HITLS_X509_ExtBCons)), 0);
537+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_SET_BCONS, &bCons, sizeof(HITLS_X509_ExtBCons)), 0);
538+ ASSERT_EQ(BSL_LIST_COUNT(ext->extList), 1);
539+ HITLS_X509_ExtFree(ext);
540+ ext = NULL;
541+ 
542+EXIT:
543+ HITLS_X509_ExtFree(ext);
544+ STUB_Reset(&tmpRpInfo);
545+}
546+/* END_CASE */
547+ 
548+/* BEGIN_CASE */
549+void SDV_X509_EXT_SetGeneric_Api_TC001(void)
550+{
551+ int32_t invalid = HITLS_X509_ERR_INVALID_PARAM;
552+ uint8_t oid[] = {0x01};
553+ uint8_t value[] = {0x01};
554+ HITLS_X509_ExtGeneric generic = {true, {oid, sizeof(oid)}, {value, sizeof(value)}};
555+ HITLS_X509_Ext *ext = NULL;
556+ HITLS_X509_Ext *extForMalloc = NULL;
557+ uint32_t totalMallocCount = 0;
558+ FuncStubInfo tmpRpInfo = {0};
559+ 
560+ TestMemInit();
561+ ext = X509_ExtNew(NULL, HITLS_X509_EXT_TYPE_CERT);
562+ ASSERT_TRUE_AND_LOG("new cert ext", ext != NULL);
563+ extForMalloc = X509_ExtNew(NULL, HITLS_X509_EXT_TYPE_CERT);
564+ ASSERT_TRUE_AND_LOG("new cert ext for malloc", extForMalloc != NULL);
565+ 
566+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_SET_GENERIC, &generic, 0), invalid);
567+ 
568+ // error: oid is null
569+ generic.oid.data = NULL;
570+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), invalid);
571+ generic.oid.data = oid;
572+ 
573+ // error: oid is empty
574+ generic.oid.dataLen = 0;
575+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), invalid);
576+ generic.oid.dataLen = sizeof(oid);
577+ 
578+ // error: value is null
579+ generic.value.data = NULL;
580+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), invalid);
581+ generic.value.data = value;
582+ 
583+ // error: value is empty
584+ generic.value.dataLen = 0;
585+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), invalid);
586+ generic.value.dataLen = sizeof(value);
587+ 
588+ /* Mock malloc fail in X509_ExtCtrl */
589+ STUB_Init();
590+ ASSERT_TRUE(STUB_Replace(&tmpRpInfo, BSL_SAL_Malloc, STUB_BSL_SAL_Malloc) == 0);
591+ // success: first set generic extension
592+ STUB_EnableMallocFail(false);
593+ STUB_ResetMallocCount();
594+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), 0);
595+ ASSERT_EQ(BSL_LIST_COUNT(ext->extList), 1);
596+ totalMallocCount = STUB_GetMallocCallCount();
597+ 
598+ // error: first set generic extension with malloc fail
599+ STUB_EnableMallocFail(true);
600+ for (uint32_t i = 0; i < totalMallocCount; i++) {
601+ STUB_ResetMallocCount();
602+ STUB_SetMallocFailIndex(i);
603+ ASSERT_NE(X509_ExtCtrl(extForMalloc, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), 0);
604+ }
605+ 
606+ STUB_EnableMallocFail(false);
607+ ASSERT_EQ(X509_ExtCtrl(extForMalloc, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), 0);
608+ 
609+ // success: replace existing extension
610+ STUB_ResetMallocCount();
611+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), 0);
612+ ASSERT_EQ(BSL_LIST_COUNT(ext->extList), 1);
613+ totalMallocCount = STUB_GetMallocCallCount();
614+ 
615+ // error: replace existing extension with malloc fail
616+ STUB_EnableMallocFail(true);
617+ for (uint32_t i = 0; i < totalMallocCount; i++) {
618+ STUB_ResetMallocCount();
619+ STUB_SetMallocFailIndex(i);
620+ ASSERT_NE(X509_ExtCtrl(extForMalloc, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), 0);
621+ }
622+ 
623+EXIT:
624+ HITLS_X509_ExtFree(ext);
625+ HITLS_X509_ExtFree(extForMalloc);
626+ STUB_Reset(&tmpRpInfo);
627+}
628+/* END_CASE */
629+ 
630+/* BEGIN_CASE */
631+void SDV_X509_EXT_GetGeneric_Api_TC001(void)
632+{
633+ int32_t invalid = HITLS_X509_ERR_INVALID_PARAM;
634+ int32_t notFound = HITLS_X509_ERR_EXT_NOT_FOUND;
635+ uint8_t oid[] = {0x01};
636+ uint8_t value[] = {0x01};
637+ HITLS_X509_ExtGeneric generic = {true, {oid, sizeof(oid)}, {value, sizeof(value)}};
638+ HITLS_X509_Ext *ext = NULL;
639+ FuncStubInfo tmpRpInfo = {0};
640+ 
641+ TestMemInit();
642+ ext = X509_ExtNew(NULL, HITLS_X509_EXT_TYPE_CERT);
643+ ASSERT_TRUE_AND_LOG("new cert ext", ext != NULL);
644+ 
645+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_GET_GENERIC, &generic, 0), invalid);
646+ 
647+ // error: oid is null
648+ generic.oid.data = NULL;
649+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_GET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), invalid);
650+ generic.oid.data = oid;
651+ 
652+ // error: oid is empty
653+ generic.oid.dataLen = 0;
654+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_GET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), invalid);
655+ generic.oid.dataLen = sizeof(oid);
656+ 
657+ // error: value is not null
658+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_GET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), invalid);
659+ generic.value.data = NULL;
660+ 
661+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_GET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), notFound);
662+ 
663+ // success: set generic extension
664+ generic.value.data = value;
665+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_SET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), 0);
666+ 
667+ // error: get generic extension with malloc fail
668+ ASSERT_TRUE(STUB_Replace(&tmpRpInfo, BSL_SAL_Malloc, STUB_BSL_SAL_Malloc) == 0);
669+ STUB_EnableMallocFail(true);
670+ STUB_ResetMallocCount();
671+ STUB_SetMallocFailIndex(0); // mock malloc fail in BSL_SAL_Dump
672+ generic.value.data = NULL;
673+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_GET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), BSL_DUMP_FAIL);
674+ 
675+ // success: get generic extension
676+ STUB_EnableMallocFail(false);
677+ ASSERT_EQ(X509_ExtCtrl(ext, HITLS_X509_EXT_GET_GENERIC, &generic, sizeof(HITLS_X509_ExtGeneric)), 0);
678+ 
679+ ASSERT_COMPARE("generic.value.data", generic.value.data, generic.value.dataLen, value, sizeof(value));
680+ 
681+EXIT:
682+ HITLS_X509_ExtFree(ext);
683+ BSL_SAL_Free(generic.value.data);
684+ STUB_Reset(&tmpRpInfo);
685+}
686+/* END_CASE */
687+ 
419/* BEGIN_CASE */688/* BEGIN_CASE */
420void SDV_X509_EXT_SetBCons_TC001(void)689void SDV_X509_EXT_SetBCons_TC001(void)
421{690{
@@ -1328,4 +1597,64 @@ void SDV_X509_CRL_PARSE_NAME_LIST_TC001(Hex *buff)
1328EXIT:1597EXIT:
1329 BSL_LIST_FreeWithoutData(list);1598 BSL_LIST_FreeWithoutData(list);
1330}1599}
1331-/* END_CASE */1600+/* END_CASE */
1601+ 
1602+/* BEGIN_CASE */
1603+void SDV_X509_CERT_WITH_CUSTOM_EXT_PARSE_TEST_TC001(char *path, Hex *customExtValue1, Hex *customExtValue2,
1604+ Hex *expectKeyUsage)
1605+{
1606+ HITLS_X509_Cert *parsedCert = NULL;
1607+ BslCid keyUsageCid = BSL_CID_CE_KEYUSAGE;
1608+ char *customOid1 = "1.2.3.4.5.6.7.8.9.1";
1609+ char *customOid2 = "1.2.3.4.5.6.7.8.9.2";
1610+ uint8_t *customOidData = NULL;
1611+ uint32_t customOidLen = 0;
1612+ BslOidString *keyUsageOid = NULL;
1613+ HITLS_X509_ExtGeneric customExt = {0};
1614+ HITLS_X509_ExtGeneric keyUsageExt = {0};
1615+ 
1616+ TestMemInit();
1617+ 
1618+ // SetUp
1619+ ASSERT_EQ(HITLS_X509_CertParseFile(BSL_FORMAT_ASN1, path, &parsedCert), HITLS_PKI_SUCCESS);
1620+ 
1621+ // Get and check custom ext 1
1622+ customOidData = BSL_OBJ_GetOidFromNumericString(customOid1, strlen(customOid1), &customOidLen);
1623+ ASSERT_NE(customOidData, NULL);
1624+ customExt.oid.data = customOidData;
1625+ customExt.oid.dataLen = customOidLen;
1626+ ASSERT_EQ(HITLS_X509_CertCtrl(parsedCert, HITLS_X509_EXT_GET_GENERIC, &customExt, sizeof(HITLS_X509_ExtGeneric)),
1627+ HITLS_PKI_SUCCESS);
1628+ ASSERT_COMPARE("custom ext1", customExt.value.data, customExt.value.dataLen, customExtValue1->x,
1629+ customExtValue1->len);
1630+ ASSERT_EQ(customExt.critical, true);
1631+ BSL_SAL_FREE(customOidData);
1632+ BSL_SAL_FREE(customExt.value.data);
1633+ 
1634+ // Get and check custom ext 2
1635+ customOidData = BSL_OBJ_GetOidFromNumericString(customOid2, strlen(customOid2), &customOidLen);
1636+ ASSERT_NE(customOidData, NULL);
1637+ customExt.oid.data = customOidData;
1638+ customExt.oid.dataLen = customOidLen;
1639+ ASSERT_EQ(HITLS_X509_CertCtrl(parsedCert, HITLS_X509_EXT_GET_GENERIC, &customExt, sizeof(HITLS_X509_ExtGeneric)),
1640+ HITLS_PKI_SUCCESS);
1641+ ASSERT_COMPARE("custom ext2", customExt.value.data, customExt.value.dataLen, customExtValue2->x,
1642+ customExtValue2->len);
1643+ ASSERT_EQ(customExt.critical, false);
1644+ 
1645+ // Get keyusage byt HITLS_X509_EXT_GET_GENERIC
1646+ keyUsageOid = BSL_OBJ_GetOID(keyUsageCid);
1647+ keyUsageExt.oid.data = (uint8_t *)keyUsageOid->octs;
1648+ keyUsageExt.oid.dataLen = keyUsageOid->octetLen;
1649+ ASSERT_EQ(HITLS_X509_CertCtrl(parsedCert, HITLS_X509_EXT_GET_GENERIC, &keyUsageExt, sizeof(HITLS_X509_ExtGeneric)),
1650+ HITLS_PKI_SUCCESS);
1651+ ASSERT_COMPARE("key usage", keyUsageExt.value.data, keyUsageExt.value.dataLen, expectKeyUsage->x,
1652+ expectKeyUsage->len);
1653+ 
1654+EXIT:
1655+ HITLS_X509_CertFree(parsedCert);
1656+ BSL_SAL_FREE(customOidData);
1657+ BSL_SAL_FREE(customExt.value.data);
1658+ BSL_SAL_FREE(keyUsageExt.value.data);
1659+}
1660+/* END_CASE */
@@ -154,6 +154,15 @@ SDV_X509_EncodeNameList_TC001:BSL_FORMAT_PEM:"../testdata/cert/pem/sm2.ca_v1.crt
154SDV_X509_EncodeNameList_TC001: multi RDN 2154SDV_X509_EncodeNameList_TC001: multi RDN 2
155SDV_X509_EncodeNameList_TC001:BSL_FORMAT_PEM:"../testdata/cert/pem/sm2.ca_v1_2.crt":"313730090603550406130243633009060355040B0C024161300C060355040A0C054F2A6F6F20301106035504070C0A232074657374204C2020"155SDV_X509_EncodeNameList_TC001:BSL_FORMAT_PEM:"../testdata/cert/pem/sm2.ca_v1_2.crt":"313730090603550406130243633009060355040B0C024161300C060355040A0C054F2A6F6F20301106035504070C0A232074657374204C2020"
156 156 
157+SDV_X509_EXT_Set_Api_TC001
158+SDV_X509_EXT_Set_Api_TC001:
159+ 
160+SDV_X509_EXT_SetGeneric_Api_TC001
161+SDV_X509_EXT_SetGeneric_Api_TC001:
162+ 
163+SDV_X509_EXT_GetGeneric_Api_TC001
164+SDV_X509_EXT_GetGeneric_Api_TC001:
165+ 
157SDV_X509_EXT_SetBCons_TC001166SDV_X509_EXT_SetBCons_TC001
158SDV_X509_EXT_SetBCons_TC001:167SDV_X509_EXT_SetBCons_TC001:
159 168 
@@ -329,4 +338,6 @@ SDV_X509_CRL_PARSE_NAME_LIST_TC001 HITLS_X509_ParseNameNode encounters the error
329SDV_X509_CRL_PARSE_NAME_LIST_TC001:"3100310031023000"338SDV_X509_CRL_PARSE_NAME_LIST_TC001:"3100310031023000"
330 339 
331SDV_X509_CRL_PARSE_NAME_LIST_TC001 HITLS_X509_ParseNameNode encounters the error BSL_ASN1_ERR_DECODE_LEN in the middle340SDV_X509_CRL_PARSE_NAME_LIST_TC001 HITLS_X509_ParseNameNode encounters the error BSL_ASN1_ERR_DECODE_LEN in the middle
332-SDV_X509_CRL_PARSE_NAME_LIST_TC001:"311830160614000000000f4d79204f7267616e697a6174696f6e"341+SDV_X509_CRL_PARSE_NAME_LIST_TC001:"311830160614000000000f4d79204f7267616e697a6174696f6e"
342+SDV_X509_CERT_WITH_CUSTOM_EXT_PARSE_TEST_TC001:
343+SDV_X509_CERT_WITH_CUSTOM_EXT_PARSE_TEST_TC001:"../testdata/cert/asn1/certcheck/custom_ext_cert.der":"0C2154686973206973206120637573746F6D20657874656E73696F6E2076616C756532":"300c0c0a48656c6c6f20576f726c64":"030205A0"
@@ -348,6 +348,10 @@ static int32_t SetCertExt(HITLS_X509_Cert *cert)
348 HITLS_X509_ExtSan san = {true, NULL};348 HITLS_X509_ExtSan san = {true, NULL};
349 BSL_Buffer oidBuff = {0};349 BSL_Buffer oidBuff = {0};
350 BslOidString *oid = NULL;350 BslOidString *oid = NULL;
351+ HITLS_X509_ExtGeneric customExt = {0};
352+ char *customOid1 = "1.2.3.4.5.6.7.8.9.1";
353+ uint8_t *customOidData = NULL;
354+ uint32_t customOidLen = 0;
351 355 
352 BslList *oidList = BSL_LIST_New(sizeof(BSL_Buffer));356 BslList *oidList = BSL_LIST_New(sizeof(BSL_Buffer));
353 ASSERT_TRUE(oidList != NULL);357 ASSERT_TRUE(oidList != NULL);
@@ -368,10 +372,20 @@ static int32_t SetCertExt(HITLS_X509_Cert *cert)
368 san.names = GenGeneralNameList();372 san.names = GenGeneralNameList();
369 ASSERT_EQ(HITLS_X509_CertCtrl(cert, HITLS_X509_EXT_SET_SAN, &san, sizeof(HITLS_X509_ExtSan)), 0);373 ASSERT_EQ(HITLS_X509_CertCtrl(cert, HITLS_X509_EXT_SET_SAN, &san, sizeof(HITLS_X509_ExtSan)), 0);
370 374 
375+ customOidData = BSL_OBJ_GetOidFromNumericString(customOid1, strlen(customOid1), &customOidLen);
376+ ASSERT_NE(customOidData, NULL);
377+ customExt.oid.data = customOidData;
378+ customExt.oid.dataLen = customOidLen;
379+ customExt.value.data = kid;
380+ customExt.value.dataLen = sizeof(kid);
381+ customExt.critical = true;
382+ ASSERT_EQ(HITLS_X509_CertCtrl(cert, HITLS_X509_EXT_SET_GENERIC, &customExt, sizeof(HITLS_X509_ExtGeneric)), 0);
383+ 
371 ret = 0;384 ret = 0;
372EXIT:385EXIT:
373 BSL_LIST_FREE(oidList, (BSL_LIST_PFUNC_FREE)FreeListData);386 BSL_LIST_FREE(oidList, (BSL_LIST_PFUNC_FREE)FreeListData);
374 BSL_LIST_FREE(san.names, (BSL_LIST_PFUNC_FREE)HITLS_X509_FreeGeneralName);387 BSL_LIST_FREE(san.names, (BSL_LIST_PFUNC_FREE)HITLS_X509_FreeGeneralName);
388+ BSL_SAL_FREE(customOidData);
375 return ret;389 return ret;
376}390}
377#endif // HITLS_PKI_X509_CRT_GEN391#endif // HITLS_PKI_X509_CRT_GEN
@@ -28,6 +28,9 @@ SDV_PKI_GEN_KEY_TC001:CRYPT_PKEY_ECDSA:CRYPT_PRIKEY_PKCS8_UNENCRYPT:CRYPT_ECC_NI
28SDV_PKI_GEN_ENCKEY_TC001: rsa, aes256-cbc28SDV_PKI_GEN_ENCKEY_TC001: rsa, aes256-cbc
29SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_RSA:0:CRYPT_CIPHER_AES256_CBC:"1234567890"29SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_RSA:0:CRYPT_CIPHER_AES256_CBC:"1234567890"
30 30 
31+SDV_PKI_GEN_ENCKEY_TC001: nistp192, aes256-cbc
32+SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_ECDSA:CRYPT_ECC_NISTP192:CRYPT_CIPHER_AES256_CBC:"1234567890"
33+ 
31SDV_PKI_GEN_ENCKEY_TC001: nistp256, aes256-cbc34SDV_PKI_GEN_ENCKEY_TC001: nistp256, aes256-cbc
32SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_ECDSA:CRYPT_ECC_NISTP256:CRYPT_CIPHER_AES256_CBC:"1234567890"35SDV_PKI_GEN_ENCKEY_TC001:CRYPT_PKEY_ECDSA:CRYPT_ECC_NISTP256:CRYPT_CIPHER_AES256_CBC:"1234567890"
33 36 
@@ -31,6 +31,7 @@
31#include "stub_replace.h"31#include "stub_replace.h"
32 32 
33/* END_HEADER */33/* END_HEADER */
34+#define MAX_BUFF_SIZE 4096
34#define MAX_DATA_LEN 12835#define MAX_DATA_LEN 128
35 36 
36static char g_sm2DefaultUserid[] = "1234567812345678";37static char g_sm2DefaultUserid[] = "1234567812345678";
@@ -988,4 +989,55 @@ EXIT:
988 STUB_Reset(&tmpRpInfo);989 STUB_Reset(&tmpRpInfo);
989#endif990#endif
990}991}
991-/* END_CASE */992+/* END_CASE */
993+ 
994+/* BEGIN_CASE */
995+void SDV_X509_CSR_WITH_CUSTOM_EXT_PARSE_TEST_TC001(char *path, Hex *customExtValue1, Hex *customExtValue2)
996+{
997+ HITLS_X509_Csr *parsedCsr = NULL;
998+ HITLS_X509_Attrs *attrs = NULL;
999+ HITLS_X509_Ext *ext = NULL;
1000+ char *customOid = "1.2.3.4.5.6.7.8.9.1";
1001+ char *customOid2 = "1.2.3.4.5.6.7.8.9.2";
1002+ uint8_t *customOidData = NULL;
1003+ uint32_t customOidLen = 0;
1004+ HITLS_X509_ExtGeneric customExt = {0};
1005+ 
1006+ TestMemInit();
1007+ 
1008+ // SetUp
1009+ ASSERT_EQ(HITLS_X509_CsrParseFile(BSL_FORMAT_ASN1, path, &parsedCsr), HITLS_PKI_SUCCESS);
1010+ ASSERT_EQ(HITLS_X509_CsrCtrl(parsedCsr, HITLS_X509_CSR_GET_ATTRIBUTES, &attrs, sizeof(HITLS_X509_Attrs *)), 0);
1011+ ASSERT_EQ(HITLS_X509_AttrCtrl(attrs, HITLS_X509_ATTR_GET_REQUESTED_EXTENSIONS, &ext, sizeof(HITLS_X509_Ext *)), 0);
1012+ ASSERT_NE(ext, NULL);
1013+ 
1014+ // Get and check custom ext1
1015+ customOidData = BSL_OBJ_GetOidFromNumericString(customOid, strlen(customOid), &customOidLen);
1016+ ASSERT_NE(customOidData, NULL);
1017+ customExt.oid.data = customOidData;
1018+ customExt.oid.dataLen = customOidLen;
1019+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_GET_GENERIC, &customExt, sizeof(HITLS_X509_ExtGeneric)), 0);
1020+ ASSERT_COMPARE("custom ext1", customExt.value.data, customExt.value.dataLen, customExtValue1->x,
1021+ customExtValue1->len);
1022+ ASSERT_EQ(customExt.critical, true);
1023+ BSL_SAL_FREE(customOidData);
1024+ BSL_SAL_FREE(customExt.value.data);
1025+ 
1026+ // Get and check custom ext2
1027+ customOidData = BSL_OBJ_GetOidFromNumericString(customOid2, strlen(customOid2), &customOidLen);
1028+ ASSERT_NE(customOidData, NULL);
1029+ customExt.oid.data = customOidData;
1030+ customExt.oid.dataLen = customOidLen;
1031+ ASSERT_EQ(HITLS_X509_ExtCtrl(ext, HITLS_X509_EXT_GET_GENERIC, &customExt, sizeof(HITLS_X509_ExtGeneric)), 0);
1032+ ASSERT_COMPARE("custom ext2", customExt.value.data, customExt.value.dataLen, customExtValue2->x,
1033+ customExtValue2->len);
1034+ ASSERT_EQ(customExt.critical, false);
1035+ BSL_SAL_FREE(customOidData);
1036+ 
1037+EXIT:
1038+ HITLS_X509_CsrFree(parsedCsr);
1039+ HITLS_X509_ExtFree(ext);
1040+ BSL_SAL_FREE(customOidData);
1041+ BSL_SAL_FREE(customExt.value.data);
1042+}
1043+/* END_CASE */
@@ -184,3 +184,5 @@ SDV_X509_CSR_PARSE_STUB_TC001:BSL_FORMAT_PEM:"../testdata/cert/pem/csr/mldsa/mld
184SDV_X509_CSR_PARSE_STUB_TC001 #rsa_sha224184SDV_X509_CSR_PARSE_STUB_TC001 #rsa_sha224
185SDV_X509_CSR_PARSE_STUB_TC001:BSL_FORMAT_PEM:"../testdata/cert/pem/csr/rsa_sha/rsa1024_pkcs8_sha224.csr":149185SDV_X509_CSR_PARSE_STUB_TC001:BSL_FORMAT_PEM:"../testdata/cert/pem/csr/rsa_sha/rsa1024_pkcs8_sha224.csr":149
186 186 
187+SDV_X509_CSR_WITH_CUSTOM_EXT_PARSE_TEST_TC001:
188+SDV_X509_CSR_WITH_CUSTOM_EXT_PARSE_TEST_TC001:"../testdata/cert/asn1/csrcheck/custom_ext_csr.der":"0C2154686973206973206120637573746F6D20657874656E73696F6E2076616C756531":"300C0C0A48656C6C6F20576F726C65"
@@ -265,27 +265,42 @@ static int32_t HITLS_AddCrlToStoreTest(char *path, HITLS_X509_StoreCtx *store, H
265/* BEGIN_CASE */265/* BEGIN_CASE */
266void SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001(char *rootPath, char *caPath, char *cert, char *crlPath)266void SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001(char *rootPath, char *caPath, char *cert, char *crlPath)
267{267{
268- TestMemInit();
269- HITLS_X509_StoreCtx *store = HITLS_X509_StoreCtxNew();
270- ASSERT_TRUE(store != NULL);
271 HITLS_X509_Cert *root = NULL;268 HITLS_X509_Cert *root = NULL;
272- ASSERT_EQ(HITLS_AddCertToStoreTest(rootPath, store, &root), HITLS_PKI_SUCCESS);
273 HITLS_X509_Cert *ca = NULL;269 HITLS_X509_Cert *ca = NULL;
274- ASSERT_EQ(HITLS_AddCertToStoreTest(caPath, store, &ca), HITLS_PKI_SUCCESS);270+ HITLS_X509_StoreCtx *store = NULL;
275 HITLS_X509_Cert *entity = NULL;271 HITLS_X509_Cert *entity = NULL;
272+ HITLS_X509_Crl *crl = NULL;
273+ HITLS_X509_List *chain = NULL;
274+ int64_t timeval = time(NULL);
275+ int64_t flag = HITLS_X509_VFY_FLAG_CRL_ALL;
276+ bool withIntCa = strlen(caPath) > 0;
277+ 
278+ TestMemInit();
279+ 
280+ store = HITLS_X509_StoreCtxNew();
281+ ASSERT_TRUE(store != NULL);
282+ 
283+ ASSERT_EQ(HITLS_AddCertToStoreTest(rootPath, store, &root), HITLS_PKI_SUCCESS);
284+ if (withIntCa) {
285+ ASSERT_EQ(HITLS_AddCertToStoreTest(caPath, store, &ca), HITLS_PKI_SUCCESS);
286+ }
276 287 
277 ASSERT_TRUE(HITLS_AddCertToStoreTest(cert, store, &entity) != HITLS_PKI_SUCCESS);288 ASSERT_TRUE(HITLS_AddCertToStoreTest(cert, store, &entity) != HITLS_PKI_SUCCESS);
278- HITLS_X509_Crl *crl = NULL;
279 ASSERT_EQ(HITLS_AddCrlToStoreTest(crlPath, store, &crl), HITLS_PKI_SUCCESS);289 ASSERT_EQ(HITLS_AddCrlToStoreTest(crlPath, store, &crl), HITLS_PKI_SUCCESS);
280 290
281 ASSERT_EQ(BSL_LIST_COUNT(store->crl), 1);291 ASSERT_EQ(BSL_LIST_COUNT(store->crl), 1);
282- ASSERT_EQ(BSL_LIST_COUNT(store->store), 2);292+ if (withIntCa) {
283- HITLS_X509_List *chain = NULL;293+ ASSERT_EQ(BSL_LIST_COUNT(store->store), 2);
294+ } else {
295+ ASSERT_EQ(BSL_LIST_COUNT(store->store), 1);
296+ }
284 ASSERT_TRUE(HITLS_X509_CertChainBuild(store, false, entity, &chain) == HITLS_PKI_SUCCESS);297 ASSERT_TRUE(HITLS_X509_CertChainBuild(store, false, entity, &chain) == HITLS_PKI_SUCCESS);
285- ASSERT_EQ(BSL_LIST_COUNT(chain), 2);298+ if (withIntCa) {
286- int64_t timeval = time(NULL);299+ ASSERT_EQ(BSL_LIST_COUNT(chain), 2);
300+ } else {
301+ ASSERT_EQ(BSL_LIST_COUNT(chain), 1);
302+ }
287 ASSERT_EQ(HITLS_X509_StoreCtxCtrl(store, HITLS_X509_STORECTX_SET_TIME, &timeval, sizeof(timeval)), 0);303 ASSERT_EQ(HITLS_X509_StoreCtxCtrl(store, HITLS_X509_STORECTX_SET_TIME, &timeval, sizeof(timeval)), 0);
288- int64_t flag = HITLS_X509_VFY_FLAG_CRL_ALL;
289 ASSERT_EQ(HITLS_X509_StoreCtxCtrl(store, HITLS_X509_STORECTX_CLR_PARAM_FLAGS, &flag, sizeof(flag)), 0);304 ASSERT_EQ(HITLS_X509_StoreCtxCtrl(store, HITLS_X509_STORECTX_CLR_PARAM_FLAGS, &flag, sizeof(flag)), 0);
290 ASSERT_EQ(HITLS_X509_CertVerify(store, chain), HITLS_PKI_SUCCESS);305 ASSERT_EQ(HITLS_X509_CertVerify(store, chain), HITLS_PKI_SUCCESS);
291 306 
@@ -31,6 +31,9 @@ SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001:"../testdata/cert/chain/rsa-v3/rootca.der":
31SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001 rsa-pss-nocrl31SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001 rsa-pss-nocrl
32SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001:"../testdata/cert/chain/rsa-pss-v3/ca.der":"../testdata/cert/chain/rsa-pss-v3/inter.der":"../testdata/cert/chain/rsa-pss-v3/end.der":"../testdata/cert/asn1/ca-empty-rsa-sha256-v2.der"32SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001:"../testdata/cert/chain/rsa-pss-v3/ca.der":"../testdata/cert/chain/rsa-pss-v3/inter.der":"../testdata/cert/chain/rsa-pss-v3/end.der":"../testdata/cert/asn1/ca-empty-rsa-sha256-v2.der"
33 33 
34+SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001 ecdsa-prime192v1-nocrl
35+SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001:"../testdata/cert/chain/nistp192_certs/root_ca_nistp192_cert.der":"../testdata/cert/chain/nistp192_certs/int_ca_nistp192_cert.der":"../testdata/cert/chain/nistp192_certs/ee_nistp192_cert.der":"../testdata/cert/chain/nistp192_certs/root_ca_nistp192.crl"
36+ 
34SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001 ecdsa-nocrl37SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001 ecdsa-nocrl
35SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001:"../testdata/cert/chain/ecdsa-v3/ca.der":"../testdata/cert/chain/ecdsa-v3/inter.der":"../testdata/cert/chain/ecdsa-v3/end.der":"../testdata/cert/asn1/ca-empty-rsa-sha256-v2.der"38SDV_X509_BUILD_CERT_CHAIN_FUNC_TC001:"../testdata/cert/chain/ecdsa-v3/ca.der":"../testdata/cert/chain/ecdsa-v3/inter.der":"../testdata/cert/chain/ecdsa-v3/end.der":"../testdata/cert/asn1/ca-empty-rsa-sha256-v2.der"
36 39 
@@ -70,6 +70,7 @@
70 "bn": ["test_suite_sdv_bn"],70 "bn": ["test_suite_sdv_bn"],
71 71 
72 "ecc": ["test_suite_sdv_eal_ecdh", "test_suite_sdv_eal_ecdsa"],72 "ecc": ["test_suite_sdv_eal_ecdh", "test_suite_sdv_eal_ecdsa"],
73+ "curve_nistp192": ["test_suite_sdv_eal_ecdh", "test_suite_sdv_eal_ecdsa"],
73 "curve_nistp224": ["test_suite_sdv_eal_ecdh", "test_suite_sdv_eal_ecdsa"],74 "curve_nistp224": ["test_suite_sdv_eal_ecdh", "test_suite_sdv_eal_ecdsa"],
74 "curve_nistp256": ["test_suite_sdv_eal_ecdh", "test_suite_sdv_eal_ecdsa"],75 "curve_nistp256": ["test_suite_sdv_eal_ecdh", "test_suite_sdv_eal_ecdsa"],
75 "curve_nistp384": ["test_suite_sdv_eal_ecdh", "test_suite_sdv_eal_ecdsa"],76 "curve_nistp384": ["test_suite_sdv_eal_ecdh", "test_suite_sdv_eal_ecdsa"],
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview