From 569823599c44469039eda522e768d8cb052d176b Mon Sep 17 00:00:00 2001 From: wangyongzhong2 Date: Fri, 12 Jan 2024 14:31:06 +0800 Subject: [PATCH] code refine Signed-off-by: wangyongzhong2 --- README_zh.md | 5 +- frameworks/crypto_operation/cipher.c | 4 +- frameworks/js/napi/crypto/src/napi_utils.cpp | 12 +- frameworks/key/key_utils.c | 2 +- interfaces/innerkits/key/key_utils.h | 2 - .../common/inc/ecc_openssl_common.h | 7 - .../common/src/ecc_openssl_common.c | 14 +- .../common/src/openssl_common.c | 1 + .../crypto_operation/kdf/src/pbkdf2_openssl.c | 2 +- .../signature/src/dsa_openssl.c | 12 +- .../signature/src/ecdsa_openssl.c | 39 +- .../signature/src/ed25519_openssl.c | 25 +- .../signature/src/sm2_openssl.c | 39 +- .../src/alg_25519_asy_key_generator_openssl.c | 12 +- .../src/dh_asy_key_generator_openssl.c | 40 +- .../dh_common_param_spec_generator_openssl.c | 28 +- .../ecc_common_param_spec_generator_openssl.c | 110 +- .../src/sm2_asy_key_generator_openssl.c | 96 +- .../key/asykeygenerator_fuzzer/BUILD.gn | 1 + .../asykeygenerator_fuzzer.cpp | 733 +- .../key/dhkeyutil_fuzzer/dhkeyutil_fuzzer.cpp | 2 +- test/unittest/BUILD.gn | 49 +- test/unittest/include/aes_common.h | 78 + .../include/alg_25519_common_param_spec.h | 49 + test/unittest/include/ecc_asy_key_common.h | 56 + test/unittest/include/ecc_common.h | 102 + test/unittest/include/ecc_common_param_spec.h | 40 + test/unittest/include/memory_mock.h | 67 +- test/unittest/include/rsa_common_param_spec.h | 476 + test/unittest/include/sm4_common.h | 55 + test/unittest/src/aes_cipher/aes_common.cpp | 514 + .../aes_cipher/crypto_aes_cbc_cipher_test.cpp | 486 + .../aes_cipher/crypto_aes_ccm_cipher_test.cpp | 625 + .../aes_cipher/crypto_aes_cfb_cipher_test.cpp | 1723 ++ .../src/aes_cipher/crypto_aes_cipher_test.cpp | 873 + .../aes_cipher/crypto_aes_ctr_cipher_test.cpp | 485 + .../aes_cipher/crypto_aes_ecb_cipher_test.cpp | 1186 ++ .../aes_cipher/crypto_aes_gcm_cipher_test.cpp | 941 + .../aes_cipher/crypto_aes_ofb_cipher_test.cpp | 483 + .../src/alg_25519_common_param_spec.c | 351 + test/unittest/src/crypto_aes_cipher_test.cpp | 7006 ------- ...rypto_brainpool_asy_key_generator_test.cpp | 1120 +- .../crypto_brainpool_key_agreement_test.cpp | 214 +- .../crypto_brainpool_no_length_sign_test.cpp | 415 +- ...crypto_brainpool_no_length_verify_test.cpp | 525 +- ...ypto_dh_asy_key_generator_by_spec_test.cpp | 715 +- .../src/crypto_dh_asy_key_generator_test.cpp | 852 +- .../src/crypto_dh_key_agreement_test.cpp | 266 +- ...pto_ecc_asy_key_generator_by_spec_test.cpp | 8583 --------- .../src/crypto_ecc_asy_key_generator_test.cpp | 45 +- .../crypto_ecc_key_agreement_by_spec_test.cpp | 13 +- .../src/crypto_ecc_key_agreement_test.cpp | 13 +- .../unittest/src/crypto_ecc_key_util_test.cpp | 563 +- ...ed25519_asy_key_generator_by_spec_test.cpp | 369 +- .../crypto_ed25519_asy_key_generator_test.cpp | 352 +- .../unittest/src/crypto_ed25519_sign_test.cpp | 4 +- .../src/crypto_ed25519_verify_test.cpp | 4 +- test/unittest/src/crypto_pbkdf2_test.cpp | 940 +- ...rsa1024_asy_key_generator_by_spec_test.cpp | 2075 +++ ...rsa2048_asy_key_generator_by_spec_test.cpp | 2074 +++ ...rsa3072_asy_key_generator_by_spec_test.cpp | 2074 +++ ...rsa4096_asy_key_generator_by_spec_test.cpp | 2074 +++ ..._rsa512_asy_key_generator_by_spec_test.cpp | 2075 +++ ..._rsa768_asy_key_generator_by_spec_test.cpp | 2074 +++ ...rsa8192_asy_key_generator_by_spec_test.cpp | 2074 +++ ...pto_rsa_asy_key_generator_by_spec_test.cpp | 15029 ---------------- .../src/crypto_rsa_cipher_sub_test.cpp | 720 + test/unittest/src/crypto_rsa_cipher_test.cpp | 892 +- .../src/crypto_sm2_asy_key_generator_test.cpp | 45 +- test/unittest/src/crypto_sm2_sign_test.cpp | 116 +- test/unittest/src/crypto_sm2_verify_test.cpp | 14 +- .../src/crypto_sm4_cfb_cipher_test.cpp | 871 + test/unittest/src/crypto_sm4_cipher_test.cpp | 2097 +-- .../src/crypto_sm4_ecb_cipher_test.cpp | 821 + ..._x25519_asy_key_generator_by_spec_test.cpp | 356 +- .../crypto_x25519_asy_key_generator_test.cpp | 181 +- .../src/crypto_x25519_key_agreement_test.cpp | 167 +- ...sy_key_generator_by_spec_sub_four_test.cpp | 937 + ...asy_key_generator_by_spec_sub_one_test.cpp | 1866 ++ ...y_key_generator_by_spec_sub_three_test.cpp | 1820 ++ ...asy_key_generator_by_spec_sub_two_test.cpp | 1746 ++ ...pto_ecc_asy_key_generator_by_spec_test.cpp | 1616 ++ .../crypto_ecc_no_length_sign_sub_test.cpp | 1565 ++ .../crypto_ecc_no_length_sign_test.cpp | 1352 +- .../crypto_ecc_no_length_verify_sub_test.cpp} | 1811 +- .../ecc/crypto_ecc_no_length_verify_test.cpp | 1862 ++ .../src/ecc/crypto_ecc_sign_sub_test.cpp | 1426 ++ .../src/{ => ecc}/crypto_ecc_sign_test.cpp | 1321 +- .../src/ecc/crypto_ecc_verify_sub_test.cpp | 1965 ++ .../src/{ => ecc}/crypto_ecc_verify_test.cpp | 1852 +- test/unittest/src/ecc/ecc_asy_key_common.cpp | 789 + test/unittest/src/ecc_common_param_spec.c | 270 + test/unittest/src/memory_mock.c | 161 +- test/unittest/src/openssl_adapter_mock.c | 6 +- test/unittest/src/rsa_common_param_spec.cpp | 412 + ...sm2_asy_key_generator_by_spec_sub_test.cpp | 1523 ++ ...pto_sm2_asy_key_generator_by_spec_test.cpp | 2121 +-- test/unittest/src/sm4_common.cpp | 303 + 98 files changed, 47331 insertions(+), 47046 deletions(-) create mode 100644 test/unittest/include/aes_common.h create mode 100644 test/unittest/include/alg_25519_common_param_spec.h create mode 100644 test/unittest/include/ecc_asy_key_common.h create mode 100644 test/unittest/include/ecc_common_param_spec.h create mode 100644 test/unittest/include/rsa_common_param_spec.h create mode 100644 test/unittest/include/sm4_common.h create mode 100644 test/unittest/src/aes_cipher/aes_common.cpp create mode 100644 test/unittest/src/aes_cipher/crypto_aes_cbc_cipher_test.cpp create mode 100644 test/unittest/src/aes_cipher/crypto_aes_ccm_cipher_test.cpp create mode 100644 test/unittest/src/aes_cipher/crypto_aes_cfb_cipher_test.cpp create mode 100644 test/unittest/src/aes_cipher/crypto_aes_cipher_test.cpp create mode 100644 test/unittest/src/aes_cipher/crypto_aes_ctr_cipher_test.cpp create mode 100644 test/unittest/src/aes_cipher/crypto_aes_ecb_cipher_test.cpp create mode 100644 test/unittest/src/aes_cipher/crypto_aes_gcm_cipher_test.cpp create mode 100644 test/unittest/src/aes_cipher/crypto_aes_ofb_cipher_test.cpp create mode 100644 test/unittest/src/alg_25519_common_param_spec.c delete mode 100644 test/unittest/src/crypto_aes_cipher_test.cpp delete mode 100644 test/unittest/src/crypto_ecc_asy_key_generator_by_spec_test.cpp create mode 100644 test/unittest/src/crypto_rsa1024_asy_key_generator_by_spec_test.cpp create mode 100644 test/unittest/src/crypto_rsa2048_asy_key_generator_by_spec_test.cpp create mode 100644 test/unittest/src/crypto_rsa3072_asy_key_generator_by_spec_test.cpp create mode 100644 test/unittest/src/crypto_rsa4096_asy_key_generator_by_spec_test.cpp create mode 100644 test/unittest/src/crypto_rsa512_asy_key_generator_by_spec_test.cpp create mode 100644 test/unittest/src/crypto_rsa768_asy_key_generator_by_spec_test.cpp create mode 100644 test/unittest/src/crypto_rsa8192_asy_key_generator_by_spec_test.cpp delete mode 100644 test/unittest/src/crypto_rsa_asy_key_generator_by_spec_test.cpp create mode 100644 test/unittest/src/crypto_rsa_cipher_sub_test.cpp create mode 100644 test/unittest/src/crypto_sm4_cfb_cipher_test.cpp create mode 100644 test/unittest/src/crypto_sm4_ecb_cipher_test.cpp create mode 100644 test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_four_test.cpp create mode 100644 test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_one_test.cpp create mode 100644 test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_three_test.cpp create mode 100644 test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_two_test.cpp create mode 100644 test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_test.cpp create mode 100644 test/unittest/src/ecc/crypto_ecc_no_length_sign_sub_test.cpp rename test/unittest/src/{ => ecc}/crypto_ecc_no_length_sign_test.cpp (58%) rename test/unittest/src/{crypto_ecc_no_length_verify_test.cpp => ecc/crypto_ecc_no_length_verify_sub_test.cpp} (53%) create mode 100644 test/unittest/src/ecc/crypto_ecc_no_length_verify_test.cpp create mode 100644 test/unittest/src/ecc/crypto_ecc_sign_sub_test.cpp rename test/unittest/src/{ => ecc}/crypto_ecc_sign_test.cpp (55%) create mode 100644 test/unittest/src/ecc/crypto_ecc_verify_sub_test.cpp rename test/unittest/src/{ => ecc}/crypto_ecc_verify_test.cpp (49%) create mode 100644 test/unittest/src/ecc/ecc_asy_key_common.cpp create mode 100644 test/unittest/src/ecc_common_param_spec.c create mode 100644 test/unittest/src/rsa_common_param_spec.cpp create mode 100644 test/unittest/src/sm2/crypto_sm2_asy_key_generator_by_spec_sub_test.cpp rename test/unittest/src/{ => sm2}/crypto_sm2_asy_key_generator_by_spec_test.cpp (44%) create mode 100644 test/unittest/src/sm4_common.cpp diff --git a/README_zh.md b/README_zh.md index cdea680..45f5b4e 100644 --- a/README_zh.md +++ b/README_zh.md @@ -32,9 +32,6 @@ base/security/crypto_framwork │ └── rand # 随机数 ``` -## 约束 -- [加解密算法库框架-overview-约束与限制](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/cryptoFramework-overview.md) - ## 说明 ### 接口说明 @@ -42,7 +39,7 @@ base/security/crypto_framwork ### 使用说明 -- [加解密算法库框架-开发指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/cryptoFramework-guidelines.md) +- [加解密算法库框架-开发指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/CryptoArchitectureKit/Readme-CN.md) ## 相关仓 diff --git a/frameworks/crypto_operation/cipher.c b/frameworks/crypto_operation/cipher.c index b9dcc59..5401d88 100644 --- a/frameworks/crypto_operation/cipher.c +++ b/frameworks/crypto_operation/cipher.c @@ -182,7 +182,7 @@ static const char *GetCipherGeneratorClass(void) return "HcfCipherGenerator"; } -const char *GetAlogrithm(HcfCipher *self) +static const char *GetAlgorithm(HcfCipher *self) { if (self == NULL) { LOGE("The input self ptr is NULL!"); @@ -320,7 +320,7 @@ static void InitCipher(HcfCipherGeneratorSpi *spiObj, CipherGenImpl *cipher) cipher->super.init = CipherInit; cipher->super.update = CipherUpdate; cipher->super.doFinal = CipherFinal; - cipher->super.getAlgorithm = GetAlogrithm; + cipher->super.getAlgorithm = GetAlgorithm; cipher->super.base.destroy = CipherDestroy; cipher->super.base.getClass = GetCipherGeneratorClass; cipher->super.getCipherSpecString = GetCipherSpecString; diff --git a/frameworks/js/napi/crypto/src/napi_utils.cpp b/frameworks/js/napi/crypto/src/napi_utils.cpp index 8a33dec..a7bcd04 100644 --- a/frameworks/js/napi/crypto/src/napi_utils.cpp +++ b/frameworks/js/napi/crypto/src/napi_utils.cpp @@ -781,7 +781,7 @@ static bool InitEccDetailAsyKeySpec(napi_env env, napi_value arg, HcfEccCommPara return true; } -static bool InitEccCommonAsyKeySpec(napi_env env, napi_value arg, HcfEccCommParamsSpec *spec, const string algName) +static bool InitEccCommonAsyKeySpec(napi_env env, napi_value arg, HcfEccCommParamsSpec *spec, const string &algName) { size_t algNameLen = ECC_ASY_KEY_SPEC.length(); spec->base.algName = static_cast(HcfMalloc(algNameLen + 1, 0)); @@ -1108,7 +1108,7 @@ static bool GetRsaAsyKeySpec(napi_env env, napi_value arg, HcfAsyKeyParamsSpec * } } -static bool InitAlg25519CommonAsyKeySpec(HcfAsyKeyParamsSpec *spec, const string algName) +static bool InitAlg25519CommonAsyKeySpec(HcfAsyKeyParamsSpec *spec, const string &algName) { size_t algNameLen = algName.length(); spec->algName = static_cast(HcfMalloc(algNameLen + 1, 0)); @@ -1120,7 +1120,7 @@ static bool InitAlg25519CommonAsyKeySpec(HcfAsyKeyParamsSpec *spec, const string return true; } -static bool GetAlg25519PriKeySpec(napi_env env, napi_value arg, HcfAsyKeyParamsSpec **asyKeySpec, const string algName) +static bool GetAlg25519PriKeySpec(napi_env env, napi_value arg, HcfAsyKeyParamsSpec **asyKeySpec, const string &algName) { HcfAlg25519PriKeyParamsSpec *spec = reinterpret_cast(HcfMalloc(sizeof(HcfAlg25519PriKeyParamsSpec), 0)); @@ -1146,7 +1146,7 @@ static bool GetAlg25519PriKeySpec(napi_env env, napi_value arg, HcfAsyKeyParamsS return true; } -static bool GetAlg25519PubKeySpec(napi_env env, napi_value arg, HcfAsyKeyParamsSpec **asyKeySpec, const string algName) +static bool GetAlg25519PubKeySpec(napi_env env, napi_value arg, HcfAsyKeyParamsSpec **asyKeySpec, const string &algName) { HcfAlg25519PubKeyParamsSpec *spec = reinterpret_cast(HcfMalloc(sizeof(HcfAlg25519PubKeyParamsSpec), 0)); @@ -1172,7 +1172,7 @@ static bool GetAlg25519PubKeySpec(napi_env env, napi_value arg, HcfAsyKeyParamsS } static bool GetAlg25519KeyPairAsyKeySpec(napi_env env, napi_value arg, - HcfAsyKeyParamsSpec **asyKeySpec, const string algName) + HcfAsyKeyParamsSpec **asyKeySpec, const string &algName) { HcfAlg25519KeyPairParamsSpec *spec = reinterpret_cast(HcfMalloc(sizeof(HcfAlg25519KeyPairParamsSpec), 0)); @@ -1204,7 +1204,7 @@ static bool GetAlg25519KeyPairAsyKeySpec(napi_env env, napi_value arg, return true; } -static bool GetAlg25519AsyKeySpec(napi_env env, napi_value arg, HcfAsyKeyParamsSpec **asyKeySpec, const string algName) +static bool GetAlg25519AsyKeySpec(napi_env env, napi_value arg, HcfAsyKeyParamsSpec **asyKeySpec, const string &algName) { napi_value data = nullptr; napi_valuetype valueType = napi_undefined; diff --git a/frameworks/key/key_utils.c b/frameworks/key/key_utils.c index 753187c..6a34ab3 100644 --- a/frameworks/key/key_utils.c +++ b/frameworks/key/key_utils.c @@ -68,7 +68,7 @@ HcfResult CopyPoint(const HcfPoint *src, HcfPoint *dest) return HCF_SUCCESS; } -HcfResult CopyEcField(const HcfECField *src, HcfECField **dest) +static HcfResult CopyEcField(const HcfECField *src, HcfECField **dest) { if (src == NULL || src->fieldType == NULL || dest == NULL) { LOGE("Invalid input parameter."); diff --git a/interfaces/innerkits/key/key_utils.h b/interfaces/innerkits/key/key_utils.h index 0e8f0eb..618665f 100644 --- a/interfaces/innerkits/key/key_utils.h +++ b/interfaces/innerkits/key/key_utils.h @@ -29,8 +29,6 @@ HcfResult CopyAsyKeyParamsSpec(const HcfAsyKeyParamsSpec *srcSpec, HcfAsyKeyPara HcfResult CopyPoint(const HcfPoint *src, HcfPoint *dest); -HcfResult CopyEcField(const HcfECField *src, HcfECField **dest); - HcfResult CopyEccCommonSpec(const HcfEccCommParamsSpec *srcSpec, HcfEccCommParamsSpec *destSpec); HcfResult CreateEccCommonSpecImpl(const HcfEccCommParamsSpec *srcSpec, HcfEccCommParamsSpec **destSpec); diff --git a/plugin/openssl_plugin/common/inc/ecc_openssl_common.h b/plugin/openssl_plugin/common/inc/ecc_openssl_common.h index a9a73d8..6c722bc 100644 --- a/plugin/openssl_plugin/common/inc/ecc_openssl_common.h +++ b/plugin/openssl_plugin/common/inc/ecc_openssl_common.h @@ -22,12 +22,7 @@ HcfResult NewEcKeyPair(int32_t curveId, EC_KEY **returnEcKey); void FreeCurveBigNum(BIGNUM *pStd, BIGNUM *bStd, BIGNUM *xStd, BIGNUM *yStd); -HcfResult NewGroupFromCurveGFp(const HcfEccCommParamsSpec *ecParams, EC_GROUP **ecGroup, BN_CTX *ctx); -HcfResult SetEcPointToGroup(const HcfEccCommParamsSpec *ecParams, EC_GROUP *group, BN_CTX *ctx); HcfResult GenerateEcGroupWithParamsSpec(const HcfEccCommParamsSpec *ecParams, EC_GROUP **ecGroup); -HcfResult InitEcKeyByPubKey(const HcfPoint *pubKey, EC_KEY *ecKey); -HcfResult InitEcKeyByPriKey(const HcfBigInteger *priKey, EC_KEY *ecKey); -HcfResult SetEcPubKeyFromPriKey(const HcfBigInteger *priKey, EC_KEY *ecKey); HcfResult SetEcKey(const HcfPoint *pubKey, const HcfBigInteger *priKey, EC_KEY *ecKey); HcfResult GetCurveGFp(const EC_GROUP *group, const AsyKeySpecItem item, HcfBigInteger *returnBigInteger); HcfResult GetGenerator(const EC_GROUP *group, const AsyKeySpecItem item, HcfBigInteger *returnBigInteger); @@ -35,8 +30,6 @@ HcfResult GetOrder(const EC_GROUP *group, HcfBigInteger *returnBigInteger); HcfResult GetCofactor(const EC_GROUP *group, int *returnCofactor); HcfResult GetFieldSize(const EC_GROUP *group, int32_t *fieldSize); HcfResult GetFieldType(const HcfKey *self, const bool isPrivate, char **returnString); -HcfResult GetPubKeyXOrY(const EC_GROUP *group, const EC_POINT *point, const AsyKeySpecItem item, - HcfBigInteger *returnBigInteger); HcfResult GetPkSkBigInteger(const HcfKey *self, bool isPrivate, const AsyKeySpecItem item, HcfBigInteger *returnBigInteger); #endif diff --git a/plugin/openssl_plugin/common/src/ecc_openssl_common.c b/plugin/openssl_plugin/common/src/ecc_openssl_common.c index 12bad18..cf5de35 100644 --- a/plugin/openssl_plugin/common/src/ecc_openssl_common.c +++ b/plugin/openssl_plugin/common/src/ecc_openssl_common.c @@ -50,7 +50,7 @@ void FreeCurveBigNum(BIGNUM *pStd, BIGNUM *bStd, BIGNUM *xStd, BIGNUM *yStd) Openssl_BN_free(yStd); } -HcfResult NewGroupFromCurveGFp(const HcfEccCommParamsSpec *ecParams, EC_GROUP **ecGroup, BN_CTX *ctx) +static HcfResult NewGroupFromCurveGFp(const HcfEccCommParamsSpec *ecParams, EC_GROUP **ecGroup, BN_CTX *ctx) { HcfResult ret = HCF_SUCCESS; HcfECFieldFp *field = (HcfECFieldFp *)(ecParams->field); @@ -85,7 +85,7 @@ HcfResult NewGroupFromCurveGFp(const HcfEccCommParamsSpec *ecParams, EC_GROUP ** return ret; } -HcfResult SetEcPointToGroup(const HcfEccCommParamsSpec *ecParams, EC_GROUP *group, BN_CTX *ctx) +static HcfResult SetEcPointToGroup(const HcfEccCommParamsSpec *ecParams, EC_GROUP *group, BN_CTX *ctx) { HcfResult ret = HCF_SUCCESS; BIGNUM *x = NULL; @@ -163,7 +163,7 @@ HcfResult GenerateEcGroupWithParamsSpec(const HcfEccCommParamsSpec *ecParams, EC return ret; } -HcfResult InitEcKeyByPubKey(const HcfPoint *pubKey, EC_KEY *ecKey) +static HcfResult InitEcKeyByPubKey(const HcfPoint *pubKey, EC_KEY *ecKey) { const EC_GROUP *group = Openssl_EC_KEY_get0_group(ecKey); if (group == NULL) { @@ -207,7 +207,7 @@ HcfResult InitEcKeyByPubKey(const HcfPoint *pubKey, EC_KEY *ecKey) return HCF_SUCCESS; } -HcfResult InitEcKeyByPriKey(const HcfBigInteger *priKey, EC_KEY *ecKey) +static HcfResult InitEcKeyByPriKey(const HcfBigInteger *priKey, EC_KEY *ecKey) { BIGNUM *sk = NULL; if (BigIntegerToBigNum(priKey, &sk) != HCF_SUCCESS) { @@ -224,7 +224,7 @@ HcfResult InitEcKeyByPriKey(const HcfBigInteger *priKey, EC_KEY *ecKey) return HCF_SUCCESS; } -HcfResult SetEcPubKeyFromPriKey(const HcfBigInteger *priKey, EC_KEY *ecKey) +static HcfResult SetEcPubKeyFromPriKey(const HcfBigInteger *priKey, EC_KEY *ecKey) { const EC_GROUP *group = Openssl_EC_KEY_get0_group(ecKey); if (group == NULL) { @@ -245,7 +245,7 @@ HcfResult SetEcPubKeyFromPriKey(const HcfBigInteger *priKey, EC_KEY *ecKey) break; } if (!Openssl_EC_POINT_mul(group, point, sk, NULL, NULL, NULL)) { - LOGE("Openssl_EC_POINT_new or Openssl_EC_POINT_mul failed."); + LOGE("EC_POINT_mul failed."); ret = HCF_ERR_CRYPTO_OPERATION; break; } @@ -452,7 +452,7 @@ HcfResult GetFieldType(const HcfKey *self, const bool isPrivate, char **returnSt return HCF_SUCCESS; } -HcfResult GetPubKeyXOrY(const EC_GROUP *group, const EC_POINT *point, const AsyKeySpecItem item, +static HcfResult GetPubKeyXOrY(const EC_GROUP *group, const EC_POINT *point, const AsyKeySpecItem item, HcfBigInteger *returnBigInteger) { BIGNUM *pkX = Openssl_BN_new(); diff --git a/plugin/openssl_plugin/common/src/openssl_common.c b/plugin/openssl_plugin/common/src/openssl_common.c index 2582b00..c59cd29 100644 --- a/plugin/openssl_plugin/common/src/openssl_common.c +++ b/plugin/openssl_plugin/common/src/openssl_common.c @@ -450,6 +450,7 @@ HcfResult KeyDerive(EVP_PKEY *priKey, EVP_PKEY *pubKey, HcfBlob *returnSecret) { EVP_PKEY_CTX *ctx = Openssl_EVP_PKEY_CTX_new(priKey, NULL); if (ctx == NULL) { + LOGE("EVP_PKEY_CTX_new failed!"); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } diff --git a/plugin/openssl_plugin/crypto_operation/kdf/src/pbkdf2_openssl.c b/plugin/openssl_plugin/crypto_operation/kdf/src/pbkdf2_openssl.c index 5fd79b5..2ce7fde 100644 --- a/plugin/openssl_plugin/crypto_operation/kdf/src/pbkdf2_openssl.c +++ b/plugin/openssl_plugin/crypto_operation/kdf/src/pbkdf2_openssl.c @@ -200,7 +200,7 @@ static HcfResult OpensslPBKDF2(OpensslKdfSpiImpl *self, HcfPBKDF2ParamsSpec *par return HCF_SUCCESS; } -HcfResult EngineGenerateSecret(HcfKdfSpi *self, HcfKdfParamsSpec *paramsSpec) +static HcfResult EngineGenerateSecret(HcfKdfSpi *self, HcfKdfParamsSpec *paramsSpec) { if (self == NULL || paramsSpec == NULL) { LOGE("Invalid input parameter."); diff --git a/plugin/openssl_plugin/crypto_operation/signature/src/dsa_openssl.c b/plugin/openssl_plugin/crypto_operation/signature/src/dsa_openssl.c index cc044de..47084af 100644 --- a/plugin/openssl_plugin/crypto_operation/signature/src/dsa_openssl.c +++ b/plugin/openssl_plugin/crypto_operation/signature/src/dsa_openssl.c @@ -488,7 +488,7 @@ static bool EngineDsaVerifyWithoutDigestDoFinal(HcfVerifySpi *self, HcfBlob *dat return true; } -HcfResult EngineSetSignDsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t saltLen) +static HcfResult EngineSetSignDsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t saltLen) { (void)self; (void)item; @@ -496,7 +496,7 @@ HcfResult EngineSetSignDsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t s return HCF_NOT_SUPPORT; } -HcfResult EngineSetVerifyDsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32_t saltLen) +static HcfResult EngineSetVerifyDsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32_t saltLen) { (void)self; (void)item; @@ -504,7 +504,7 @@ HcfResult EngineSetVerifyDsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32 return HCF_NOT_SUPPORT; } -HcfResult EngineGetSignDsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t *returnInt) +static HcfResult EngineGetSignDsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t *returnInt) { (void)self; (void)item; @@ -512,7 +512,7 @@ HcfResult EngineGetSignDsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t * return HCF_NOT_SUPPORT; } -HcfResult EngineGetVerifyDsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32_t *returnInt) +static HcfResult EngineGetVerifyDsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32_t *returnInt) { (void)self; (void)item; @@ -520,7 +520,7 @@ HcfResult EngineGetVerifyDsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32 return HCF_NOT_SUPPORT; } -HcfResult EngineGetSignDsaSpecString(HcfSignSpi *self, SignSpecItem item, char **returnString) +static HcfResult EngineGetSignDsaSpecString(HcfSignSpi *self, SignSpecItem item, char **returnString) { (void)self; (void)item; @@ -536,7 +536,7 @@ static HcfResult EngineSetSignDsaSpecUint8Array(HcfSignSpi *self, SignSpecItem i return HCF_NOT_SUPPORT; } -HcfResult EngineGetVerifyDsaSpecString(HcfVerifySpi *self, SignSpecItem item, char **returnString) +static HcfResult EngineGetVerifyDsaSpecString(HcfVerifySpi *self, SignSpecItem item, char **returnString) { (void)self; (void)item; diff --git a/plugin/openssl_plugin/crypto_operation/signature/src/ecdsa_openssl.c b/plugin/openssl_plugin/crypto_operation/signature/src/ecdsa_openssl.c index ebdd272..0ec3389 100644 --- a/plugin/openssl_plugin/crypto_operation/signature/src/ecdsa_openssl.c +++ b/plugin/openssl_plugin/crypto_operation/signature/src/ecdsa_openssl.c @@ -87,9 +87,11 @@ static const char *GetEcdsaVerifyClass(void) static void DestroyEcdsaSign(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetEcdsaSignClass())) { + LOGE("Class not match."); return; } HcfSignSpiEcdsaOpensslImpl *impl = (HcfSignSpiEcdsaOpensslImpl *)self; @@ -101,9 +103,11 @@ static void DestroyEcdsaSign(HcfObjectBase *self) static void DestroyEcdsaVerify(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetEcdsaVerifyClass())) { + LOGE("Class not match."); return; } HcfVerifySpiEcdsaOpensslImpl *impl = (HcfVerifySpiEcdsaOpensslImpl *)self; @@ -121,6 +125,7 @@ static HcfResult EngineSignInit(HcfSignSpi *self, HcfParamsSpec *params, HcfPriK } if ((!IsClassMatch((HcfObjectBase *)self, GetEcdsaSignClass())) || (!IsClassMatch((HcfObjectBase *)privateKey, HCF_OPENSSL_ECC_PRI_KEY_CLASS))) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -133,22 +138,26 @@ static HcfResult EngineSignInit(HcfSignSpi *self, HcfParamsSpec *params, HcfPriK EC_KEY *ecKey = Openssl_EC_KEY_dup(((HcfOpensslEccPriKey *)privateKey)->ecKey); if (ecKey == NULL) { HcfPrintOpensslError(); + LOGE("Dup ecKey failed."); return HCF_ERR_CRYPTO_OPERATION; } EVP_PKEY *pKey = Openssl_EVP_PKEY_new(); if (pKey == NULL) { HcfPrintOpensslError(); + LOGE("Dup pKey failed."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_PKEY_assign_EC_KEY(pKey, ecKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_PKEY_assign_EC_KEY failed."); Openssl_EC_KEY_free(ecKey); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_DigestSignInit(impl->ctx, NULL, impl->digestAlg, NULL, pKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignInit failed."); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -164,6 +173,7 @@ static HcfResult EngineSignUpdate(HcfSignSpi *self, HcfBlob *data) return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, GetEcdsaSignClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } HcfSignSpiEcdsaOpensslImpl *impl = (HcfSignSpiEcdsaOpensslImpl *)self; @@ -173,6 +183,7 @@ static HcfResult EngineSignUpdate(HcfSignSpi *self, HcfBlob *data) } if (Openssl_EVP_DigestSignUpdate(impl->ctx, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignUpdate failed."); return HCF_ERR_CRYPTO_OPERATION; } impl->status = READY; @@ -186,6 +197,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, GetEcdsaSignClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -193,6 +205,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret if (IsBlobValid(data)) { if (Openssl_EVP_DigestSignUpdate(impl->ctx, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignUpdate failed."); return HCF_ERR_CRYPTO_OPERATION; } impl->status = READY; @@ -204,6 +217,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret size_t maxLen; if (Openssl_EVP_DigestSignFinal(impl->ctx, NULL, &maxLen) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignFinal failed."); return HCF_ERR_CRYPTO_OPERATION; } uint8_t *outData = (uint8_t *)HcfMalloc(maxLen, 0); @@ -214,6 +228,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret size_t actualLen = maxLen; if (Openssl_EVP_DigestSignFinal(impl->ctx, outData, &actualLen) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignFinal failed."); HcfFree(outData); return HCF_ERR_CRYPTO_OPERATION; } @@ -237,6 +252,7 @@ static HcfResult EngineVerifyInit(HcfVerifySpi *self, HcfParamsSpec *params, Hcf } if ((!IsClassMatch((HcfObjectBase *)self, GetEcdsaVerifyClass())) || (!IsClassMatch((HcfObjectBase *)publicKey, HCF_OPENSSL_ECC_PUB_KEY_CLASS))) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -248,22 +264,26 @@ static HcfResult EngineVerifyInit(HcfVerifySpi *self, HcfParamsSpec *params, Hcf EC_KEY *ecKey = Openssl_EC_KEY_dup(((HcfOpensslEccPubKey *)publicKey)->ecKey); if (ecKey == NULL) { HcfPrintOpensslError(); + LOGE("Dup ecKey failed."); return HCF_ERR_CRYPTO_OPERATION; } EVP_PKEY *pKey = Openssl_EVP_PKEY_new(); if (pKey == NULL) { HcfPrintOpensslError(); + LOGE("New pKey failed."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_PKEY_assign_EC_KEY(pKey, ecKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_PKEY_assign_EC_KEY failed."); Openssl_EC_KEY_free(ecKey); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_DigestVerifyInit(impl->ctx, NULL, impl->digestAlg, NULL, pKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerifyInit failed."); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -279,6 +299,7 @@ static HcfResult EngineVerifyUpdate(HcfVerifySpi *self, HcfBlob *data) return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, GetEcdsaVerifyClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -289,6 +310,7 @@ static HcfResult EngineVerifyUpdate(HcfVerifySpi *self, HcfBlob *data) } if (Openssl_EVP_DigestVerifyUpdate(impl->ctx, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerifyUpdate failed."); return HCF_ERR_CRYPTO_OPERATION; } impl->status = READY; @@ -302,6 +324,7 @@ static bool EngineVerifyDoFinal(HcfVerifySpi *self, HcfBlob *data, HcfBlob *sign return false; } if (!IsClassMatch((HcfObjectBase *)self, GetEcdsaVerifyClass())) { + LOGE("Class not match."); return false; } @@ -309,6 +332,7 @@ static bool EngineVerifyDoFinal(HcfVerifySpi *self, HcfBlob *data, HcfBlob *sign if (IsBlobValid(data)) { if (Openssl_EVP_DigestVerifyUpdate(impl->ctx, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerifyUpdate failed."); return false; } impl->status = READY; @@ -319,12 +343,13 @@ static bool EngineVerifyDoFinal(HcfVerifySpi *self, HcfBlob *data, HcfBlob *sign } if (Openssl_EVP_DigestVerifyFinal(impl->ctx, signatureData->data, signatureData->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerifyFinal failed."); return false; } return true; } -HcfResult EngineSetSignEcdsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t saltLen) +static HcfResult EngineSetSignEcdsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t saltLen) { (void)self; (void)item; @@ -332,7 +357,7 @@ HcfResult EngineSetSignEcdsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t return HCF_NOT_SUPPORT; } -HcfResult EngineSetVerifyEcdsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32_t saltLen) +static HcfResult EngineSetVerifyEcdsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32_t saltLen) { (void)self; (void)item; @@ -340,7 +365,7 @@ HcfResult EngineSetVerifyEcdsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int return HCF_NOT_SUPPORT; } -HcfResult EngineGetSignEcdsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t *returnInt) +static HcfResult EngineGetSignEcdsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t *returnInt) { (void)self; (void)item; @@ -348,7 +373,7 @@ HcfResult EngineGetSignEcdsaSpecInt(HcfSignSpi *self, SignSpecItem item, int32_t return HCF_NOT_SUPPORT; } -HcfResult EngineGetVerifyEcdsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32_t *returnInt) +static HcfResult EngineGetVerifyEcdsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int32_t *returnInt) { (void)self; (void)item; @@ -356,7 +381,7 @@ HcfResult EngineGetVerifyEcdsaSpecInt(HcfVerifySpi *self, SignSpecItem item, int return HCF_NOT_SUPPORT; } -HcfResult EngineGetSignEcdsaSpecString(HcfSignSpi *self, SignSpecItem item, char **returnString) +static HcfResult EngineGetSignEcdsaSpecString(HcfSignSpi *self, SignSpecItem item, char **returnString) { (void)self; (void)item; @@ -372,7 +397,7 @@ static HcfResult EngineSetSignEcdsaSpecUint8Array(HcfSignSpi *self, SignSpecItem return HCF_NOT_SUPPORT; } -HcfResult EngineGetVerifyEcdsaSpecString(HcfVerifySpi *self, SignSpecItem item, char **returnString) +static HcfResult EngineGetVerifyEcdsaSpecString(HcfVerifySpi *self, SignSpecItem item, char **returnString) { (void)self; (void)item; @@ -448,10 +473,12 @@ HcfResult HcfVerifySpiEcdsaCreate(HcfSignatureParams *params, HcfVerifySpi **ret } if (params->algo == HCF_ALG_ECC_BRAINPOOL) { if (!IsBrainPoolDigestAlgValid(params->md)) { + LOGE("Invalid md."); return HCF_INVALID_PARAMS; } } else { if (!IsDigestAlgValid(params->md)) { + LOGE("Invalid md."); return HCF_INVALID_PARAMS; } } diff --git a/plugin/openssl_plugin/crypto_operation/signature/src/ed25519_openssl.c b/plugin/openssl_plugin/crypto_operation/signature/src/ed25519_openssl.c index 95f99f0..5e1ceba 100644 --- a/plugin/openssl_plugin/crypto_operation/signature/src/ed25519_openssl.c +++ b/plugin/openssl_plugin/crypto_operation/signature/src/ed25519_openssl.c @@ -59,7 +59,12 @@ static const char *GetEd25519VerifyClass(void) static void DestroyEd25519Sign(HcfObjectBase *self) { - if (self == NULL || !IsClassMatch(self, self->getClass())) { + if (self == NULL) { + LOGE("Class is null."); + return; + } + if (!IsClassMatch(self, self->getClass())) { + LOGE("Class not match."); return; } HcfSignSpiEd25519OpensslImpl *impl = (HcfSignSpiEd25519OpensslImpl *)self; @@ -72,7 +77,12 @@ static void DestroyEd25519Sign(HcfObjectBase *self) static void DestroyEd25519Verify(HcfObjectBase *self) { - if (self == NULL || !IsClassMatch(self, self->getClass())) { + if (self == NULL) { + LOGE("Class is null."); + return; + } + if (!IsClassMatch(self, self->getClass())) { + LOGE("Class not match."); return; } HcfVerifySpiEd25519OpensslImpl *impl = (HcfVerifySpiEd25519OpensslImpl *)self; @@ -92,6 +102,7 @@ static HcfResult EngineSignInit(HcfSignSpi *self, HcfParamsSpec *params, HcfPriK } if ((!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) || (!IsClassMatch((HcfObjectBase *)privateKey, OPENSSL_ALG25519_PRIKEY_CLASS))) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -103,10 +114,12 @@ static HcfResult EngineSignInit(HcfSignSpi *self, HcfParamsSpec *params, HcfPriK EVP_PKEY *pKey = Openssl_EVP_PKEY_dup(((HcfOpensslAlg25519PriKey *)privateKey)->pkey); if (pKey == NULL) { HcfPrintOpensslError(); + LOGE("Dup pkey failed."); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_DigestSignInit(impl->mdCtx, NULL, NULL, NULL, pKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignInit failed."); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -129,6 +142,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } if (!IsBlobValid(data)) { @@ -143,6 +157,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret size_t siglen; if (Openssl_EVP_DigestSign(impl->mdCtx, NULL, &siglen, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSign failed."); return HCF_ERR_CRYPTO_OPERATION; } uint8_t *signatureData = (uint8_t *)HcfMalloc(siglen, 0); @@ -152,6 +167,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret } if (Openssl_EVP_DigestSign(impl->mdCtx, signatureData, &siglen, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSign failed."); HcfFree(signatureData); return HCF_ERR_CRYPTO_OPERATION; } @@ -169,6 +185,7 @@ static HcfResult EngineVerifyInit(HcfVerifySpi *self, HcfParamsSpec *params, Hcf } if ((!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) || (!IsClassMatch((HcfObjectBase *)publicKey, OPENSSL_ALG25519_PUBKEY_CLASS))) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -180,10 +197,12 @@ static HcfResult EngineVerifyInit(HcfVerifySpi *self, HcfParamsSpec *params, Hcf EVP_PKEY *pKey = Openssl_EVP_PKEY_dup(((HcfOpensslAlg25519PubKey *)publicKey)->pkey); if (pKey == NULL) { HcfPrintOpensslError(); + LOGE("Dup pkey failed."); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_DigestVerifyInit(impl->mdCtx, NULL, NULL, NULL, pKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerifyInit failed."); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -206,6 +225,7 @@ static bool EngineVerifyDoFinal(HcfVerifySpi *self, HcfBlob *data, HcfBlob *sign return false; } if (!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) { + LOGE("Class not match."); return false; } if (!IsBlobValid(data)) { @@ -220,6 +240,7 @@ static bool EngineVerifyDoFinal(HcfVerifySpi *self, HcfBlob *data, HcfBlob *sign if (Openssl_EVP_DigestVerify(impl->mdCtx, signatureData->data, signatureData->len, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerify failed."); return false; } return true; diff --git a/plugin/openssl_plugin/crypto_operation/signature/src/sm2_openssl.c b/plugin/openssl_plugin/crypto_operation/signature/src/sm2_openssl.c index 0bc463e..25b49b0 100644 --- a/plugin/openssl_plugin/crypto_operation/signature/src/sm2_openssl.c +++ b/plugin/openssl_plugin/crypto_operation/signature/src/sm2_openssl.c @@ -78,7 +78,12 @@ static const char *GetSm2VerifyClass(void) static void DestroySm2Sign(HcfObjectBase *self) { - if (self == NULL || !IsClassMatch(self, self->getClass())) { + if (self == NULL) { + LOGE("Class is null."); + return; + } + if (!IsClassMatch(self, self->getClass())) { + LOGE("Class not match."); return; } HcfSignSpiSm2OpensslImpl *impl = (HcfSignSpiSm2OpensslImpl *)self; @@ -94,7 +99,12 @@ static void DestroySm2Sign(HcfObjectBase *self) static void DestroySm2Verify(HcfObjectBase *self) { - if (self == NULL || !IsClassMatch(self, self->getClass())) { + if (self == NULL) { + LOGE("Class is null."); + return; + } + if (!IsClassMatch(self, self->getClass())) { + LOGE("Class not match."); return; } HcfVerifySpiSm2OpensslImpl *impl = (HcfVerifySpiSm2OpensslImpl *)self; @@ -169,13 +179,13 @@ static HcfResult SetSM2Id(EVP_MD_CTX *mdCtx, EVP_PKEY *pKey, HcfBlob userId) static HcfResult EngineSignInit(HcfSignSpi *self, HcfParamsSpec *params, HcfPriKey *privateKey) { - (void)params; if ((self == NULL) || (privateKey == NULL)) { LOGE("Invalid input parameter."); return HCF_INVALID_PARAMS; } if ((!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) || (!IsClassMatch((HcfObjectBase *)privateKey, HCF_OPENSSL_SM2_PRI_KEY_CLASS))) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -187,26 +197,31 @@ static HcfResult EngineSignInit(HcfSignSpi *self, HcfParamsSpec *params, HcfPriK EC_KEY *ecKey = Openssl_EC_KEY_dup(((HcfOpensslSm2PriKey *)privateKey)->ecKey); if (ecKey == NULL) { HcfPrintOpensslError(); + LOGE("Dup ecKey failed."); return HCF_ERR_CRYPTO_OPERATION; } EVP_PKEY *pKey = Openssl_EVP_PKEY_new(); if (pKey == NULL) { HcfPrintOpensslError(); + LOGE("New pKey failed."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_PKEY_assign_EC_KEY(pKey, ecKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_PKEY_assign_EC_KEY failed."); Openssl_EC_KEY_free(ecKey); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } if (SetSM2Id(impl->mdCtx, pKey, impl->userId) != HCF_SUCCESS) { Openssl_EVP_PKEY_free(pKey); + LOGE("Set sm2 user id failed."); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_DigestSignInit(impl->mdCtx, NULL, impl->digestAlg, NULL, pKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignInit failed."); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -222,6 +237,7 @@ static HcfResult EngineSignUpdate(HcfSignSpi *self, HcfBlob *data) return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } HcfSignSpiSm2OpensslImpl *impl = (HcfSignSpiSm2OpensslImpl *)self; @@ -231,6 +247,7 @@ static HcfResult EngineSignUpdate(HcfSignSpi *self, HcfBlob *data) } if (Openssl_EVP_DigestSignUpdate(impl->mdCtx, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignUpdate failed."); return HCF_ERR_CRYPTO_OPERATION; } impl->status = READY; @@ -244,6 +261,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -251,6 +269,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret if (IsBlobValid(data)) { if (Openssl_EVP_DigestSignUpdate(impl->mdCtx, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignUpdate failed."); return HCF_ERR_CRYPTO_OPERATION; } impl->status = READY; @@ -262,6 +281,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret size_t maxLen; if (Openssl_EVP_DigestSignFinal(impl->mdCtx, NULL, &maxLen) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignFinal failed."); return HCF_ERR_CRYPTO_OPERATION; } uint8_t *outData = (uint8_t *)HcfMalloc(maxLen, 0); @@ -272,6 +292,7 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret size_t actualLen = maxLen; if (Openssl_EVP_DigestSignFinal(impl->mdCtx, outData, &actualLen) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestSignFinal failed."); HcfFree(outData); return HCF_ERR_CRYPTO_OPERATION; } @@ -288,13 +309,13 @@ static HcfResult EngineSignDoFinal(HcfSignSpi *self, HcfBlob *data, HcfBlob *ret static HcfResult EngineVerifyInit(HcfVerifySpi *self, HcfParamsSpec *params, HcfPubKey *publicKey) { - (void)params; if ((self == NULL) || (publicKey == NULL)) { LOGE("Invalid input parameter."); return HCF_INVALID_PARAMS; } if ((!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) || (!IsClassMatch((HcfObjectBase *)publicKey, HCF_OPENSSL_SM2_PUB_KEY_CLASS))) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -306,26 +327,31 @@ static HcfResult EngineVerifyInit(HcfVerifySpi *self, HcfParamsSpec *params, Hcf EC_KEY *ecKey = Openssl_EC_KEY_dup(((HcfOpensslSm2PubKey *)publicKey)->ecKey); if (ecKey == NULL) { HcfPrintOpensslError(); + LOGE("Dup ecKey failed."); return HCF_ERR_CRYPTO_OPERATION; } EVP_PKEY *pKey = Openssl_EVP_PKEY_new(); if (pKey == NULL) { HcfPrintOpensslError(); + LOGE("New pKey failed."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_PKEY_assign_EC_KEY(pKey, ecKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_PKEY_assign_EC_KEY failed."); Openssl_EC_KEY_free(ecKey); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } if (SetSM2Id(impl->mdCtx, pKey, impl->userId) != HCF_SUCCESS) { + LOGE("Set sm2 user id failed."); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EVP_DigestVerifyInit(impl->mdCtx, NULL, impl->digestAlg, NULL, pKey) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerifyInit failed."); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -341,6 +367,7 @@ static HcfResult EngineVerifyUpdate(HcfVerifySpi *self, HcfBlob *data) return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -351,6 +378,7 @@ static HcfResult EngineVerifyUpdate(HcfVerifySpi *self, HcfBlob *data) } if (Openssl_EVP_DigestVerifyUpdate(impl->mdCtx, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerifyUpdate failed."); return HCF_ERR_CRYPTO_OPERATION; } impl->status = READY; @@ -364,6 +392,7 @@ static bool EngineVerifyDoFinal(HcfVerifySpi *self, HcfBlob *data, HcfBlob *sign return false; } if (!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) { + LOGE("Class not match."); return false; } @@ -371,6 +400,7 @@ static bool EngineVerifyDoFinal(HcfVerifySpi *self, HcfBlob *data, HcfBlob *sign if (IsBlobValid(data)) { if (Openssl_EVP_DigestVerifyUpdate(impl->mdCtx, data->data, data->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerifyUpdate failed."); return false; } impl->status = READY; @@ -381,6 +411,7 @@ static bool EngineVerifyDoFinal(HcfVerifySpi *self, HcfBlob *data, HcfBlob *sign } if (Openssl_EVP_DigestVerifyFinal(impl->mdCtx, signatureData->data, signatureData->len) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + LOGE("EVP_DigestVerifyFinal failed."); return false; } return true; diff --git a/plugin/openssl_plugin/key/asy_key_generator/src/alg_25519_asy_key_generator_openssl.c b/plugin/openssl_plugin/key/asy_key_generator/src/alg_25519_asy_key_generator_openssl.c index 6fbf49b..0272862 100644 --- a/plugin/openssl_plugin/key/asy_key_generator/src/alg_25519_asy_key_generator_openssl.c +++ b/plugin/openssl_plugin/key/asy_key_generator/src/alg_25519_asy_key_generator_openssl.c @@ -333,7 +333,7 @@ static HcfResult GetAlg25519PriKey(EVP_PKEY *priKey, HcfBigInteger *returnBigInt { size_t len = 0; if (!Openssl_EVP_PKEY_get_raw_private_key(priKey, NULL, &len)) { - LOGE("Get len failed."); + LOGE("Get private key length failed."); return HCF_ERR_CRYPTO_OPERATION; } returnBigInteger->data = (unsigned char *)HcfMalloc(len, 0); @@ -590,7 +590,7 @@ static HcfResult ConvertAlg25519PubKey(const HcfBlob *pubKeyBlob, HcfOpensslAlg2 const unsigned char *tmpData = (const unsigned char *)(pubKeyBlob->data); EVP_PKEY *pkey = Openssl_d2i_PUBKEY(NULL, &tmpData, pubKeyBlob->len); if (pkey == NULL) { - LOGE("D2i pubkey fail."); + LOGE("Call d2i_PUBKEY fail."); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } @@ -608,7 +608,7 @@ static HcfResult ConvertAlg25519PriKey(int type, const HcfBlob *priKeyBlob, const unsigned char *tmpData = (const unsigned char *)(priKeyBlob->data); EVP_PKEY *pkey = Openssl_d2i_PrivateKey(type, NULL, &tmpData, priKeyBlob->len); if (pkey == NULL) { - LOGE("D2i privateKey fail."); + LOGE("Call d2i_PrivateKey fail."); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } @@ -691,8 +691,8 @@ static HcfResult EngineGenerateAlg25519KeyPair(HcfAsyKeyGeneratorSpi *self, HcfK return HCF_SUCCESS; } -static HcfResult EngineConvertAlg25519Key(HcfAsyKeyGeneratorSpi *self, HcfParamsSpec *params, - HcfBlob *pubKeyBlob, HcfBlob *priKeyBlob, HcfKeyPair **returnKeyPair) +static HcfResult EngineConvertAlg25519Key(HcfAsyKeyGeneratorSpi *self, HcfParamsSpec *params, HcfBlob *pubKeyBlob, + HcfBlob *priKeyBlob, HcfKeyPair **returnKeyPair) { if ((self == NULL) || (returnKeyPair == NULL)) { LOGE("Invalid input parameter."); @@ -771,7 +771,7 @@ static HcfResult CreateOpensslAlg25519PriKey(const HcfBigInteger *sk, const char return HCF_INVALID_PARAMS; } if (privkey == NULL) { - LOGE("set alg25519 priKey failed."); + LOGE("Get alg25519 priKey failed."); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } diff --git a/plugin/openssl_plugin/key/asy_key_generator/src/dh_asy_key_generator_openssl.c b/plugin/openssl_plugin/key/asy_key_generator/src/dh_asy_key_generator_openssl.c index 7dd3fc6..056b5a6 100644 --- a/plugin/openssl_plugin/key/asy_key_generator/src/dh_asy_key_generator_openssl.c +++ b/plugin/openssl_plugin/key/asy_key_generator/src/dh_asy_key_generator_openssl.c @@ -54,11 +54,9 @@ static void FreeCommSpecBn(BIGNUM *p, BIGNUM *g) { if (p != NULL) { Openssl_BN_free(p); - p = NULL; } if (g != NULL) { Openssl_BN_free(g); - g = NULL; } } @@ -85,9 +83,11 @@ static const char *GetDhPriKeyClass(void) static void DestroyDhKeyGeneratorSpiImpl(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetDhKeyGeneratorSpiClass())) { + LOGE("Class not match."); return; } HcfFree(self); @@ -96,9 +96,11 @@ static void DestroyDhKeyGeneratorSpiImpl(HcfObjectBase *self) static void DestroyDhPubKey(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetDhPubKeyClass())) { + LOGE("Class not match."); return; } HcfOpensslDhPubKey *impl = (HcfOpensslDhPubKey *)self; @@ -110,9 +112,11 @@ static void DestroyDhPubKey(HcfObjectBase *self) static void DestroyDhPriKey(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetDhPriKeyClass())) { + LOGE("Class not match."); return; } HcfOpensslDhPriKey *impl = (HcfOpensslDhPriKey *)self; @@ -124,9 +128,11 @@ static void DestroyDhPriKey(HcfObjectBase *self) static void DestroyDhKeyPair(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetDhKeyPairClass())) { + LOGE("Class not match."); return; } HcfOpensslDhKeyPair *impl = (HcfOpensslDhKeyPair *)self; @@ -144,6 +150,7 @@ static const char *GetDhPubKeyAlgorithm(HcfKey *self) return NULL; } if (!IsClassMatch((HcfObjectBase *)self, GetDhPubKeyClass())) { + LOGE("Class not match."); return NULL; } return ALGORITHM_NAME_DH; @@ -156,6 +163,7 @@ static const char *GetDhPriKeyAlgorithm(HcfKey *self) return NULL; } if (!IsClassMatch((HcfObjectBase *)self, GetDhPriKeyClass())) { + LOGE("Class not match."); return NULL; } return ALGORITHM_NAME_DH; @@ -168,13 +176,14 @@ static HcfResult GetDhPubKeyEncoded(HcfKey *self, HcfBlob *returnBlob) return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, GetDhPubKeyClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } HcfOpensslDhPubKey *impl = (HcfOpensslDhPubKey *)self; unsigned char *returnData = NULL; EVP_PKEY *pKey = NewEvpPkeyByDh(impl->pk, true); if (pKey == NULL) { - LOGE("new pKey by dh fail."); + LOGE("New pKey by dh fail."); return HCF_ERR_CRYPTO_OPERATION; } int len = Openssl_i2d_PUBKEY(pKey, &returnData); @@ -197,13 +206,14 @@ static HcfResult GetDhPriKeyEncoded(HcfKey *self, HcfBlob *returnBlob) return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, GetDhPriKeyClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } HcfOpensslDhPriKey *impl = (HcfOpensslDhPriKey *)self; unsigned char *returnData = NULL; EVP_PKEY *pKey = NewEvpPkeyByDh(impl->sk, true); if (pKey == NULL) { - LOGE("new pKey by dh fail."); + LOGE("New pKey by dh fail."); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } @@ -227,6 +237,7 @@ static const char *GetDhPubKeyFormat(HcfKey *self) return NULL; } if (!IsClassMatch((HcfObjectBase *)self, GetDhPubKeyClass())) { + LOGE("Class not match."); return NULL; } return OPENSSL_DH_PUBKEY_FORMAT; @@ -239,6 +250,7 @@ static const char *GetDhPriKeyFormat(HcfKey *self) return NULL; } if (!IsClassMatch((HcfObjectBase *)self, GetDhPriKeyClass())) { + LOGE("Class not match."); return NULL; } return OPENSSL_DH_PRIKEY_FORMAT; @@ -344,7 +356,7 @@ static HcfResult GetIntSpecFromDhPriKey(const HcfPriKey *self, const AsyKeySpecI return HCF_INVALID_PARAMS; } if (item != DH_L_NUM) { - LOGE("Inalid spec item."); + LOGE("Invalid input item."); return HCF_INVALID_PARAMS; } HcfOpensslDhPriKey *impl = (HcfOpensslDhPriKey *)self; @@ -375,9 +387,11 @@ static HcfResult GetStrSpecFromDhPriKey(const HcfPriKey *self, const AsyKeySpecI static void ClearDhPriKeyMem(HcfPriKey *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch((HcfObjectBase *)self, GetDhPriKeyClass())) { + LOGE("Class not match."); return; } HcfOpensslDhPriKey *impl = (HcfOpensslDhPriKey *)self; @@ -676,6 +690,7 @@ static HcfResult GenerateOpensslDhKeyByPubKeySpec(const HcfDhPubKeyParamsSpec *p } if (CreateOpensslDhKey(&(paramsSpec->base), pubKey, NULL, returnDh) != HCF_SUCCESS) { + LOGE("Create dh key failed."); Openssl_BN_free(pubKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -691,6 +706,7 @@ static HcfResult GenerateOpensslDhKeyByPriKeySpec(const HcfDhPriKeyParamsSpec *p } if (CreateOpensslDhKey(&(paramsSpec->base), NULL, priKey, returnDh) != HCF_SUCCESS) { + LOGE("Create dh key failed."); Openssl_BN_free(priKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -711,6 +727,7 @@ static HcfResult GenerateOpensslDhKeyByKeyPairSpec(const HcfDhKeyPairParamsSpec return HCF_ERR_CRYPTO_OPERATION; } if (CreateOpensslDhKey(&(paramsSpec->base), pubKey, priKey, returnDh) != HCF_SUCCESS) { + LOGE("Create dh key failed."); Openssl_BN_free(pubKey); Openssl_BN_free(priKey); return HCF_ERR_CRYPTO_OPERATION; @@ -733,7 +750,7 @@ static HcfResult CreateDhKeyPairByCommSpec(const HcfDhCommParamsSpec *paramsSpec } if (Openssl_DH_up_ref(dh) != HCF_OPENSSL_SUCCESS) { - LOGE("Dup DH failed."); + LOGE("DH_up_ref failed."); HcfPrintOpensslError(); HcfObjDestroy(pubKey); return HCF_ERR_CRYPTO_OPERATION; @@ -746,6 +763,7 @@ static HcfResult CreateDhKeyPairByCommSpec(const HcfDhCommParamsSpec *paramsSpec HcfObjDestroy(pubKey); return HCF_ERR_MALLOC; } + if (CreateDhKeyPair(pubKey, priKey, returnKeyPair) != HCF_SUCCESS) { LOGE("Create dh keyPair failed."); HcfObjDestroy(pubKey); @@ -850,7 +868,7 @@ static HcfResult CreateDhPriKeyBySpec(const HcfDhPriKeyParamsSpec *paramsSpec, H HcfOpensslDhPriKey *priKey = NULL; if (CreateDhPriKey(dh, &priKey) != HCF_SUCCESS) { - LOGE("Create dh priKey failed."); + LOGE("Create dh priKey failed."); Openssl_DH_free(dh); return HCF_ERR_MALLOC; } @@ -863,13 +881,13 @@ static HcfResult ConvertDhPubKey(const HcfBlob *pubKeyBlob, HcfOpensslDhPubKey * const unsigned char *temp = (const unsigned char *)pubKeyBlob->data; EVP_PKEY *pKey = Openssl_d2i_PUBKEY(NULL, &temp, pubKeyBlob->len); if (pKey == NULL) { - LOGE("d2i_PrivateKey or PUBKEY fail."); + LOGE("Call d2i_PUBKEY failed."); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } DH *dh = Openssl_EVP_PKEY_get1_DH(pKey); if (dh == NULL) { - LOGE("EVP_PKEY_get1_DH fail"); + LOGE("EVP_PKEY_get1_DH failed"); HcfPrintOpensslError(); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; @@ -888,13 +906,13 @@ static HcfResult ConvertDhPriKey(const HcfBlob *priKeyBlob, HcfOpensslDhPriKey * const unsigned char *temp = (const unsigned char *)priKeyBlob->data; EVP_PKEY *pKey = Openssl_d2i_PrivateKey(EVP_PKEY_DH, NULL, &temp, priKeyBlob->len); if (pKey == NULL) { - LOGE("d2i_PrivateKey or PUBKEY fail."); + LOGE("Call d2i_PrivateKey failed."); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } DH *dh = Openssl_EVP_PKEY_get1_DH(pKey); if (dh == NULL) { - LOGE("EVP_PKEY_get1_DH fail"); + LOGE("EVP_PKEY_get1_DH failed"); HcfPrintOpensslError(); Openssl_EVP_PKEY_free(pKey); return HCF_ERR_CRYPTO_OPERATION; diff --git a/plugin/openssl_plugin/key/asy_key_generator/src/dh_common_param_spec_generator_openssl.c b/plugin/openssl_plugin/key/asy_key_generator/src/dh_common_param_spec_generator_openssl.c index e0a21ec..cc203fd 100644 --- a/plugin/openssl_plugin/key/asy_key_generator/src/dh_common_param_spec_generator_openssl.c +++ b/plugin/openssl_plugin/key/asy_key_generator/src/dh_common_param_spec_generator_openssl.c @@ -39,13 +39,13 @@ static HcfResult GenerateDhUnknownGroupEvpKey(int32_t pLen, EVP_PKEY **ppkey) do { if (Openssl_EVP_PKEY_paramgen_init(paramsCtx) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); - LOGE("Params ctx generate init failed."); + LOGE("Params ctx paramgen init failed."); ret = HCF_ERR_CRYPTO_OPERATION; break; } if (Openssl_EVP_PKEY_CTX_set_dh_paramgen_prime_len(paramsCtx, pLen) <= 0) { HcfPrintOpensslError(); - LOGE("Set length of bits to params ctx failed."); + LOGE("Set prime length of bits to params ctx failed."); ret = HCF_ERR_CRYPTO_OPERATION; break; } @@ -81,19 +81,19 @@ static HcfResult GenerateDhKnownGroupEvpKey(int32_t skLen, char *nidName, EVP_PK break; } if (Openssl_EVP_PKEY_keygen_init(paramsCtx) != HCF_OPENSSL_SUCCESS) { - LOGE("ParamsCtx generate init failed."); + LOGE("Pkey keygen init failed."); HcfPrintOpensslError(); ret = HCF_ERR_CRYPTO_OPERATION; break; } if (Openssl_EVP_PKEY_CTX_set_params(paramsCtx, params) != HCF_OPENSSL_SUCCESS) { - LOGE("ParamsCtx set failed."); + LOGE("Set paramsCtx failed."); HcfPrintOpensslError(); ret = HCF_ERR_CRYPTO_OPERATION; break; } if (Openssl_EVP_PKEY_generate(paramsCtx, ppkey) != HCF_OPENSSL_SUCCESS) { - LOGE("Create generate failed."); + LOGE("Generate pKey failed."); HcfPrintOpensslError(); ret = HCF_ERR_CRYPTO_OPERATION; break; @@ -128,20 +128,20 @@ static HcfResult BuildCommonParam(EVP_PKEY *dhKey, HcfDhCommParamsSpecSpi *retur return HCF_SUCCESS; } -HcfResult SetAlgName(const char *algName, char **returnAlgName) +static HcfResult SetAlgName(const char *algName, char **returnAlgName) { size_t srcAlgNameLen = HcfStrlen(algName); if (!srcAlgNameLen) { - LOGE("algName is empty!"); + LOGE("AlgName is empty!"); return HCF_INVALID_PARAMS; } *returnAlgName = (char *)HcfMalloc(srcAlgNameLen + 1, 0); if (*returnAlgName == NULL) { - LOGE("algName malloc failed."); + LOGE("Failed to malloc algName memory."); return HCF_ERR_MALLOC; } if (memcpy_s(*returnAlgName, srcAlgNameLen, algName, srcAlgNameLen) != EOK) { - LOGE("memcpy algName failed."); + LOGE("Failed to memcpy algName."); HcfFree(*returnAlgName); return HCF_ERR_CRYPTO_OPERATION; } @@ -158,18 +158,18 @@ HcfResult HcfDhCommonParamSpecCreate(int32_t pLen, int32_t skLen, HcfDhCommParam char *nidName = GetNidNameByDhPLen(pLen); if (nidName == NULL) { if (GenerateDhUnknownGroupEvpKey(pLen, &dhKey) != HCF_SUCCESS) { - LOGE("generate dh unknown group evpKey failed."); + LOGE("Generate dh unknown group evpKey failed."); return HCF_ERR_CRYPTO_OPERATION; } } else { if (GenerateDhKnownGroupEvpKey(skLen, nidName, &dhKey) != HCF_SUCCESS) { - LOGE("generate dh known group evpKey failed."); + LOGE("Generate dh known group evpKey failed."); return HCF_ERR_CRYPTO_OPERATION; } } HcfDhCommParamsSpecSpi *object = (HcfDhCommParamsSpecSpi*)HcfMalloc(sizeof(HcfDhCommParamsSpecSpi), 0); if (object == NULL) { - LOGE("build dh common params object failed."); + LOGE("Build dh common params object failed."); Openssl_EVP_PKEY_free(dhKey); return HCF_ERR_MALLOC; } @@ -177,13 +177,13 @@ HcfResult HcfDhCommonParamSpecCreate(int32_t pLen, int32_t skLen, HcfDhCommParam object->paramsSpec.base.specType = HCF_COMMON_PARAMS_SPEC; object->paramsSpec.length = skLen; if (SetAlgName(algName, &(object->paramsSpec.base.algName)) != HCF_SUCCESS) { - LOGE("get algName parameter failed."); + LOGE("Set algName parameter failed."); HcfFree(object); Openssl_EVP_PKEY_free(dhKey); return HCF_INVALID_PARAMS; } if (BuildCommonParam(dhKey, object)!= HCF_SUCCESS) { - LOGE("create keyPair failed."); + LOGE("Get common params failed."); HcfFree(object->paramsSpec.base.algName); HcfFree(object); Openssl_EVP_PKEY_free(dhKey); diff --git a/plugin/openssl_plugin/key/asy_key_generator/src/ecc_common_param_spec_generator_openssl.c b/plugin/openssl_plugin/key/asy_key_generator/src/ecc_common_param_spec_generator_openssl.c index 48b1489..fb35bfc 100644 --- a/plugin/openssl_plugin/key/asy_key_generator/src/ecc_common_param_spec_generator_openssl.c +++ b/plugin/openssl_plugin/key/asy_key_generator/src/ecc_common_param_spec_generator_openssl.c @@ -16,6 +16,7 @@ #include "ecc_common_param_spec_generator_openssl.h" #include "securec.h" +#include "ecc_openssl_common.h" #include "ecc_openssl_common_param_spec.h" #include "log.h" #include "memory.h" @@ -24,48 +25,6 @@ #include "openssl_common.h" #include "utils.h" -static HcfResult GetOrder(const EC_GROUP *group, HcfBigInteger *returnBigInteger) -{ - BIGNUM *order = Openssl_BN_new(); - if (order == NULL) { - LOGE("new BN failed."); - return HCF_ERR_MALLOC; - } - if (Openssl_EC_GROUP_get_order(group, order, NULL) != HCF_OPENSSL_SUCCESS) { - LOGE("get order failed."); - Openssl_BN_free(order); - return HCF_ERR_CRYPTO_OPERATION; - } - - HcfResult ret = BigNumToBigInteger(order, returnBigInteger); - Openssl_BN_free(order); - return ret; -} - -static HcfResult GetCofactor(const EC_GROUP *group, int32_t *returnCofactor) -{ - BIGNUM *cofactor = Openssl_BN_new(); - if (cofactor == NULL) { - LOGE("new cofactor failed."); - return HCF_ERR_MALLOC; - } - - if (Openssl_EC_GROUP_get_cofactor(group, cofactor, NULL) != HCF_OPENSSL_SUCCESS) { - LOGE("get cofactor failed."); - Openssl_BN_free(cofactor); - return HCF_ERR_CRYPTO_OPERATION; - } - - *returnCofactor = (int32_t)(Openssl_BN_get_word(cofactor)); - if (*returnCofactor == 0) { - LOGE("get word failed."); - Openssl_BN_free(cofactor); - return HCF_ERR_CRYPTO_OPERATION; - } - Openssl_BN_free(cofactor); - return HCF_SUCCESS; -} - static EC_POINT *BuildEcPoint(const EC_GROUP *ecGroup) { EC_POINT *point = Openssl_EC_POINT_new(ecGroup); @@ -75,12 +34,12 @@ static EC_POINT *BuildEcPoint(const EC_GROUP *ecGroup) } const EC_POINT *tmpPoint = Openssl_EC_GROUP_get0_generator(ecGroup); if (tmpPoint == NULL) { - LOGE("get ec generator failed."); + LOGE("Get ec generator failed."); Openssl_EC_POINT_free(point); return NULL; } if (!Openssl_EC_POINT_copy(point, tmpPoint)) { - LOGE("ec point copy failed."); + LOGE("Ec point copy failed."); Openssl_EC_POINT_free(point); return NULL; } @@ -93,18 +52,18 @@ static HcfResult BuildCommonParamPart(const EC_GROUP *ecGroup, HcfEccCommParamsS EC_POINT *point = NULL; point = BuildEcPoint(ecGroup); if (point == NULL) { - LOGE("build ec point failed."); + LOGE("Build ec point failed."); return HCF_ERR_MALLOC; } BIGNUM *x = Openssl_BN_new(); if (x == NULL) { - LOGE("new x failed."); + LOGE("New x failed."); Openssl_EC_POINT_free(point); return HCF_ERR_MALLOC; } BIGNUM *y = Openssl_BN_new(); if (y == NULL) { - LOGE("new y failed."); + LOGE("New y failed."); Openssl_BN_free(x); Openssl_EC_POINT_free(point); return HCF_ERR_MALLOC; @@ -117,12 +76,12 @@ static HcfResult BuildCommonParamPart(const EC_GROUP *ecGroup, HcfEccCommParamsS break; } if (BigNumToBigInteger(x, &(returnCommonParamSpec->paramsSpec.g.x)) != HCF_SUCCESS) { - LOGE("new commonParamSpec x failed."); + LOGE("Build commonParamSpec x failed."); ret = HCF_ERR_CRYPTO_OPERATION; break; } if (BigNumToBigInteger(y, &(returnCommonParamSpec->paramsSpec.g.y)) != HCF_SUCCESS) { - LOGE("new commonParamSpec y failed."); + LOGE("Build commonParamSpec y failed."); ret = HCF_ERR_CRYPTO_OPERATION; break; } @@ -137,18 +96,18 @@ static HcfResult BuildCommonParamGFp(const EC_GROUP *ecGroup, HcfEccCommParamsSp { BIGNUM *p = Openssl_BN_new(); if (p == NULL) { - LOGE("new p failed."); + LOGE("New p failed."); return HCF_ERR_MALLOC; } BIGNUM *a = Openssl_BN_new(); if (a == NULL) { - LOGE("new a failed."); + LOGE("New a failed."); Openssl_BN_free(p); return HCF_ERR_MALLOC; } BIGNUM *b = Openssl_BN_new(); if (b == NULL) { - LOGE("new b failed."); + LOGE("New b failed."); Openssl_BN_free(p); Openssl_BN_free(a); return HCF_ERR_MALLOC; @@ -164,18 +123,18 @@ static HcfResult BuildCommonParamGFp(const EC_GROUP *ecGroup, HcfEccCommParamsSp do { if (BigNumToBigInteger(a, &(returnCommonParamSpec->paramsSpec.a)) != HCF_SUCCESS) { - LOGE("new commonParamSpec a failed."); + LOGE("Build commonParamSpec a failed."); ret = HCF_ERR_CRYPTO_OPERATION; break; } if (BigNumToBigInteger(b, &(returnCommonParamSpec->paramsSpec.b)) != HCF_SUCCESS) { - LOGE("new commonParamSpec b failed."); + LOGE("Build commonParamSpec b failed."); ret = HCF_ERR_CRYPTO_OPERATION; break; } HcfECFieldFp *tmpField = (HcfECFieldFp *)(returnCommonParamSpec->paramsSpec.field); if (BigNumToBigInteger(p, &(tmpField->p)) != HCF_SUCCESS) { - LOGE("new commonParamSpec p failed."); + LOGE("Build commonParamSpec p failed."); ret = HCF_ERR_CRYPTO_OPERATION; break; } @@ -262,28 +221,17 @@ static void FreeEccCommParamObject(HcfEccCommParamsSpecSpi *spec) HcfFree(spec->paramsSpec.field); spec->paramsSpec.field = NULL; } - if (spec->paramsSpec.a.data != NULL) { - HcfFree(spec->paramsSpec.a.data); - spec->paramsSpec.a.data = NULL; - } - if (spec->paramsSpec.b.data != NULL) { - HcfFree(spec->paramsSpec.b.data); - spec->paramsSpec.b.data = NULL; - } - if (spec->paramsSpec.n.data != NULL) { - HcfFree(spec->paramsSpec.n.data); - spec->paramsSpec.n.data = NULL; - } - if (spec->paramsSpec.g.x.data != NULL) { - HcfFree(spec->paramsSpec.g.x.data); - spec->paramsSpec.g.x.data = NULL; - } - if (spec->paramsSpec.g.y.data != NULL) { - HcfFree(spec->paramsSpec.g.y.data); - spec->paramsSpec.g.y.data = NULL; - } + HcfFree(spec->paramsSpec.a.data); + spec->paramsSpec.a.data = NULL; + HcfFree(spec->paramsSpec.b.data); + spec->paramsSpec.b.data = NULL; + HcfFree(spec->paramsSpec.n.data); + spec->paramsSpec.n.data = NULL; + HcfFree(spec->paramsSpec.g.x.data); + spec->paramsSpec.g.x.data = NULL; + HcfFree(spec->paramsSpec.g.y.data); + spec->paramsSpec.g.y.data = NULL; HcfFree(spec); - spec = NULL; } HcfResult HcfECCCommonParamSpecCreate(HcfAsyKeyGenParams *params, HcfEccCommParamsSpecSpi **returnCommonParamSpec) @@ -295,31 +243,31 @@ HcfResult HcfECCCommonParamSpecCreate(HcfAsyKeyGenParams *params, HcfEccCommPara int32_t curveId = 0; if (params->bits != 0) { if (GetOpensslCurveId(params->bits, &curveId) != HCF_SUCCESS) { - LOGE("curveId parameter failed."); + LOGE("Get curveId parameter failed."); return HCF_INVALID_PARAMS; } } EC_GROUP *ecGroup = Openssl_EC_GROUP_new_by_curve_name(curveId); if (ecGroup == NULL) { - LOGE("create ecGroup failed."); + LOGE("Create ecGroup failed."); return HCF_ERR_CRYPTO_OPERATION; } HcfEccCommParamsSpecSpi *object = BuildEccCommonParamObject(); if (object == NULL) { - LOGE("build ecc common params object failed."); + LOGE("Build ecc common params object failed."); Openssl_EC_GROUP_free(ecGroup); return HCF_ERR_MALLOC; } object->paramsSpec.base.specType = HCF_COMMON_PARAMS_SPEC; if (GetAlgNameByBits(params->bits, &(object->paramsSpec.base.algName)) != HCF_SUCCESS) { - LOGE("get algName parameter failed."); + LOGE("Get algName parameter by bits failed."); FreeEccCommParamObject(object); object = NULL; Openssl_EC_GROUP_free(ecGroup); return HCF_INVALID_PARAMS; } if (BuildCommonParam(ecGroup, object)!= HCF_SUCCESS) { - LOGE("create keyPair failed."); + LOGE("Get common params failed."); FreeEccCommParamObject(object); object = NULL; Openssl_EC_GROUP_free(ecGroup); diff --git a/plugin/openssl_plugin/key/asy_key_generator/src/sm2_asy_key_generator_openssl.c b/plugin/openssl_plugin/key/asy_key_generator/src/sm2_asy_key_generator_openssl.c index 4dafcdb..c05a286 100644 --- a/plugin/openssl_plugin/key/asy_key_generator/src/sm2_asy_key_generator_openssl.c +++ b/plugin/openssl_plugin/key/asy_key_generator/src/sm2_asy_key_generator_openssl.c @@ -102,9 +102,9 @@ static HcfResult GenerateSm2KeyWithParamsSpec(const HcfEccCommParamsSpec *ecPara HcfResult ret = CheckParamsSpecToGetCurveId(ecParams, &curveId); if (ret == HCF_SUCCESS && curveId != 0) { ecKey = Openssl_EC_KEY_new_by_curve_name(curveId); - LOGD("generate EC_KEY by curve name"); + LOGD("Generate EC_KEY by curve name"); if (ecKey == NULL) { - LOGE("new ec key failed."); + LOGE("New ec key failed."); return HCF_ERR_CRYPTO_OPERATION; } } else { @@ -127,7 +127,7 @@ static HcfResult GenerateSm2KeyWithParamsSpec(const HcfEccCommParamsSpec *ecPara return HCF_ERR_CRYPTO_OPERATION; } Openssl_EC_GROUP_free(group); - LOGD("generate EC_KEY by group spec parmas"); + LOGD("Generate EC_KEY by group spec parmas"); } // all exceptions have been returned above. *returnKey = ecKey; @@ -143,7 +143,7 @@ static HcfResult NewSm2KeyPairWithCommSpec(const HcfEccCommParamsSpec *ecParams, EC_KEY *ecKey = NULL; HcfResult ret = GenerateSm2KeyWithParamsSpec(ecParams, &ecKey); if (ret != HCF_SUCCESS) { - LOGE("generate EC key fails"); + LOGE("Generate EC key failed"); return ret; } if (Openssl_EC_KEY_generate_key(ecKey) != HCF_OPENSSL_SUCCESS) { @@ -153,7 +153,7 @@ static HcfResult NewSm2KeyPairWithCommSpec(const HcfEccCommParamsSpec *ecParams, } if (Openssl_EC_KEY_check_key(ecKey) <= 0) { - LOGE("Check key fail."); + LOGE("Check ecKey fail."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -170,18 +170,18 @@ static HcfResult NewSm2PubKeyWithPubSpec(const HcfEccPubKeyParamsSpec *ecParams, EC_KEY *ecKey = NULL; HcfResult ret = GenerateSm2KeyWithParamsSpec((HcfEccCommParamsSpec *)ecParams, &ecKey); if (ret != HCF_SUCCESS) { - LOGE("generate EC key fails"); + LOGE("Generate EC key failed"); return ret; } ret = SetEcKey(&(ecParams->pk), NULL, ecKey); if (ret != HCF_SUCCESS) { - LOGE("Set pub ecKey failed."); + LOGE("Set public ecKey failed."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EC_KEY_check_key(ecKey) <= 0) { - LOGE("Check key fail."); + LOGE("Check ecKey fail."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -198,18 +198,18 @@ static HcfResult NewSm2PriKeyWithPriSpec(const HcfEccPriKeyParamsSpec *ecParams, EC_KEY *ecKey = NULL; HcfResult ret = GenerateSm2KeyWithParamsSpec((HcfEccCommParamsSpec *)ecParams, &ecKey); if (ret != HCF_SUCCESS) { - LOGE("generate EC key fails"); + LOGE("Generate EC key failed"); return ret; } ret = SetEcKey(NULL, &(ecParams->sk), ecKey); if (ret != HCF_SUCCESS) { - LOGE("Set pri ecKey failed."); + LOGE("Set private ecKey failed."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } if (Openssl_EC_KEY_check_key(ecKey) <= 0) { - LOGE("Check key fail."); + LOGE("Check ecKey failed."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -227,7 +227,7 @@ static HcfResult NewSm2KeyWithKeyPairSpec(const HcfEccKeyPairParamsSpec *ecParam EC_KEY *ecKey = NULL; HcfResult ret = GenerateSm2KeyWithParamsSpec((HcfEccCommParamsSpec *)ecParams, &ecKey); if (ret != HCF_SUCCESS) { - LOGE("generate EC key fails"); + LOGE("Generate EC key failed"); return ret; } if (needPrivate) { @@ -242,7 +242,7 @@ static HcfResult NewSm2KeyWithKeyPairSpec(const HcfEccKeyPairParamsSpec *ecParam } if (Openssl_EC_KEY_check_key(ecKey) <= 0) { - LOGE("Check key fail."); + LOGE("Check ecKey failed."); Openssl_EC_KEY_free(ecKey); return HCF_ERR_CRYPTO_OPERATION; } @@ -324,9 +324,11 @@ static const char *GetSm2PriKeyClass(void) static void DestroySm2KeyPairGenerator(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetSm2KeyPairGeneratorClass())) { + LOGE("Class not match."); return; } HcfFree(self); @@ -335,9 +337,11 @@ static void DestroySm2KeyPairGenerator(HcfObjectBase *self) static void DestroySm2PubKey(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetSm2PubKeyClass())) { + LOGE("Class not match."); return; } HcfOpensslSm2PubKey *impl = (HcfOpensslSm2PubKey *)self; @@ -351,9 +355,11 @@ static void DestroySm2PubKey(HcfObjectBase *self) static void DestroySm2PriKey(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetSm2PriKeyClass())) { + LOGE("Class not match."); return; } HcfOpensslSm2PriKey *impl = (HcfOpensslSm2PriKey *)self; @@ -367,9 +373,11 @@ static void DestroySm2PriKey(HcfObjectBase *self) static void DestroySm2KeyPair(HcfObjectBase *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch(self, GetSm2KeyPairClass())) { + LOGE("Class not match."); return; } HcfOpensslSm2KeyPair *impl = (HcfOpensslSm2KeyPair *)self; @@ -449,7 +457,7 @@ static HcfResult GetSm2PubKeyEncoded(HcfKey *self, HcfBlob *returnBlob) HcfOpensslSm2PubKey *impl = (HcfOpensslSm2PubKey *)self; if (impl->curveId != 0) { - LOGE("have a curveId"); + LOGE("Have a curveId"); Openssl_EC_KEY_set_asn1_flag(impl->ecKey, OPENSSL_EC_NAMED_CURVE); } else { Openssl_EC_KEY_set_asn1_flag(impl->ecKey, OPENSSL_EC_EXPLICIT_CURVE); @@ -458,7 +466,7 @@ static HcfResult GetSm2PubKeyEncoded(HcfKey *self, HcfBlob *returnBlob) unsigned char *returnData = NULL; int returnDataLen = Openssl_i2d_EC_PUBKEY(impl->ecKey, &returnData); if (returnDataLen <= 0) { - LOGE("i2d_EC_PUBKEY fail"); + LOGE("Call i2d_EC_PUBKEY fail"); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } @@ -480,7 +488,7 @@ static HcfResult GetSm2PriKeyEncoded(HcfKey *self, HcfBlob *returnBlob) HcfOpensslSm2PriKey *impl = (HcfOpensslSm2PriKey *)self; if (impl->curveId != 0) { - LOGD("have a curveId"); + LOGD("Have a curveId"); Openssl_EC_KEY_set_asn1_flag(impl->ecKey, OPENSSL_EC_NAMED_CURVE); } else { Openssl_EC_KEY_set_asn1_flag(impl->ecKey, OPENSSL_EC_EXPLICIT_CURVE); @@ -492,7 +500,7 @@ static HcfResult GetSm2PriKeyEncoded(HcfKey *self, HcfBlob *returnBlob) unsigned char *returnData = NULL; int returnDataLen = Openssl_i2d_ECPrivateKey(impl->ecKey, &returnData); if (returnDataLen <= 0) { - LOGE("i2d_ECPrivateKey fail."); + LOGE("Call i2d_ECPrivateKey fail."); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } @@ -504,9 +512,11 @@ static HcfResult GetSm2PriKeyEncoded(HcfKey *self, HcfBlob *returnBlob) static void Sm2PriKeyClearMem(HcfPriKey *self) { if (self == NULL) { + LOGE("Class is null."); return; } if (!IsClassMatch((HcfObjectBase *)self, GetSm2PriKeyClass())) { + LOGE("Class not match."); return; } HcfOpensslSm2PriKey *impl = (HcfOpensslSm2PriKey *)self; @@ -523,25 +533,24 @@ static HcfResult GetCurveName(const HcfKey *self, bool isPriavte, char **returnS curveId = ((HcfOpensslSm2PubKey *)self)->curveId; } - char *tmp = NULL; if (curveId != NID_sm2) { - LOGE("No curve name."); + LOGE("Invalid curve name."); return HCF_ERR_CRYPTO_OPERATION; } - tmp = "NID_sm2"; - size_t len = HcfStrlen(tmp); + char *curveIdStr = "NID_sm2"; + size_t len = HcfStrlen(curveIdStr); if (!len) { - LOGE("tmp is empty!"); + LOGE("CurveIdStr is empty!"); return HCF_INVALID_PARAMS; } *returnString = (char *)HcfMalloc(len + 1, 0); if (*returnString == NULL) { - LOGE("Alloc returnString memory failed."); + LOGE("Allocate returnString memory failed."); return HCF_ERR_MALLOC; } - if (memcpy_s(*returnString, len, tmp, len) != EOK) { - LOGE("memcpy returnString failed."); + if (memcpy_s(*returnString, len, curveIdStr, len) != EOK) { + LOGE("Memcpy returnString failed."); HcfFree(*returnString); return HCF_ERR_MALLOC; } @@ -585,7 +594,7 @@ static HcfResult GetSm2KeySpecBigInteger(const HcfKey *self, const AsyKeySpecIte group = Openssl_EC_KEY_get0_group(((HcfOpensslSm2PubKey *)self)->ecKey); } if (group == NULL) { - LOGE("get group failed"); + LOGE("Get group failed"); return HCF_INVALID_PARAMS; } switch (item) { @@ -661,7 +670,7 @@ static HcfResult GetSm2KeySpecInt(const HcfKey *self, const AsyKeySpecItem item, group = Openssl_EC_KEY_get0_group(((HcfOpensslSm2PubKey *)self)->ecKey); } if (group == NULL) { - LOGE("get group failed"); + LOGE("Get group failed"); return HCF_INVALID_PARAMS; } switch (item) { @@ -673,7 +682,7 @@ static HcfResult GetSm2KeySpecInt(const HcfKey *self, const AsyKeySpecItem item, break; default: ret = HCF_INVALID_PARAMS; - LOGE("invalid ec key int spec"); + LOGE("Invalid ec key int spec"); break; } return ret; @@ -724,13 +733,13 @@ static HcfResult PackSm2PubKey(int32_t curveId, EC_KEY *ecKey, const char *field if (fieldType != NULL) { size_t len = HcfStrlen(fieldType); if (!len) { - LOGE("fieldType is empty!"); + LOGE("FieldType is empty!"); HcfFree(returnPubKey); return HCF_INVALID_PARAMS; } tmpFieldType = (char *)HcfMalloc(len + 1, 0); if (tmpFieldType == NULL) { - LOGE("Alloc tmpFieldType memory failed."); + LOGE("Allocate tmpFieldType memory failed."); HcfFree(returnPubKey); return HCF_ERR_MALLOC; } @@ -765,13 +774,13 @@ static HcfResult PackSm2PriKey(int32_t curveId, EC_KEY *ecKey, const char *field if (fieldType != NULL) { size_t len = HcfStrlen(fieldType); if (len == 0) { - LOGE("fieldType is empty!"); + LOGE("FieldType is empty!"); HcfFree(returnPriKey); return HCF_INVALID_PARAMS; } tmpFieldType = (char *)HcfMalloc(len + 1, 0); if (tmpFieldType == NULL) { - LOGE("Alloc tmpFieldType memory failed."); + LOGE("Allocate tmpFieldType memory failed."); HcfFree(returnPriKey); return HCF_ERR_MALLOC; } @@ -816,7 +825,7 @@ static HcfResult ConvertEcPubKey(int32_t curveId, HcfBlob *pubKeyBlob, HcfOpenss const unsigned char *tmpData = (const unsigned char *)(pubKeyBlob->data); EC_KEY *ecKey = Openssl_d2i_EC_PUBKEY(NULL, &tmpData, pubKeyBlob->len); if (ecKey == NULL) { - LOGE("d2i_EC_PUBKEY fail."); + LOGE("Call d2i_EC_PUBKEY fail."); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } @@ -834,12 +843,13 @@ static HcfResult ConvertEcPriKey(int32_t curveId, HcfBlob *priKeyBlob, HcfOpenss const unsigned char *tmpData = (const unsigned char *)(priKeyBlob->data); EC_KEY *ecKey = Openssl_d2i_ECPrivateKey(NULL, &tmpData, priKeyBlob->len); if (ecKey == NULL) { - LOGE("d2i_ECPrivateKey fail"); + LOGE("Call d2i_ECPrivateKey fail"); HcfPrintOpensslError(); return HCF_ERR_CRYPTO_OPERATION; } HcfResult ret = PackSm2PriKey(curveId, ecKey, g_sm2GenerateFieldType, returnPriKey); if (ret != HCF_SUCCESS) { + LOGE("CreateSm2PriKey failed."); Openssl_EC_KEY_free(ecKey); return ret; } @@ -855,6 +865,7 @@ static HcfResult EngineConvertSm2Key(HcfAsyKeyGeneratorSpi *self, HcfParamsSpec return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } bool pubKeyValid = IsBlobValid(pubKeyBlob); @@ -873,18 +884,21 @@ static HcfResult EngineConvertSm2Key(HcfAsyKeyGeneratorSpi *self, HcfParamsSpec if (pubKeyValid) { ret = ConvertEcPubKey(impl->curveId, pubKeyBlob, &pubKey); if (ret != HCF_SUCCESS) { + LOGE("Convert ec pubKey failed."); break; } } if (priKeyValid) { ret = ConvertEcPriKey(impl->curveId, priKeyBlob, &priKey); if (ret != HCF_SUCCESS) { + LOGE("Convert ec priKey failed."); break; } } ret = PackSm2KeyPair(pubKey, priKey, &keyPair); } while (0); if (ret != HCF_SUCCESS) { + LOGE("Convert sm2 keyPair failed."); HcfObjDestroy(pubKey); HcfObjDestroy(priKey); return ret; @@ -900,6 +914,7 @@ static HcfResult PackAndAssignPubKey(const HcfAsyKeyGeneratorSpiOpensslSm2Impl * HcfOpensslSm2PubKey *pubKey = NULL; HcfResult ret = PackSm2PubKey(impl->curveId, ecKey, fieldType, &pubKey); if (ret != HCF_SUCCESS) { + LOGE("Create sm2 pubKey failed."); return ret; } *returnObj = (HcfPubKey *)pubKey; @@ -912,6 +927,7 @@ static HcfResult PackAndAssignPriKey(const HcfAsyKeyGeneratorSpiOpensslSm2Impl * HcfOpensslSm2PriKey *priKey = NULL; HcfResult ret = PackSm2PriKey(impl->curveId, ecKey, fieldType, &priKey); if (ret != HCF_SUCCESS) { + LOGE("Create sm2 priKey failed."); return ret; } *returnObj = (HcfPriKey *)priKey; @@ -923,24 +939,26 @@ static HcfResult CreateAndAssignKeyPair(const HcfAsyKeyGeneratorSpiOpensslSm2Imp { EC_KEY *ecPriKey = EC_KEY_dup(ecKey); if (ecPriKey == NULL) { - LOGE("copy ecKey fail."); + LOGE("Dup ecKey fail."); return HCF_ERR_CRYPTO_OPERATION; } HcfOpensslSm2PriKey *priKey = NULL; HcfResult ret = PackSm2PriKey(impl->curveId, ecPriKey, fieldType, &priKey); if (ret != HCF_SUCCESS) { + LOGE("Create sm2 priKey failed."); Openssl_EC_KEY_free(ecPriKey); return ret; } HcfOpensslSm2PubKey *pubKey = NULL; EC_KEY *ecPubKey = EC_KEY_dup(ecKey); if (ecPubKey == NULL) { - LOGE("copy ecKey fail."); + LOGE("Dup ecKey fail."); HcfObjDestroy(priKey); return HCF_ERR_CRYPTO_OPERATION; } ret = PackSm2PubKey(impl->curveId, ecPubKey, fieldType, &pubKey); if (ret != HCF_SUCCESS) { + LOGE("Create sm2 pubKey failed."); HcfObjDestroy(priKey); Openssl_EC_KEY_free(ecPubKey); return ret; @@ -949,6 +967,7 @@ static HcfResult CreateAndAssignKeyPair(const HcfAsyKeyGeneratorSpiOpensslSm2Imp HcfOpensslSm2KeyPair *returnKeyPair = NULL; ret = PackSm2KeyPair(pubKey, priKey, &returnKeyPair); if (ret != HCF_SUCCESS) { + LOGE("Create sm2 keyPair failed."); HcfObjDestroy(pubKey); HcfObjDestroy(priKey); } @@ -963,6 +982,7 @@ static HcfResult EngineGenerateKeyPair(HcfAsyKeyGeneratorSpi *self, HcfKeyPair * return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, self->base.getClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -987,6 +1007,7 @@ static HcfResult EngineGenerateKeyPairBySpec(const HcfAsyKeyGeneratorSpi *self, return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, GetSm2KeyPairGeneratorClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -1021,6 +1042,7 @@ static HcfResult EngineGeneratePubKeyBySpec(const HcfAsyKeyGeneratorSpi *self, c return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, GetSm2KeyPairGeneratorClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -1052,6 +1074,7 @@ static HcfResult EngineGeneratePriKeyBySpec(const HcfAsyKeyGeneratorSpi *self, c return HCF_INVALID_PARAMS; } if (!IsClassMatch((HcfObjectBase *)self, GetSm2KeyPairGeneratorClass())) { + LOGE("Class not match."); return HCF_INVALID_PARAMS; } @@ -1086,6 +1109,7 @@ HcfResult HcfAsyKeyGeneratorSpiSm2Create(HcfAsyKeyGenParams *params, HcfAsyKeyGe int32_t curveId = 0; if (params->bits != 0) { if (GetOpensslCurveId(params->bits, &curveId) != HCF_SUCCESS) { + LOGE("Get curve id failed."); return HCF_INVALID_PARAMS; } } diff --git a/test/fuzztest/key/asykeygenerator_fuzzer/BUILD.gn b/test/fuzztest/key/asykeygenerator_fuzzer/BUILD.gn index b2b8b88..f9921c5 100644 --- a/test/fuzztest/key/asykeygenerator_fuzzer/BUILD.gn +++ b/test/fuzztest/key/asykeygenerator_fuzzer/BUILD.gn @@ -32,6 +32,7 @@ ohos_fuzztest("AsyKeyGeneratorFuzzTest") { ] sources = [ "asykeygenerator_fuzzer.cpp" ] deps = [ + "../../../../plugin:crypto_openssl_plugin_lib", "//third_party/bounds_checking_function:libsec_shared", "//third_party/openssl:libcrypto_shared", ] diff --git a/test/fuzztest/key/asykeygenerator_fuzzer/asykeygenerator_fuzzer.cpp b/test/fuzztest/key/asykeygenerator_fuzzer/asykeygenerator_fuzzer.cpp index 0f0a091..ac9f109 100644 --- a/test/fuzztest/key/asykeygenerator_fuzzer/asykeygenerator_fuzzer.cpp +++ b/test/fuzztest/key/asykeygenerator_fuzzer/asykeygenerator_fuzzer.cpp @@ -14,10 +14,10 @@ */ #include "asykeygenerator_fuzzer.h" - #include #include #include +#include "securec.h" #include "asy_key_generator.h" #include "blob.h" @@ -32,6 +32,8 @@ #include "ecc_key_util.h" #include "dh_key_util.h" #include "key_utils.h" +#include "memory.h" +#include "openssl_common.h" #include "result.h" using namespace std; @@ -47,18 +49,6 @@ static string g_x25519AlgoName = "X25519"; namespace OHOS { constexpr int32_t PLEN_BITS = 3072; constexpr int32_t SKLEN_BITS = 256; - HcfEccPubKeyParamsSpec g_ecc256PubKeySpec; - HcfEccPriKeyParamsSpec g_ecc256PriKeySpec; - HcfEccKeyPairParamsSpec g_ecc256KeyPairSpec; - HcfAlg25519KeyPairParamsSpec g_ed25519KeyPairSpec; - HcfAlg25519PriKeyParamsSpec g_ed25519PriKeySpec; - HcfAlg25519PubKeyParamsSpec g_ed25519PubKeySpec; - HcfAlg25519KeyPairParamsSpec g_x25519KeyPairSpec; - HcfAlg25519PriKeyParamsSpec g_x25519PriKeySpec; - HcfAlg25519PubKeyParamsSpec g_x25519PubKeySpec; - HcfDhPubKeyParamsSpec g_dhPubKeySpec; - HcfDhPriKeyParamsSpec g_dhPriKeySpec; - HcfDhKeyPairParamsSpec g_dhKeyPairSpec; enum class GenerateType { FUZZ_COMMON = 0, @@ -97,7 +87,7 @@ namespace OHOS { static uint8_t g_mockSm2256PriKey[SM2256_PRI_KEY_LEN] = { 48, 49, 2, 1, 1, 4, 32, 78, 6, 176, 182, 178, 223, 78, 63, 118, 13, 15, 35, 44, 56, 78, 69, 212, 192, 65, 232, 103, 124, 247, 30, 211, 81, 139, 187, 28, 165, 8, 248, 160, 10, 6, 8, 42, 129, 28, 207, 85, 1, 130, 45 }; - + static uint8_t g_mockBrainpoolPubKey[BRAINPOOLP160R1_PUB_KEY_LEN] = { 48, 66, 48, 20, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 9, 43, 36, 3, 3, 2, 8, 1, 1, 1, 3, 42, 0, 4, 37, 67, 178, 178, 176, 241, 23, 119, 74, 231, 82, 88, 215, 227, 37, 24, 129, 177, 152, 142, 144, 155, 44, 97, 145, 114, 242, 156, 129, 225, 186, 196, 113, 41, 198, @@ -167,20 +157,8 @@ namespace OHOS { constexpr uint32_t DSA2048_P_SIZE = 256; constexpr uint32_t DSA2048_Q_SIZE = 20; constexpr uint32_t DSA2048_G_SIZE = 256; - static uint32_t g_asciiCodeZero = 48; static const char *g_algNameDSA = "DSA"; - static bool IsBigEndian(void) - { - uint32_t *pointer = reinterpret_cast(&g_asciiCodeZero); - char firstChar = *(reinterpret_cast(pointer)); - if (firstChar == '0') { - return false; - } else { - return true; - } - } - static unsigned char g_dsa2048PrivBigE[] = { 0x32, 0x67, 0x92, 0xf6, 0xc4, 0xe2, 0xe2, 0xe8, 0xa0, 0x8b, 0x6b, 0x45, 0x0c, 0x8a, 0x76, 0xb0, 0xee, 0xcf, 0x91, 0xa7, @@ -646,34 +624,16 @@ namespace OHOS { HcfEccCommParamsSpec *eccCommSpec = nullptr; HcfEccKeyUtilCreate(algoName.c_str(), &eccCommSpec); - + if (eccCommSpec == nullptr) { + return HCF_INVALID_PARAMS; + } *spec = eccCommSpec; return HCF_SUCCESS; } - static HcfResult ConstructSm2256PubKeyParams(HcfKeyPair *keyPair, HcfEccCommParamsSpec *eccCommParamsSpec, - HcfAsyKeyParamsSpec **spec) + static HcfResult ConstructSm2256PubKeyBigInt(HcfKeyPair *keyPair, HcfEccPubKeyParamsSpec *eccPubKeySpec) { - HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc256PubKeySpec; HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccPubKeySpec->base.base.algName = eccCommParamsSpec->base.algName; - eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; - eccPubKeySpec->base.field = eccCommParamsSpec->field; - eccPubKeySpec->base.field->fieldType = eccCommParamsSpec->field->fieldType; - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = ((HcfECFieldFp *)(eccCommParamsSpec->field))->p.data; - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = ((HcfECFieldFp *)(eccCommParamsSpec->field))->p.len; - eccPubKeySpec->base.a.data = eccCommParamsSpec->a.data; - eccPubKeySpec->base.a.len = eccCommParamsSpec->a.len; - eccPubKeySpec->base.b.data = eccCommParamsSpec->b.data; - eccPubKeySpec->base.b.len = eccCommParamsSpec->b.len; - eccPubKeySpec->base.g.x.data = eccCommParamsSpec->g.x.data; - eccPubKeySpec->base.g.x.len = eccCommParamsSpec->g.x.len; - eccPubKeySpec->base.g.y.data = eccCommParamsSpec->g.y.data; - eccPubKeySpec->base.g.y.len = eccCommParamsSpec->g.y.len; - eccPubKeySpec->base.n.data = eccCommParamsSpec->n.data; - eccPubKeySpec->base.n.len = eccCommParamsSpec->n.len; - eccPubKeySpec->base.h = eccCommParamsSpec->h; HcfResult res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); if (res != HCF_SUCCESS) { return res; @@ -683,116 +643,115 @@ namespace OHOS { res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); if (res != HCF_SUCCESS) { + HcfFree(eccPubKeySpec->pk.x.data); + eccPubKeySpec->pk.x.data = nullptr; + eccPubKeySpec->pk.x.len = 0; return res; } - eccPubKeySpec->pk.y.data =retBigInt.data; + eccPubKeySpec->pk.y.data = retBigInt.data; eccPubKeySpec->pk.y.len = retBigInt.len; - - *spec = reinterpret_cast(eccPubKeySpec); return HCF_SUCCESS; } - static HcfResult ConstructSm2256PubKeyParamsSpec(const std::string &algoName, - HcfEccCommParamsSpec *eccCommParamsSpec, HcfAsyKeyParamsSpec **spec) + HcfResult ConstructSm2256PubKeyParamsSpec(const std::string &algoName, HcfEccCommParamsSpec *eccCommSpec, + HcfAsyKeyParamsSpec **spec) { + HcfResult res = HCF_ERR_CRYPTO_OPERATION; HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { + if (HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator) != HCF_SUCCESS) { return res; } - + HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { + if (generator->generateKeyPair(generator, nullptr, &keyPair) != HCF_SUCCESS) { HcfObjDestroy(generator); return res; } - res = ConstructSm2256PubKeyParams(keyPair, eccCommParamsSpec, spec); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; + auto eccPubKeySpec = reinterpret_cast(HcfMalloc(sizeof(HcfEccPubKeyParamsSpec), 0)); + if (eccPubKeySpec != nullptr) { + eccPubKeySpec->base.base.algName = eccCommSpec->base.algName; + eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; + eccPubKeySpec->base.field = eccCommSpec->field; + eccPubKeySpec->base.field->fieldType = eccCommSpec->field->fieldType; + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = ((HcfECFieldFp *)(eccCommSpec->field))->p.data; + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = ((HcfECFieldFp *)(eccCommSpec->field))->p.len; + eccPubKeySpec->base.a.data = eccCommSpec->a.data; + eccPubKeySpec->base.a.len = eccCommSpec->a.len; + eccPubKeySpec->base.b.data = eccCommSpec->b.data; + eccPubKeySpec->base.b.len = eccCommSpec->b.len; + eccPubKeySpec->base.g.x.data = eccCommSpec->g.x.data; + eccPubKeySpec->base.g.x.len = eccCommSpec->g.x.len; + eccPubKeySpec->base.g.y.data = eccCommSpec->g.y.data; + eccPubKeySpec->base.g.y.len = eccCommSpec->g.y.len; + eccPubKeySpec->base.n.data = eccCommSpec->n.data; + eccPubKeySpec->base.n.len = eccCommSpec->n.len; + eccPubKeySpec->base.h = eccCommSpec->h; + if (ConstructSm2256PubKeyBigInt(keyPair, eccPubKeySpec) != HCF_SUCCESS) { + HcfFree(eccPubKeySpec); + } else { + *spec = reinterpret_cast(eccPubKeySpec); + res = HCF_SUCCESS; + } } + HcfObjDestroy(generator); HcfObjDestroy(keyPair); - return HCF_SUCCESS; + return res; } - static HcfResult ConstructSm2256PriKeyParamsSpec(const std::string &algoName, - HcfEccCommParamsSpec *eccCommParamsSpec, HcfAsyKeyParamsSpec **spec) + HcfResult ConstructSm2256PriKeyParamsSpec(const std::string &algoName, HcfEccCommParamsSpec *eccCommSpec, + HcfAsyKeyParamsSpec **spec) { + HcfResult res = HCF_ERR_CRYPTO_OPERATION; HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { + if (HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator) != HCF_SUCCESS) { return res; } - + HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { + if (generator->generateKeyPair(generator, nullptr, &keyPair) != HCF_SUCCESS) { HcfObjDestroy(generator); return res; } - HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc256PriKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccPriKeySpec->base.base.algName = eccCommParamsSpec->base.algName; - eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; - eccPriKeySpec->base.field = eccCommParamsSpec->field; - eccPriKeySpec->base.field->fieldType = eccCommParamsSpec->field->fieldType; - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = ((HcfECFieldFp *)(eccCommParamsSpec->field))->p.data; - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = ((HcfECFieldFp *)(eccCommParamsSpec->field))->p.len; - eccPriKeySpec->base.a.data = eccCommParamsSpec->a.data; - eccPriKeySpec->base.a.len = eccCommParamsSpec->a.len; - eccPriKeySpec->base.b.data = eccCommParamsSpec->b.data; - eccPriKeySpec->base.b.len = eccCommParamsSpec->b.len; - eccPriKeySpec->base.g.x.data = eccCommParamsSpec->g.x.data; - eccPriKeySpec->base.g.x.len = eccCommParamsSpec->g.x.len; - eccPriKeySpec->base.g.y.data = eccCommParamsSpec->g.y.data; - eccPriKeySpec->base.g.y.len = eccCommParamsSpec->g.y.len; - eccPriKeySpec->base.n.data = eccCommParamsSpec->n.data; - eccPriKeySpec->base.n.len = eccCommParamsSpec->n.len; - eccPriKeySpec->base.h = eccCommParamsSpec->h; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; + auto eccPriKeySpec = reinterpret_cast(HcfMalloc(sizeof(HcfEccPriKeyParamsSpec), 0)); + if (eccPriKeySpec != nullptr) { + eccPriKeySpec->base.base.algName = eccCommSpec->base.algName; + eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; + eccPriKeySpec->base.field = eccCommSpec->field; + eccPriKeySpec->base.field->fieldType = eccCommSpec->field->fieldType; + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = ((HcfECFieldFp *)(eccCommSpec->field))->p.data; + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = ((HcfECFieldFp *)(eccCommSpec->field))->p.len; + eccPriKeySpec->base.a.data = eccCommSpec->a.data; + eccPriKeySpec->base.a.len = eccCommSpec->a.len; + eccPriKeySpec->base.b.data = eccCommSpec->b.data; + eccPriKeySpec->base.b.len = eccCommSpec->b.len; + eccPriKeySpec->base.g.x.data = eccCommSpec->g.x.data; + eccPriKeySpec->base.g.x.len = eccCommSpec->g.x.len; + eccPriKeySpec->base.g.y.data = eccCommSpec->g.y.data; + eccPriKeySpec->base.g.y.len = eccCommSpec->g.y.len; + eccPriKeySpec->base.n.data = eccCommSpec->n.data; + eccPriKeySpec->base.n.len = eccCommSpec->n.len; + eccPriKeySpec->base.h = eccCommSpec->h; + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + if (keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt) != HCF_SUCCESS) { + HcfFree(eccPriKeySpec); + } else { + eccPriKeySpec->sk.data = retBigInt.data; + eccPriKeySpec->sk.len = retBigInt.len; + *spec = reinterpret_cast(eccPriKeySpec); + res = HCF_SUCCESS; + } } - eccPriKeySpec->sk.data = retBigInt.data; - eccPriKeySpec->sk.len = retBigInt.len; - - *spec = reinterpret_cast(eccPriKeySpec); HcfObjDestroy(generator); HcfObjDestroy(keyPair); - return HCF_SUCCESS; + return res; } - static HcfResult ConstructSm2256KeyPairParams(HcfKeyPair *keyPair, HcfEccCommParamsSpec *eccCommParamsSpec, - HcfAsyKeyParamsSpec **spec) + static HcfResult ConstructSm2256KeyPairBigInt(HcfKeyPair *keyPair, HcfEccKeyPairParamsSpec *eccKeyPairSpec) { - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc256KeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccKeyPairSpec->base.base.algName = eccCommParamsSpec->base.algName; - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = eccCommParamsSpec->field; - eccKeyPairSpec->base.field->fieldType = eccCommParamsSpec->field->fieldType; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = ((HcfECFieldFp *)(eccCommParamsSpec->field))->p.data; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = ((HcfECFieldFp *)(eccCommParamsSpec->field))->p.len; - eccKeyPairSpec->base.a.data = eccCommParamsSpec->a.data; - eccKeyPairSpec->base.a.len = eccCommParamsSpec->a.len; - eccKeyPairSpec->base.b.data = eccCommParamsSpec->b.data; - eccKeyPairSpec->base.b.len = eccCommParamsSpec->b.len; - eccKeyPairSpec->base.g.x.data = eccCommParamsSpec->g.x.data; - eccKeyPairSpec->base.g.x.len = eccCommParamsSpec->g.x.len; - eccKeyPairSpec->base.g.y.data = eccCommParamsSpec->g.y.data; - eccKeyPairSpec->base.g.y.len = eccCommParamsSpec->g.y.len; - eccKeyPairSpec->base.n.data = eccCommParamsSpec->n.data; - eccKeyPairSpec->base.n.len = eccCommParamsSpec->n.len; - eccKeyPairSpec->base.h = eccCommParamsSpec->h; + HcfBigInteger retBigInt = { .data = NULL, .len = 0 }; HcfResult res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); if (res != HCF_SUCCESS) { return res; @@ -802,194 +761,284 @@ namespace OHOS { res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); if (res != HCF_SUCCESS) { + HcfFree(eccKeyPairSpec->pk.x.data); + eccKeyPairSpec->pk.x.data = NULL; + eccKeyPairSpec->pk.x.len = 0; return res; } - eccKeyPairSpec->pk.y.data =retBigInt.data; + eccKeyPairSpec->pk.y.data = retBigInt.data; eccKeyPairSpec->pk.y.len = retBigInt.len; res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); if (res != HCF_SUCCESS) { + HcfFree(eccKeyPairSpec->pk.x.data); + eccKeyPairSpec->pk.x.data = NULL; + eccKeyPairSpec->pk.x.len = 0; + HcfFree(eccKeyPairSpec->pk.y.data); + eccKeyPairSpec->pk.y.data = NULL; + eccKeyPairSpec->pk.y.len = 0; return res; } eccKeyPairSpec->sk.data = retBigInt.data; eccKeyPairSpec->sk.len = retBigInt.len; - - *spec = reinterpret_cast(eccKeyPairSpec); return HCF_SUCCESS; } - static HcfResult ConstructSm2256KeyPairParamsSpec(const std::string &algoName, - HcfEccCommParamsSpec *eccCommParamsSpec, HcfAsyKeyParamsSpec **spec) + + HcfResult ConstructSm2256KeyPairParamsSpec(const std::string &algoName, + HcfEccCommParamsSpec *eccCommSpec, HcfAsyKeyParamsSpec **spec) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { + HcfResult res = HCF_ERR_CRYPTO_OPERATION; + if (HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator) != HCF_SUCCESS) { return res; } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { + if (generator->generateKeyPair(generator, nullptr, &keyPair) != HCF_SUCCESS) { HcfObjDestroy(generator); return res; } - res = ConstructSm2256KeyPairParams(keyPair, eccCommParamsSpec, spec); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; + auto eccKeyPairSpec = + reinterpret_cast(HcfMalloc(sizeof(HcfEccKeyPairParamsSpec), 0)); + if (eccKeyPairSpec != nullptr) { + eccKeyPairSpec->base.base.algName = eccCommSpec->base.algName; + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = eccCommSpec->field; + eccKeyPairSpec->base.field->fieldType = eccCommSpec->field->fieldType; + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = ((HcfECFieldFp *)(eccCommSpec->field))->p.data; + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = ((HcfECFieldFp *)(eccCommSpec->field))->p.len; + eccKeyPairSpec->base.a.data = eccCommSpec->a.data; + eccKeyPairSpec->base.a.len = eccCommSpec->a.len; + eccKeyPairSpec->base.b.data = eccCommSpec->b.data; + eccKeyPairSpec->base.b.len = eccCommSpec->b.len; + eccKeyPairSpec->base.g.x.data = eccCommSpec->g.x.data; + eccKeyPairSpec->base.g.x.len = eccCommSpec->g.x.len; + eccKeyPairSpec->base.g.y.data = eccCommSpec->g.y.data; + eccKeyPairSpec->base.g.y.len = eccCommSpec->g.y.len; + eccKeyPairSpec->base.n.data = eccCommSpec->n.data; + eccKeyPairSpec->base.n.len = eccCommSpec->n.len; + eccKeyPairSpec->base.h = eccCommSpec->h; + if (ConstructSm2256KeyPairBigInt(keyPair, eccKeyPairSpec) != HCF_SUCCESS) { + HcfFree(eccKeyPairSpec); + } else { + *spec = reinterpret_cast(eccKeyPairSpec); + res = HCF_SUCCESS; + } } HcfObjDestroy(generator); HcfObjDestroy(keyPair); + return res; + } + + static HcfResult CreateAlg25519KeyPairSpec(bool choose, HcfAlg25519KeyPairParamsSpec **alg25519KeyPairSpec) + { + *alg25519KeyPairSpec = (HcfAlg25519KeyPairParamsSpec*)HcfMalloc(sizeof(HcfAlg25519KeyPairParamsSpec), 0); + if (*alg25519KeyPairSpec == nullptr) { + return HCF_ERR_MALLOC; + } + if (choose) { + (*alg25519KeyPairSpec)->base.algName = static_cast(HcfMalloc(sizeof(g_ed25519AlgoName), 0)); + if ((*alg25519KeyPairSpec)->base.algName == nullptr) { + HcfFree(*alg25519KeyPairSpec); + *alg25519KeyPairSpec = nullptr; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519KeyPairSpec)->base.algName, g_ed25519AlgoName.length(), + g_ed25519AlgoName.data(), g_ed25519AlgoName.length()); + } else { + (*alg25519KeyPairSpec)->base.algName = static_cast(HcfMalloc(sizeof(g_x25519AlgoName), 0)); + if ((*alg25519KeyPairSpec)->base.algName == nullptr) { + HcfFree(*alg25519KeyPairSpec); + *alg25519KeyPairSpec = nullptr; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519KeyPairSpec)->base.algName, g_x25519AlgoName.length(), + g_x25519AlgoName.data(), g_x25519AlgoName.length()); + } return HCF_SUCCESS; } static HcfResult ConstructAlg25519KeyPairParamsSpec(const string &algoName, bool choose, HcfAsyKeyParamsSpec **spec) { + HcfResult res = HCF_ERR_CRYPTO_OPERATION; HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return HCF_ERR_CRYPTO_OPERATION; + if (HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator) != HCF_SUCCESS) { + return res; } HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { + if (generator->generateKeyPair(generator, nullptr, &keyPair) != HCF_SUCCESS) { HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; + return res; } HcfAlg25519KeyPairParamsSpec *alg25519KeyPairSpec = nullptr; - if (choose) { - alg25519KeyPairSpec = &g_ed25519KeyPairSpec; - alg25519KeyPairSpec->base.algName = g_ed25519AlgoName.data(); - } else { - alg25519KeyPairSpec = &g_x25519KeyPairSpec; - alg25519KeyPairSpec->base.algName = g_x25519AlgoName.data(); - } - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - alg25519KeyPairSpec->base.specType = HCF_KEY_PAIR_SPEC; - if (choose) { - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); - } else { - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, X25519_PK_BN, &retBigInt); - } - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; + if (CreateAlg25519KeyPairSpec(choose, &alg25519KeyPairSpec) == HCF_SUCCESS) { + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + alg25519KeyPairSpec->base.specType = HCF_KEY_PAIR_SPEC; + if (choose) { + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); + } else { + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, X25519_PK_BN, &retBigInt); + } + + if (res == HCF_SUCCESS) { + alg25519KeyPairSpec->pk.data = retBigInt.data; + alg25519KeyPairSpec->pk.len = retBigInt.len; + + if (choose) { + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); + } else { + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, X25519_SK_BN, &retBigInt); + } + if (res == HCF_SUCCESS) { + alg25519KeyPairSpec->sk.data = retBigInt.data; + alg25519KeyPairSpec->sk.len = retBigInt.len; + *spec = reinterpret_cast(alg25519KeyPairSpec); + } else { + HcfFree(alg25519KeyPairSpec->pk.data); + alg25519KeyPairSpec->pk.data = NULL; + alg25519KeyPairSpec->pk.len = 0; + } + } + if (res != HCF_SUCCESS) { + DestroyAlg25519KeyPairSpec(reinterpret_cast(alg25519KeyPairSpec)); + } } - alg25519KeyPairSpec->pk.data = retBigInt.data; - alg25519KeyPairSpec->pk.len = retBigInt.len; + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return res; + } + static HcfResult CreateAlg25519PubKeySpec(bool choose, HcfAlg25519PubKeyParamsSpec **alg25519PubKeySpec) + { + *alg25519PubKeySpec = (HcfAlg25519PubKeyParamsSpec*)HcfMalloc(sizeof(HcfAlg25519PubKeyParamsSpec), 0); + if (*alg25519PubKeySpec == nullptr) { + return HCF_ERR_MALLOC; + } if (choose) { - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); + (*alg25519PubKeySpec)->base.algName = static_cast(HcfMalloc(sizeof(g_ed25519AlgoName), 0)); + if ((*alg25519PubKeySpec)->base.algName == nullptr) { + HcfFree(*alg25519PubKeySpec); + *alg25519PubKeySpec = nullptr; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519PubKeySpec)->base.algName, g_ed25519AlgoName.length(), + g_ed25519AlgoName.data(), g_ed25519AlgoName.length()); } else { - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, X25519_SK_BN, &retBigInt); - } - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; + (*alg25519PubKeySpec)->base.algName = static_cast(HcfMalloc(sizeof(g_x25519AlgoName), 0)); + if ((*alg25519PubKeySpec)->base.algName == nullptr) { + HcfFree(*alg25519PubKeySpec); + *alg25519PubKeySpec = nullptr; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519PubKeySpec)->base.algName, g_x25519AlgoName.length(), + g_x25519AlgoName.data(), g_x25519AlgoName.length()); } - alg25519KeyPairSpec->sk.data = retBigInt.data; - alg25519KeyPairSpec->sk.len = retBigInt.len; - - *spec = reinterpret_cast(alg25519KeyPairSpec); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); return HCF_SUCCESS; } static HcfResult ConstructAlg25519PubKeyParamsSpec(const string &algoName, bool choose, HcfAsyKeyParamsSpec **spec) { + HcfResult res = HCF_ERR_CRYPTO_OPERATION; HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return HCF_ERR_CRYPTO_OPERATION; + if (HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator) != HCF_SUCCESS) { + return res; } HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { + if (generator->generateKeyPair(generator, nullptr, &keyPair) != HCF_SUCCESS) { HcfObjDestroy(generator); - return HCF_ERR_CRYPTO_OPERATION; + return res; } HcfAlg25519PubKeyParamsSpec *alg25519PubKeySpec = nullptr; - if (choose) { - alg25519PubKeySpec = &g_ed25519PubKeySpec; - alg25519PubKeySpec->base.algName = g_ed25519AlgoName.data(); - } else { - alg25519PubKeySpec = &g_x25519PubKeySpec; - alg25519PubKeySpec->base.algName = g_x25519AlgoName.data(); - } - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - alg25519PubKeySpec->base.specType = HCF_PUBLIC_KEY_SPEC; - if (choose) { - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); - } else { - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, X25519_PK_BN, &retBigInt); + if (CreateAlg25519PubKeySpec(choose, &alg25519PubKeySpec) == HCF_SUCCESS) { + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + alg25519PubKeySpec->base.specType = HCF_PUBLIC_KEY_SPEC; + if (choose) { + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); + } else { + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, X25519_PK_BN, &retBigInt); + } + if (res == HCF_SUCCESS) { + alg25519PubKeySpec->pk.data = retBigInt.data; + alg25519PubKeySpec->pk.len = retBigInt.len; + *spec = reinterpret_cast(alg25519PubKeySpec); + } else { + DestroyAlg25519PubKeySpec(reinterpret_cast(alg25519PubKeySpec)); + } } - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; - } - alg25519PubKeySpec->pk.data = retBigInt.data; - alg25519PubKeySpec->pk.len = retBigInt.len; - *spec = reinterpret_cast(alg25519PubKeySpec); HcfObjDestroy(generator); HcfObjDestroy(keyPair); + return res; + } + + static HcfResult CreateAlg25519PriKeySpec(bool choose, HcfAlg25519PriKeyParamsSpec **alg25519PriKeySpec) + { + *alg25519PriKeySpec = (HcfAlg25519PriKeyParamsSpec*)HcfMalloc(sizeof(HcfAlg25519PriKeyParamsSpec), 0); + if (*alg25519PriKeySpec == nullptr) { + return HCF_ERR_MALLOC; + } + if (choose) { + (*alg25519PriKeySpec)->base.algName = static_cast(HcfMalloc(sizeof(g_ed25519AlgoName), 0)); + if ((*alg25519PriKeySpec)->base.algName == nullptr) { + HcfFree(*alg25519PriKeySpec); + *alg25519PriKeySpec = nullptr; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519PriKeySpec)->base.algName, g_ed25519AlgoName.length(), + g_ed25519AlgoName.data(), g_ed25519AlgoName.length()); + } else { + (*alg25519PriKeySpec)->base.algName = static_cast(HcfMalloc(sizeof(g_x25519AlgoName), 0)); + if ((*alg25519PriKeySpec)->base.algName == nullptr) { + HcfFree(*alg25519PriKeySpec); + *alg25519PriKeySpec = nullptr; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519PriKeySpec)->base.algName, g_x25519AlgoName.length(), + g_x25519AlgoName.data(), g_x25519AlgoName.length()); + } return HCF_SUCCESS; } static HcfResult ConstructAlg25519PriKeyParamsSpec(const string &algoName, bool choose, HcfAsyKeyParamsSpec **spec) { + HcfResult res = HCF_ERR_CRYPTO_OPERATION; HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return HCF_ERR_CRYPTO_OPERATION; + if (HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator) != HCF_SUCCESS) { + return res; } HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { + if (generator->generateKeyPair(generator, nullptr, &keyPair) != HCF_SUCCESS) { HcfObjDestroy(generator); - return HCF_ERR_CRYPTO_OPERATION; + return res; } HcfAlg25519PriKeyParamsSpec *alg25519PriKeySpec = nullptr; - if (choose) { - alg25519PriKeySpec = &g_ed25519PriKeySpec; - alg25519PriKeySpec->base.algName = g_ed25519AlgoName.data(); - } else { - alg25519PriKeySpec = &g_x25519PriKeySpec; - alg25519PriKeySpec->base.algName = g_x25519AlgoName.data(); - } - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - alg25519PriKeySpec->base.specType = HCF_PRIVATE_KEY_SPEC; - if (choose) { - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); - } else { - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, X25519_SK_BN, &retBigInt); - } - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; + if (CreateAlg25519PriKeySpec(choose, &alg25519PriKeySpec) == HCF_SUCCESS) { + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + alg25519PriKeySpec->base.specType = HCF_PRIVATE_KEY_SPEC; + if (choose) { + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); + } else { + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, X25519_SK_BN, &retBigInt); + } + if (res == HCF_SUCCESS) { + alg25519PriKeySpec->sk.data = retBigInt.data; + alg25519PriKeySpec->sk.len = retBigInt.len; + *spec = reinterpret_cast(alg25519PriKeySpec); + } else { + DestroyAlg25519PriKeySpec(reinterpret_cast(alg25519PriKeySpec)); + } } - alg25519PriKeySpec->sk.data = retBigInt.data; - alg25519PriKeySpec->sk.len = retBigInt.len; - - *spec = reinterpret_cast(alg25519PriKeySpec); HcfObjDestroy(generator); HcfObjDestroy(keyPair); - return HCF_SUCCESS; + return res; } static HcfResult ConstructDhCommParamsSpec(int32_t pLen, int32_t skLen, HcfDhCommParamsSpec **spec) @@ -997,6 +1046,9 @@ namespace OHOS { HcfDhCommParamsSpec *dhCommSpec = nullptr; HcfDhKeyUtilCreate(pLen, skLen, &dhCommSpec); + if (dhCommSpec == nullptr) { + return HCF_INVALID_PARAMS; + } *spec = dhCommSpec; return HCF_SUCCESS; } @@ -1007,19 +1059,22 @@ namespace OHOS { HcfAsyKeyGenerator *generator = nullptr; HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); if (res != HCF_SUCCESS) { - return HCF_ERR_CRYPTO_OPERATION; + return res; } - + HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, nullptr, &keyPair); if (res != HCF_SUCCESS) { HcfObjDestroy(generator); - return HCF_ERR_CRYPTO_OPERATION; + return res; } - HcfDhPubKeyParamsSpec *dhPubKeySpec = &g_dhPubKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - + HcfDhPubKeyParamsSpec *dhPubKeySpec = (HcfDhPubKeyParamsSpec*)HcfMalloc(sizeof(HcfDhPubKeyParamsSpec), 0); + if (dhPubKeySpec == nullptr) { + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return HCF_ERR_MALLOC; + } dhPubKeySpec->base.base.algName = dhCommParamsSpec->base.algName; dhPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; dhPubKeySpec->base.p.data = dhCommParamsSpec->p.data; @@ -1027,11 +1082,13 @@ namespace OHOS { dhPubKeySpec->base.g.data = dhCommParamsSpec->g.data; dhPubKeySpec->base.g.len = dhCommParamsSpec->g.len; dhPubKeySpec->base.length = dhCommParamsSpec->length; + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_PK_BN, &retBigInt); if (res != HCF_SUCCESS) { HcfObjDestroy(generator); HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; + HcfFree(dhPubKeySpec); + return res; } dhPubKeySpec->pk.data = retBigInt.data; dhPubKeySpec->pk.len = retBigInt.len; @@ -1048,18 +1105,21 @@ namespace OHOS { HcfAsyKeyGenerator *generator = nullptr; HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); if (res != HCF_SUCCESS) { - return HCF_ERR_CRYPTO_OPERATION; + return res; } HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, nullptr, &keyPair); if (res != HCF_SUCCESS) { HcfObjDestroy(generator); - return HCF_ERR_CRYPTO_OPERATION; + return res; } - HcfDhPriKeyParamsSpec *dhPriKeySpec = &g_dhPriKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - + HcfDhPriKeyParamsSpec *dhPriKeySpec = (HcfDhPriKeyParamsSpec*)HcfMalloc(sizeof(HcfDhPriKeyParamsSpec), 0); + if (dhPriKeySpec == nullptr) { + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return HCF_ERR_MALLOC; + } dhPriKeySpec->base.base.algName = dhCommParamsSpec->base.algName; dhPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; dhPriKeySpec->base.p.data = dhCommParamsSpec->p.data; @@ -1067,11 +1127,13 @@ namespace OHOS { dhPriKeySpec->base.g.data = dhCommParamsSpec->g.data; dhPriKeySpec->base.g.len = dhCommParamsSpec->g.len; dhPriKeySpec->base.length = dhCommParamsSpec->length; + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, DH_SK_BN, &retBigInt); if (res != HCF_SUCCESS) { HcfObjDestroy(generator); HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; + HcfFree(dhPriKeySpec); + return res; } dhPriKeySpec->sk.data = retBigInt.data; dhPriKeySpec->sk.len = retBigInt.len; @@ -1082,51 +1144,64 @@ namespace OHOS { return HCF_SUCCESS; } - static HcfResult ConstructDhKeyPairParamsSpec(const std::string &algoName, - HcfDhCommParamsSpec *dhCommParamsSpec, HcfAsyKeyParamsSpec **spec) + static HcfResult ConstructDhKeyPairBigInt(HcfKeyPair *keyPair, HcfDhKeyPairParamsSpec *dhKeyPairSpec) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); + HcfBigInteger retBigInt = { .data = NULL, .len = 0 }; + HcfResult res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_PK_BN, &retBigInt); if (res != HCF_SUCCESS) { - return HCF_ERR_CRYPTO_OPERATION; + return res; } + dhKeyPairSpec->pk.data = retBigInt.data; + dhKeyPairSpec->pk.len = retBigInt.len; - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, DH_SK_BN, &retBigInt); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return HCF_ERR_CRYPTO_OPERATION; + HcfFree(dhKeyPairSpec->pk.data); + dhKeyPairSpec->pk.data = NULL; + dhKeyPairSpec->pk.len = 0; + return res; } + dhKeyPairSpec->sk.data = retBigInt.data; + dhKeyPairSpec->sk.len = retBigInt.len; + return HCF_SUCCESS; + } - HcfDhKeyPairParamsSpec *dhKeyPairSpec = &g_dhKeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - dhKeyPairSpec->base.base.algName = dhCommParamsSpec->base.algName; - dhKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - dhKeyPairSpec->base.p.data = dhCommParamsSpec->p.data; - dhKeyPairSpec->base.p.len = dhCommParamsSpec->p.len; - dhKeyPairSpec->base.g.data = dhCommParamsSpec->g.data; - dhKeyPairSpec->base.g.len = dhCommParamsSpec->g.len; - dhKeyPairSpec->base.length = dhCommParamsSpec->length; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_PK_BN, &retBigInt); + static HcfResult ConstructDhKeyPairParamsSpec(const std::string &algoName, + HcfDhCommParamsSpec *dhCommParamsSpec, HcfAsyKeyParamsSpec **spec) + { + HcfAsyKeyGenerator *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; + return res; } - dhKeyPairSpec->pk.data = retBigInt.data; - dhKeyPairSpec->pk.len = retBigInt.len; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, DH_SK_BN, &retBigInt); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); if (res != HCF_SUCCESS) { HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_ERR_CRYPTO_OPERATION; + return res; } - dhKeyPairSpec->sk.data = retBigInt.data; - dhKeyPairSpec->sk.len = retBigInt.len; - *spec = reinterpret_cast(dhKeyPairSpec); + HcfDhKeyPairParamsSpec *dhKeyPairSpec = + reinterpret_cast(HcfMalloc(sizeof(HcfDhKeyPairParamsSpec), 0)); + if (dhKeyPairSpec != nullptr) { + dhKeyPairSpec->base.base.algName = dhCommParamsSpec->base.algName; + dhKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + dhKeyPairSpec->base.p.data = dhCommParamsSpec->p.data; + dhKeyPairSpec->base.p.len = dhCommParamsSpec->p.len; + dhKeyPairSpec->base.g.data = dhCommParamsSpec->g.data; + dhKeyPairSpec->base.g.len = dhCommParamsSpec->g.len; + dhKeyPairSpec->base.length = dhCommParamsSpec->length; + res = ConstructDhKeyPairBigInt(keyPair, dhKeyPairSpec); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + HcfFree(dhKeyPairSpec); + return res; + } + *spec = reinterpret_cast(dhKeyPairSpec); + } + HcfObjDestroy(generator); HcfObjDestroy(keyPair); return HCF_SUCCESS; @@ -1541,19 +1616,29 @@ namespace OHOS { res = ConstructSm2256KeyPairParamsSpec(algoName, eccCommParamsSpec, ¶mSpec); break; default: - return; - } - if (res != HCF_SUCCESS) { - return; + break; } - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - if (res != HCF_SUCCESS) { + if ((res != HCF_SUCCESS) || (HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator) != HCF_SUCCESS)) { + FreeEccCommParamsSpec(eccCommParamsSpec); + eccCommParamsSpec = nullptr; return; } (void)generator->generateKeyPair(generator, &keyPair); (void)generator->generatePriKey(generator, &priKey); (void)generator->generatePubKey(generator, &pubKey); - + switch (type) { + case GenerateType::FUZZ_PRIKEY: + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); + break; + case GenerateType::FUZZ_PUBKEY: + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); + break; + case GenerateType::FUZZ_KEYPAIR: + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); + break; + default: + break; + } HcfObjDestroy(pubKey); HcfObjDestroy(priKey); HcfObjDestroy(keyPair); @@ -1582,24 +1667,36 @@ namespace OHOS { static void TestSm2KeyBySpec(void) { - ConstructSm2256CommParamsSpec("NID_sm2", &g_sm2256CommSpec); + if (ConstructSm2256CommParamsSpec("NID_sm2", &g_sm2256CommSpec) != HCF_SUCCESS) { + return; + } GenSm2KeyCommonBySpec(g_sm2256CommSpec); GenSm2KeyBySpec(GenerateType::FUZZ_PRIKEY, "SM2_256", g_sm2256CommSpec); + if (ConstructSm2256CommParamsSpec("NID_sm2", &g_sm2256CommSpec) != HCF_SUCCESS) { + return; + } GenSm2KeyBySpec(GenerateType::FUZZ_PUBKEY, "SM2_256", g_sm2256CommSpec); + if (ConstructSm2256CommParamsSpec("NID_sm2", &g_sm2256CommSpec) != HCF_SUCCESS) { + return; + } GenSm2KeyBySpec(GenerateType::FUZZ_KEYPAIR, "SM2_256", g_sm2256CommSpec); - FreeEccCommParamsSpec(g_sm2256CommSpec); - g_sm2256CommSpec = nullptr; } static void TestBrainpoolKeyBySpec(void) { - ConstructSm2256CommParamsSpec("NID_brainpoolP160r1", &g_brainpoolP160r1CommSpec); + if (ConstructSm2256CommParamsSpec("NID_brainpoolP160r1", &g_brainpoolP160r1CommSpec) != HCF_SUCCESS) { + return; + } GenSm2KeyCommonBySpec(g_brainpoolP160r1CommSpec); GenSm2KeyBySpec(GenerateType::FUZZ_PRIKEY, "ECC_BrainPoolP160r1", g_brainpoolP160r1CommSpec); + if (ConstructSm2256CommParamsSpec("NID_brainpoolP160r1", &g_brainpoolP160r1CommSpec) != HCF_SUCCESS) { + return; + } GenSm2KeyBySpec(GenerateType::FUZZ_PUBKEY, "ECC_BrainPoolP160r1", g_brainpoolP160r1CommSpec); + if (ConstructSm2256CommParamsSpec("NID_brainpoolP160r1", &g_brainpoolP160r1CommSpec) != HCF_SUCCESS) { + return; + } GenSm2KeyBySpec(GenerateType::FUZZ_KEYPAIR, "ECC_BrainPoolP160r1", g_brainpoolP160r1CommSpec); - FreeEccCommParamsSpec(g_brainpoolP160r1CommSpec); - g_brainpoolP160r1CommSpec = nullptr; } static void GenAlg25519KeyBySpec(GenerateType type, const std::string &algoName, @@ -1622,20 +1719,31 @@ namespace OHOS { res = ConstructAlg25519KeyPairParamsSpec(algoName, choose, ¶mSpec); break; default: - return; + break; } if (res != HCF_SUCCESS) { return; } res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); if (res != HCF_SUCCESS) { - HcfObjDestroy(paramSpec); return; } (void)generator->generateKeyPair(generator, &keyPair); (void)generator->generatePriKey(generator, &priKey); (void)generator->generatePubKey(generator, &pubKey); - + switch (type) { + case GenerateType::FUZZ_PRIKEY: + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec)); + break; + case GenerateType::FUZZ_PUBKEY: + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec)); + break; + case GenerateType::FUZZ_KEYPAIR: + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); + break; + default: + break; + } HcfObjDestroy(pubKey); HcfObjDestroy(priKey); HcfObjDestroy(keyPair); @@ -1676,20 +1784,29 @@ namespace OHOS { res = ConstructDhKeyPairParamsSpec(algoName, dhCommParamsSpec, ¶mSpec); break; default: - return; - } - if (res != HCF_SUCCESS) { - return; + break; } - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - if (res != HCF_SUCCESS) { - HcfObjDestroy(paramSpec); + if ((res != HCF_SUCCESS) || (HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator) != HCF_SUCCESS)) { + FreeDhCommParamsSpec(dhCommParamsSpec); + dhCommParamsSpec = nullptr; return; } (void)generator->generateKeyPair(generator, &keyPair); (void)generator->generatePriKey(generator, &priKey); (void)generator->generatePubKey(generator, &pubKey); - + switch (type) { + case GenerateType::FUZZ_PRIKEY: + DestroyDhPriKeySpec(reinterpret_cast(paramSpec)); + break; + case GenerateType::FUZZ_PUBKEY: + DestroyDhPubKeySpec(reinterpret_cast(paramSpec)); + break; + case GenerateType::FUZZ_KEYPAIR: + DestroyDhKeyPairSpec(reinterpret_cast(paramSpec)); + break; + default: + break; + } HcfObjDestroy(pubKey); HcfObjDestroy(priKey); HcfObjDestroy(keyPair); @@ -1718,13 +1835,19 @@ namespace OHOS { static void TestDhKeyBySpec(void) { - ConstructDhCommParamsSpec(PLEN_BITS, SKLEN_BITS, &g_dhCommSpec); + if (ConstructDhCommParamsSpec(PLEN_BITS, SKLEN_BITS, &g_dhCommSpec) != HCF_SUCCESS) { + return; + } GenDhKeyCommonBySpec(g_dhCommSpec); GenDhKeyBySpec(GenerateType::FUZZ_PRIKEY, "DH_ffdhe3072", g_dhCommSpec); + if (ConstructDhCommParamsSpec(PLEN_BITS, SKLEN_BITS, &g_dhCommSpec) != HCF_SUCCESS) { + return; + } GenDhKeyBySpec(GenerateType::FUZZ_PUBKEY, "DH_ffdhe3072", g_dhCommSpec); + if (ConstructDhCommParamsSpec(PLEN_BITS, SKLEN_BITS, &g_dhCommSpec) != HCF_SUCCESS) { + return; + } GenDhKeyBySpec(GenerateType::FUZZ_KEYPAIR, "DH_ffdhe3072", g_dhCommSpec); - FreeDhCommParamsSpec(g_dhCommSpec); - g_dhCommSpec = nullptr; } bool AsyKeyGeneratorFuzzTest(const uint8_t* data, size_t size) diff --git a/test/fuzztest/key/dhkeyutil_fuzzer/dhkeyutil_fuzzer.cpp b/test/fuzztest/key/dhkeyutil_fuzzer/dhkeyutil_fuzzer.cpp index 39d445f..c93433e 100644 --- a/test/fuzztest/key/dhkeyutil_fuzzer/dhkeyutil_fuzzer.cpp +++ b/test/fuzztest/key/dhkeyutil_fuzzer/dhkeyutil_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Huawei Device Co., Ltd. + * Copyright (C) 2023-2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at diff --git a/test/unittest/BUILD.gn b/test/unittest/BUILD.gn index bdc0139..ddcfd68 100644 --- a/test/unittest/BUILD.gn +++ b/test/unittest/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (C) 2022-2023 Huawei Device Co., Ltd. +# Copyright (C) 2022-2024 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -34,8 +34,16 @@ ohos_unittest("crypto_framework_test") { framework_inc_path + plugin_inc_path + crypto_framwork_common_inc_path sources = [ + "src/aes_cipher/aes_common.cpp", + "src/aes_cipher/crypto_aes_cbc_cipher_test.cpp", + "src/aes_cipher/crypto_aes_ccm_cipher_test.cpp", + "src/aes_cipher/crypto_aes_cfb_cipher_test.cpp", + "src/aes_cipher/crypto_aes_cipher_test.cpp", + "src/aes_cipher/crypto_aes_ctr_cipher_test.cpp", + "src/aes_cipher/crypto_aes_ecb_cipher_test.cpp", + "src/aes_cipher/crypto_aes_gcm_cipher_test.cpp", + "src/aes_cipher/crypto_aes_ofb_cipher_test.cpp", "src/crypto_3des_cipher_test.cpp", - "src/crypto_aes_cipher_test.cpp", "src/crypto_asy_key_generator_cov_test.cpp", "src/crypto_brainpool_asy_key_generator_test.cpp", "src/crypto_brainpool_key_agreement_test.cpp", @@ -50,15 +58,10 @@ ohos_unittest("crypto_framework_test") { "src/crypto_dsa_exception_test.cpp", "src/crypto_dsa_sign_test.cpp", "src/crypto_dsa_verify_test.cpp", - "src/crypto_ecc_asy_key_generator_by_spec_test.cpp", "src/crypto_ecc_asy_key_generator_test.cpp", "src/crypto_ecc_key_agreement_by_spec_test.cpp", "src/crypto_ecc_key_agreement_test.cpp", "src/crypto_ecc_key_util_test.cpp", - "src/crypto_ecc_no_length_sign_test.cpp", - "src/crypto_ecc_no_length_verify_test.cpp", - "src/crypto_ecc_sign_test.cpp", - "src/crypto_ecc_verify_test.cpp", "src/crypto_ed25519_asy_key_generator_by_spec_test.cpp", "src/crypto_ed25519_asy_key_generator_test.cpp", "src/crypto_ed25519_sign_test.cpp", @@ -68,24 +71,47 @@ ohos_unittest("crypto_framework_test") { "src/crypto_md_test.cpp", "src/crypto_pbkdf2_test.cpp", "src/crypto_rand_test.cpp", + "src/crypto_rsa1024_asy_key_generator_by_spec_test.cpp", + "src/crypto_rsa2048_asy_key_generator_by_spec_test.cpp", + "src/crypto_rsa3072_asy_key_generator_by_spec_test.cpp", + "src/crypto_rsa4096_asy_key_generator_by_spec_test.cpp", + "src/crypto_rsa512_asy_key_generator_by_spec_test.cpp", + "src/crypto_rsa768_asy_key_generator_by_spec_test.cpp", + "src/crypto_rsa8192_asy_key_generator_by_spec_test.cpp", "src/crypto_rsa_asy_key_generator_by_spec_cov_test.cpp", - "src/crypto_rsa_asy_key_generator_by_spec_test.cpp", "src/crypto_rsa_asy_key_generator_test.cpp", + "src/crypto_rsa_cipher_sub_test.cpp", "src/crypto_rsa_cipher_test.cpp", "src/crypto_rsa_sign_test.cpp", "src/crypto_rsa_verify_test.cpp", "src/crypto_signature_exception_test.cpp", - "src/crypto_sm2_asy_key_generator_by_spec_test.cpp", "src/crypto_sm2_asy_key_generator_test.cpp", "src/crypto_sm2_cipher_test.cpp", "src/crypto_sm2_sign_test.cpp", "src/crypto_sm2_verify_test.cpp", "src/crypto_sm3_mac_test.cpp", + "src/crypto_sm4_cfb_cipher_test.cpp", "src/crypto_sm4_cipher_test.cpp", + "src/crypto_sm4_ecb_cipher_test.cpp", "src/crypto_sm4_generator_test.cpp", "src/crypto_x25519_asy_key_generator_by_spec_test.cpp", "src/crypto_x25519_asy_key_generator_test.cpp", "src/crypto_x25519_key_agreement_test.cpp", + "src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_four_test.cpp", + "src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_one_test.cpp", + "src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_three_test.cpp", + "src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_two_test.cpp", + "src/ecc/crypto_ecc_asy_key_generator_by_spec_test.cpp", + "src/ecc/crypto_ecc_no_length_sign_sub_test.cpp", + "src/ecc/crypto_ecc_no_length_sign_test.cpp", + "src/ecc/crypto_ecc_no_length_verify_sub_test.cpp", + "src/ecc/crypto_ecc_no_length_verify_test.cpp", + "src/ecc/crypto_ecc_sign_sub_test.cpp", + "src/ecc/crypto_ecc_sign_test.cpp", + "src/ecc/crypto_ecc_verify_sub_test.cpp", + "src/ecc/crypto_ecc_verify_test.cpp", + "src/sm2/crypto_sm2_asy_key_generator_by_spec_sub_test.cpp", + "src/sm2/crypto_sm2_asy_key_generator_by_spec_test.cpp", ] sources += framework_files + plugin_files @@ -102,8 +128,13 @@ ohos_unittest("crypto_framework_test") { "//base/security/crypto_framework/common/src/object_base.c", "//base/security/crypto_framework/common/src/params_parser.c", "//base/security/crypto_framework/common/src/utils.c", + "src/alg_25519_common_param_spec.c", + "src/ecc/ecc_asy_key_common.cpp", + "src/ecc_common_param_spec.c", "src/memory_mock.c", "src/openssl_adapter_mock.c", + "src/rsa_common_param_spec.cpp", + "src/sm4_common.cpp", ] cflags = [ "-DHILOG_ENABLE" ] if (target_cpu == "arm") { diff --git a/test/unittest/include/aes_common.h b/test/unittest/include/aes_common.h new file mode 100644 index 0000000..7561988 --- /dev/null +++ b/test/unittest/include/aes_common.h @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef AES_COMMON_H +#define AES_COMMON_H + +#include "algorithm_parameter.h" +#include "blob.h" +#include "cipher.h" +#include "sym_key.h" + +#ifdef __cplusplus +extern "C" { +#endif + +static const int32_t FILE_BLOCK_SIZE = 1024; +static const int32_t RAND_MAX_NUM = 100; +static const bool IS_DEBUG = false; +static constexpr int32_t CIPHER_TEXT_LEN = 128; +static constexpr int32_t KEY_MATERIAL_LEN = 16; +static constexpr int32_t AES_IV_LEN = 16; // iv for CBC|CTR|OFB|CFB mode +static constexpr int32_t GCM_IV_LEN = 12; // GCM +static constexpr int32_t GCM_AAD_LEN = 8; +static constexpr int32_t GCM_TAG_LEN = 16; +static constexpr int32_t GCM_IV_LONG_LEN = 16; +static constexpr int32_t GCM_IV_SHORT_LEN = 9; +static constexpr int32_t GCM_AAD_LONG_LEN = 2049; +static constexpr int32_t GCM_AAD_SHORT_LEN = 1; +static constexpr int32_t CCM_IV_LEN = 7; // CCM +static constexpr int32_t CCM_AAD_LEN = 8; +static constexpr int32_t CCM_TAG_LEN = 12; +static constexpr int32_t PLAINTEXT_LEN = 13; +static constexpr int32_t AES_KEY_SIZE = 128; + +void PrintfHex(const char *tag, uint8_t *in, int inLen); +int32_t GenerateSymKey(const char *algoName, HcfSymKey **key); +int32_t ConvertSymKey(const char *algoName, HcfSymKey **key); + +/* just rand data fill file for test */ +int32_t GeneratorFile(const char *fileName, int32_t genFileSize); +int32_t CompareFileContent(void); +int32_t AesMultiBlockEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params); +int32_t AesMultiBlockDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params); + +// use ECB, test abnormal input +int32_t AesEncryptWithInput(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, + uint8_t *cipherText, int *cipherTextLen); +int32_t AesEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int *cipherTextLen); +int32_t AesDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen); +int32_t AesNoUpdateEncWithInput(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, + uint8_t *cipherText, int *cipherTextLen); + +// test encrypt and decrypt with null plain text +int32_t AesDecryptEmptyMsg(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen); +int32_t AesNoUpdateEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int *cipherTextLen); +int32_t AesNoUpdateDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen); + +#ifdef __cplusplus +} +#endif +#endif \ No newline at end of file diff --git a/test/unittest/include/alg_25519_common_param_spec.h b/test/unittest/include/alg_25519_common_param_spec.h new file mode 100644 index 0000000..60db512 --- /dev/null +++ b/test/unittest/include/alg_25519_common_param_spec.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ALG_25519_COMMON_PARAM_SPEC_H +#define ALG_25519_COMMON_PARAM_SPEC_H + +#include +#include "asy_key_generator.h" +#include "detailed_alg_25519_key_params.h" +#include "result.h" + +#ifdef __cplusplus +extern "C" { +#endif + +HcfResult ConstructAlg25519KeyPairParamsSpec(const char *algoName, bool choose, HcfAsyKeyParamsSpec **spec); +HcfResult ConstructAlg25519PubKeyParamsSpec(const char *algoName, bool choose, HcfAsyKeyParamsSpec **spec); +HcfResult ConstructAlg25519PriKeyParamsSpec(const char *algoName, bool choose, HcfAsyKeyParamsSpec **spec); + +HcfResult TestHcfAsyKeyGeneratorCreate(const char *algName, HcfAsyKeyGenerator **generator); +HcfResult TestGenerateKeyPair(HcfAsyKeyGenerator *generator, HcfKeyPair **keyPair); +HcfResult TestKeyGeneratorAndGenerateKeyPair(const char *algName, HcfAsyKeyGenerator **generator, HcfKeyPair **keyPair); +HcfResult TestGenerateConvertKey(HcfAsyKeyGenerator *generator, HcfBlob *pubKeyBlob, HcfBlob *priKeyBlob, + HcfKeyPair **keyPair); +HcfResult TestGenerateKeyPairAndConvertKey(const char *algName, HcfAsyKeyGenerator **generator, HcfBlob *pubKeyBlob, + HcfBlob *priKeyBlob, HcfKeyPair **keyPair); +HcfResult TestCreateKeyPairParamsSpecAndGeneratorBySpec(const char *algName, bool choose, + HcfAsyKeyParamsSpec **paramSpec, HcfAsyKeyGeneratorBySpec **generator); +HcfResult TestCreatePubKeyParamsSpecAndGeneratorBySpec(const char *algName, bool choose, + HcfAsyKeyParamsSpec **paramSpec, HcfAsyKeyGeneratorBySpec **generator); +HcfResult TestCreatePriKeyParamsSpecAndGeneratorBySpec(const char *algName, bool choose, + HcfAsyKeyParamsSpec **paramSpec, HcfAsyKeyGeneratorBySpec **generator); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/test/unittest/include/ecc_asy_key_common.h b/test/unittest/include/ecc_asy_key_common.h new file mode 100644 index 0000000..36a02ca --- /dev/null +++ b/test/unittest/include/ecc_asy_key_common.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS,s + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ECC_ASY_KEY_COMMON_TEST_H +#define ECC_ASY_KEY_COMMON_TEST_H + +#include "result.h" +#include "asy_key_params.h" + +#ifdef __cplusplus +extern "C" { +#endif + +HcfResult ConstructEcc192CommParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc224CommParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc224PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc224PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc224KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc256CommParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc256PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc256PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc256KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc384CommParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc384PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc384PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc384KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc521CommParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc521PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc521PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc521KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc224ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc256ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc384ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc521ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc384ErrKeyPairParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc521ErrKeyPairParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc224ErrPubKeyParamsSpec(HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEcc224ErrPriKeyParamsSpec(HcfAsyKeyParamsSpec **spec); + + +#ifdef __cplusplus +} +#endif +#endif \ No newline at end of file diff --git a/test/unittest/include/ecc_common.h b/test/unittest/include/ecc_common.h index 789c697..3d1438b 100644 --- a/test/unittest/include/ecc_common.h +++ b/test/unittest/include/ecc_common.h @@ -16,6 +16,8 @@ #ifndef ECC_COMMON_H #define ECC_COMMON_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -412,6 +414,106 @@ static unsigned char g_ecc521CorrectLittlePkY[] = { 0x97, 0x03, 0xD3, 0x25, 0x64, 0x00 }; +static unsigned char g_ecc192CorrectBigP[] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +static unsigned char g_ecc192CorrectBigA[] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC +}; + +static unsigned char g_ecc192CorrectBigB[] = { + 0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C, 0x80, 0xE7, 0x0F, 0xA7, 0xE9, 0xAB, + 0x72, 0x24, 0x30, 0x49, 0xFE, 0xB8, 0xDE, 0xEC, 0xC1, 0x46, 0xB9, 0xB1 +}; + +static unsigned char g_ecc192CorrectBigGX[] = { + 0x18, 0x8D, 0xA8, 0x0E, 0xB0, 0x30, 0x90, 0xF6, 0x7C, 0xBF, 0x20, 0xEB, + 0x43, 0xA1, 0x88, 0x00, 0xF4, 0xFF, 0x0A, 0xFD, 0x82, 0xFF, 0x10, 0x12 +}; + +static unsigned char g_ecc192CorrectBigGY[] = { + 0x07, 0x19, 0x2b, 0x95, 0xff, 0xc8, 0xda, 0x78, 0x63, 0x10, 0x11, 0xed, + 0x6b, 0x24, 0xcd, 0xd5, 0x73, 0xf9, 0x77, 0xa1, 0x1e, 0x79, 0x48, 0x11 +}; + +static unsigned char g_ecc192CorrectBigN[] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B, 0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31 +}; + +static unsigned char g_ecc192CorrectLittleP[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +static unsigned char g_ecc192CorrectLittleA[] = { + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +static unsigned char g_ecc192CorrectLittleB[] = { + 0xb1, 0xb9, 0x46, 0xc1, 0xec, 0xde, 0xb8, 0xfe, 0x49, 0x30, 0x24, 0x72, + 0xab, 0xe9, 0xa7, 0x0f, 0xe7, 0x80, 0x9c, 0xe5, 0x19, 0x05, 0x21, 0x64 +}; + +static unsigned char g_ecc192CorrectLittleGX[] = { + 0x12, 0x10, 0xff, 0x82, 0xfd, 0x0a, 0xff, 0xf4, 0x00, 0x88, 0xa1, 0x43, + 0xeb, 0x20, 0xbf, 0x7c, 0xf6, 0x90, 0x30, 0xb0, 0x0e, 0xa8, 0x8d, 0x18 +}; + +static unsigned char g_ecc192CorrectLittleGY[] = { + 0x11, 0x48, 0x79, 0x1e, 0xa1, 0x77, 0xf9, 0x73, 0xd5, 0xcd, 0x24, 0x6b, + 0xed, 0x11, 0x10, 0x63, 0x78, 0xda, 0xc8, 0xff, 0x95, 0x2b, 0x19, 0x07 +}; + +static unsigned char g_ecc192CorrectLittleN[] = { + 0x31, 0x28, 0xd2, 0xb4, 0xb1, 0xc9, 0x6b, 0x14, 0x36, 0xf8, 0xde, 0x99, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +static const int ECC224_PUB_KEY_LEN = 80; +static const int ECC224_PRI_KEY_LEN = 44; +static constexpr int32_t NID_SECP192R1_LEN = 24; + +static uint8_t g_mockEcc224PubKeyBlobData[ECC224_PUB_KEY_LEN] = { 48, 78, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, + 6, 5, 43, 129, 4, 0, 33, 3, 58, 0, 4, 252, 171, 11, 115, 79, 252, 109, 120, 46, 97, 131, 145, 207, 141, 146, + 235, 133, 37, 218, 180, 8, 149, 47, 244, 137, 238, 207, 95, 153, 65, 250, 32, 77, 184, 249, 181, 172, 192, 2, + 99, 194, 170, 25, 44, 255, 87, 246, 42, 133, 83, 66, 197, 97, 95, 12, 84 }; + +static uint8_t g_mockEcc224PriKeyBlobData[ECC224_PRI_KEY_LEN] = { 48, 42, 2, 1, 1, 4, 28, 250, 86, 6, 147, 222, 43, + 252, 139, 90, 139, 5, 33, 184, 230, 26, 68, 94, 57, 145, 229, 146, 49, 221, 119, 206, 32, 198, 19, 160, 7, 6, + 5, 43, 129, 4, 0, 33 }; + +static std::string g_eccAlgName = "ECC"; +static std::string g_eccFieldType = "Fp"; +static int32_t g_ecc192CorrectH = 1; +static int32_t g_ecc224CorrectH = 1; +static int32_t g_ecc256CorrectH = 1; +static int32_t g_ecc384CorrectH = 1; +static int32_t g_ecc521CorrectH = 1; + +static HcfEccCommParamsSpec g_ecc192CommSpec; +static HcfEccCommParamsSpec g_ecc224CommSpec; +static HcfEccPubKeyParamsSpec g_ecc224PubKeySpec; +static HcfEccPriKeyParamsSpec g_ecc224PriKeySpec; +static HcfEccKeyPairParamsSpec g_ecc224KeyPairSpec; +static HcfEccCommParamsSpec g_ecc256CommSpec; +static HcfEccPubKeyParamsSpec g_ecc256PubKeySpec; +static HcfEccPriKeyParamsSpec g_ecc256PriKeySpec; +static HcfEccKeyPairParamsSpec g_ecc256KeyPairSpec; +static HcfEccCommParamsSpec g_ecc384CommSpec; +static HcfEccPubKeyParamsSpec g_ecc384PubKeySpec; +static HcfEccPriKeyParamsSpec g_ecc384PriKeySpec; +static HcfEccKeyPairParamsSpec g_ecc384KeyPairSpec; +static HcfEccCommParamsSpec g_ecc521CommSpec; +static HcfEccPubKeyParamsSpec g_ecc521PubKeySpec; +static HcfEccPriKeyParamsSpec g_ecc521PriKeySpec; +static HcfEccKeyPairParamsSpec g_ecc521KeyPairSpec; +static HcfECFieldFp g_fieldFp; + #ifdef __cplusplus } #endif diff --git a/test/unittest/include/ecc_common_param_spec.h b/test/unittest/include/ecc_common_param_spec.h new file mode 100644 index 0000000..0e90c55 --- /dev/null +++ b/test/unittest/include/ecc_common_param_spec.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ECC_COMMON_PARAM_SPEC_H +#define ECC_COMMON_PARAM_SPEC_H + +#include +#include "detailed_ecc_key_params.h" +#include "key_pair.h" +#include "result.h" + +#ifdef __cplusplus +extern "C" { +#endif + +HcfResult ConstructEccKeyPairCommParamsSpec(const char *algoName, HcfEccCommParamsSpec **spec); +HcfResult ConstructEccKeyPairParamsSpec(const char *algoName, HcfEccCommParamsSpec *eccCommSpec, + HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEccPubKeyParamsSpec(const char *algoName, HcfEccCommParamsSpec *eccCommSpec, + HcfAsyKeyParamsSpec **spec); +HcfResult ConstructEccPriKeyParamsSpec(const char *algoName, HcfEccCommParamsSpec *eccCommSpec, + HcfAsyKeyParamsSpec **spec); +HcfResult GenerateBrainpoolP160r1KeyPair(HcfKeyPair **keyPair); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/test/unittest/include/memory_mock.h b/test/unittest/include/memory_mock.h index 0647a53..6e45af9 100755 --- a/test/unittest/include/memory_mock.h +++ b/test/unittest/include/memory_mock.h @@ -1,35 +1,34 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef MEMORY_MOCK_H -#define MEMORY_MOCK_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void SetMockFlag(bool flag); -void StartRecordMallocNum(void); -void EndRecordMallocNum(void); -uint32_t GetMallocNum(void); -void ResetRecordMallocNum(void); -void SetMockMallocIndex(uint32_t index); - -#ifdef __cplusplus -} -#endif +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MEMORY_MOCK_H +#define MEMORY_MOCK_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void StartRecordMallocNum(void); +void EndRecordMallocNum(void); +uint32_t GetMallocNum(void); +void ResetRecordMallocNum(void); +void SetMockMallocIndex(uint32_t index); + +#ifdef __cplusplus +} +#endif #endif \ No newline at end of file diff --git a/test/unittest/include/rsa_common_param_spec.h b/test/unittest/include/rsa_common_param_spec.h new file mode 100644 index 0000000..8913c62 --- /dev/null +++ b/test/unittest/include/rsa_common_param_spec.h @@ -0,0 +1,476 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef RSA_COMMON_PARAN_SPEC_H +#define RSA_COMMON_PARAN_SPEC_H + +#include "securec.h" + +#include "asy_key_generator.h" +#include "asy_key_generator_spi.h" +#include "blob.h" +#include "detailed_rsa_key_params.h" + +#ifdef __cplusplus +extern "C" { +#endif + +static constexpr uint32_t RSA_512_N_BYTE_SIZE = 64; +static constexpr uint32_t RSA_512_D_BYTE_SIZE = 64; +static constexpr uint32_t RSA_512_E_BYTE_SIZE = 3; + +static constexpr uint32_t RSA_768_N_BYTE_SIZE = 96; +static constexpr uint32_t RSA_768_D_BYTE_SIZE = 96; +static constexpr uint32_t RSA_768_E_BYTE_SIZE = 3; + +static constexpr uint32_t RSA_1024_N_BYTE_SIZE = 128; +static constexpr uint32_t RSA_1024_D_BYTE_SIZE = 128; +static constexpr uint32_t RSA_1024_E_BYTE_SIZE = 3; + +static constexpr uint32_t RSA_2048_N_BYTE_SIZE = 256; +static constexpr uint32_t RSA_2048_D_BYTE_SIZE = 256; +static constexpr uint32_t RSA_2048_E_BYTE_SIZE = 3; + +static constexpr uint32_t RSA_3072_N_BYTE_SIZE = 384; +static constexpr uint32_t RSA_3072_D_BYTE_SIZE = 384; +static constexpr uint32_t RSA_3072_E_BYTE_SIZE = 3; + +static constexpr uint32_t RSA_4096_N_BYTE_SIZE = 512; +static constexpr uint32_t RSA_4096_D_BYTE_SIZE = 512; +static constexpr uint32_t RSA_4096_E_BYTE_SIZE = 3; + +static constexpr uint32_t RSA_8192_N_BYTE_SIZE = 1024; +static constexpr uint32_t RSA_8192_D_BYTE_SIZE = 1024; +static constexpr uint32_t RSA_8192_E_BYTE_SIZE = 3; + +static constexpr unsigned char CORRECT_512_N[] = { + 0x9f, 0x25, 0x5d, 0x8b, 0xf9, 0xe1, 0x5c, 0xa8, 0x6f, 0xa3, 0xf1, 0x62, 0x0c, 0x4b, + 0x78, 0xc4, 0x44, 0x66, 0xe6, 0xe1, 0xe1, 0xf7, 0x29, 0x9c, 0x0f, 0xd7, 0xd1, 0x40, + 0x57, 0x46, 0x15, 0x1a, 0x1b, 0x93, 0xea, 0xf2, 0x8d, 0x13, 0xb6, 0x22, 0x3e, 0xc6, + 0x98, 0x2e, 0xf5, 0x47, 0xd2, 0x83, 0x97, 0x6a, 0x2e, 0x60, 0x43, 0xb2, 0xfe, 0x8b, + 0x7e, 0xf7, 0x36, 0x32, 0xce, 0x27, 0x49, 0xb5 +}; + +static constexpr unsigned char CORRECT_512_D[] = { + 0x73, 0xf2, 0xc1, 0x49, 0x2e, 0x71, 0x67, 0x14, 0xc0, 0xe1, 0xed, 0x07, 0xc6, 0x75, 0x66, + 0x33, 0x78, 0xb2, 0x90, 0x1c, 0x9a, 0x89, 0x7d, 0x23, 0x5a, 0xd7, 0x9e, 0x79, 0x06, 0x1c, + 0xe5, 0x59, 0xcd, 0xf7, 0xf4, 0x16, 0xf0, 0xc2, 0xd8, 0xb3, 0x3e, 0x3e, 0x14, 0xd3, 0x6e, + 0xc6, 0x8a, 0x6a, 0x22, 0xb4, 0x84, 0x01, 0x66, 0xf2, 0x61, 0x49, 0xe6, 0x43, 0x9f, 0x8c, + 0x54, 0x0d, 0xdc, 0x01 +}; + +static constexpr unsigned char CORRECT_768_N[] = { + 0xa0, 0x65, 0x4e, 0x6c, 0x75, 0x3b, 0x3b, 0x50, 0x13, 0xbe, 0xf5, 0xc4, 0x1d, 0x22, 0xca, + 0x4f, 0x39, 0xb0, 0xa0, 0xf4, 0xf2, 0x78, 0x12, 0xea, 0x2e, 0x03, 0x2b, 0xec, 0x84, 0x05, + 0xcc, 0xa9, 0x3e, 0xc3, 0x77, 0xf7, 0x26, 0x14, 0x75, 0x3e, 0xda, 0x87, 0x7e, 0xb4, 0xf4, + 0x51, 0xbd, 0x08, 0x10, 0x71, 0x61, 0xf6, 0xc2, 0x34, 0xd1, 0xb3, 0xa6, 0x0d, 0xe7, 0x52, + 0x82, 0xb9, 0xb1, 0x85, 0x0f, 0xad, 0x09, 0x1c, 0x37, 0x25, 0xb4, 0x70, 0x75, 0xfa, 0xb8, + 0x17, 0xe9, 0x97, 0x99, 0x1b, 0xa6, 0xb4, 0x03, 0x0e, 0x54, 0x4d, 0x0d, 0x41, 0xfd, 0xbe, + 0x96, 0xe2, 0xb8, 0xa4, 0xb1, 0x8b +}; + +static constexpr unsigned char CORRECT_768_D[] = { + 0x47, 0x26, 0xa9, 0x73, 0x53, 0x4d, 0xc3, 0x31, 0xf2, 0x90, 0x73, 0x55, 0x5b, 0xd7, 0x63, + 0x07, 0x62, 0x00, 0x08, 0x66, 0xa0, 0x68, 0xc3, 0x7b, 0x3e, 0x8e, 0x09, 0x9e, 0x11, 0xb2, + 0xc0, 0xe7, 0x13, 0x00, 0x82, 0xe7, 0x0f, 0xed, 0x63, 0x55, 0x4e, 0x7b, 0x6c, 0xa9, 0xb8, + 0xf7, 0xc9, 0x72, 0x66, 0x51, 0xb8, 0x72, 0x53, 0x0a, 0x77, 0xcd, 0x84, 0xdc, 0xb0, 0x4b, + 0xb0, 0x07, 0x92, 0x81, 0x77, 0xaf, 0x22, 0x1a, 0x08, 0x17, 0x6b, 0xf2, 0xd3, 0xf9, 0xd3, + 0x0e, 0x62, 0x01, 0xdd, 0x1e, 0xc5, 0xa6, 0xa8, 0xb0, 0x75, 0xb1, 0x69, 0x45, 0x9c, 0xde, + 0xe3, 0xc2, 0x39, 0x09, 0x32, 0x01 +}; + +static constexpr unsigned char CORRECT_1024_N[] = { + 0xce, 0x2c, 0xc7, 0xeb, 0xb4, 0xf0, 0xe8, 0x49, 0xec, 0xc8, 0xa3, 0x4f, 0x01, 0xd1, 0x43, + 0x30, 0xa8, 0xe8, 0x30, 0x1a, 0x1f, 0x2f, 0xe8, 0x17, 0x98, 0x5b, 0x30, 0x15, 0x98, 0x1b, + 0xc1, 0x84, 0xde, 0x10, 0x36, 0xaf, 0x90, 0x8d, 0x34, 0x98, 0x5c, 0x15, 0x0c, 0x2e, 0xe9, + 0x07, 0x35, 0x5b, 0x29, 0x12, 0x6d, 0xdf, 0xc7, 0x5b, 0x3a, 0x2f, 0xae, 0x2e, 0xe4, 0x7d, + 0x14, 0xd6, 0xa9, 0x41, 0x73, 0x08, 0x17, 0xc1, 0x77, 0x87, 0x9e, 0x69, 0x47, 0xb3, 0xf8, + 0xf4, 0x1c, 0xc1, 0x13, 0x9b, 0xeb, 0x34, 0x84, 0xca, 0x28, 0x6e, 0x63, 0x4e, 0x28, 0x7a, + 0x22, 0x32, 0xef, 0xd6, 0xde, 0xe5, 0x46, 0x6e, 0xbe, 0x8d, 0x31, 0x56, 0x45, 0x24, 0xc9, + 0x99, 0xb9, 0xad, 0x45, 0xdd, 0x22, 0x49, 0xd3, 0xde, 0xf7, 0x1f, 0x38, 0x44, 0x42, 0x7e, + 0xff, 0xdc, 0xd3, 0x6f, 0x93, 0xbb, 0x1c, 0x3d +}; +static constexpr unsigned char CORRECT_1024_D[] = { + 0x27, 0x52, 0xfb, 0x3e, 0xc5, 0xe0, 0x3d, 0x2d, 0xfc, 0x6f, 0xb8, 0x56, 0x55, 0x6e, 0x68, + 0x76, 0x5b, 0x81, 0x0d, 0xcb, 0xad, 0xaf, 0x21, 0x81, 0x7e, 0x99, 0xc5, 0xee, 0x18, 0x79, + 0x12, 0xcc, 0x18, 0xde, 0xd6, 0xcf, 0x5d, 0xae, 0xd1, 0x1d, 0x4e, 0x52, 0xe5, 0x63, 0xfd, + 0x26, 0x56, 0xd2, 0xf0, 0x5e, 0x87, 0x7e, 0x6b, 0x33, 0xc7, 0x41, 0x58, 0xe3, 0xb0, 0xc8, + 0xfa, 0xb4, 0x86, 0xcb, 0x90, 0xd5, 0x85, 0xb9, 0xa0, 0x35, 0x32, 0xb9, 0xe2, 0xf5, 0x3c, + 0x46, 0xe5, 0xb2, 0xd8, 0x5e, 0x27, 0x2e, 0x80, 0x8b, 0xfc, 0x6a, 0xd5, 0x88, 0xe1, 0xcb, + 0x02, 0xf7, 0xde, 0x6b, 0x26, 0x5b, 0x63, 0xd4, 0xfd, 0x26, 0x23, 0x4f, 0x28, 0x71, 0xc0, + 0xc0, 0x56, 0x80, 0x38, 0xcc, 0xbe, 0x7e, 0xe4, 0x76, 0xd2, 0x2d, 0x31, 0x1a, 0xeb, 0xa4, + 0x6d, 0x45, 0x64, 0x34, 0xbe, 0xd2, 0x3b, 0x01 +}; + +static constexpr unsigned char CORRECT_2048_N[] = + "\x92\x60\xd0\x75\x0a\xe1\x17\xee\xe5\x5c\x3f\x3d\xea\xba\x74\x91" + "\x75\x21\xa2\x62\xee\x76\x00\x7c\xdf\x8a\x56\x75\x5a\xd7\x3a\x15" + "\x98\xa1\x40\x84\x10\xa0\x14\x34\xc3\xf5\xbc\x54\xa8\x8b\x57\xfa" + "\x19\xfc\x43\x28\xda\xea\x07\x50\xa4\xc4\x4e\x88\xcf\xf3\xb2\x38" + "\x26\x21\xb8\x0f\x67\x04\x64\x43\x3e\x43\x36\xe6\xd0\x03\xe8\xcd" + "\x65\xbf\xf2\x11\xda\x14\x4b\x88\x29\x1c\x22\x59\xa0\x0a\x72\xb7" + "\x11\xc1\x16\xef\x76\x86\xe8\xfe\xe3\x4e\x4d\x93\x3c\x86\x81\x87" + "\xbd\xc2\x6f\x7b\xe0\x71\x49\x3c\x86\xf7\xa5\x94\x1c\x35\x10\x80" + "\x6a\xd6\x7b\x0f\x94\xd8\x8f\x5c\xf5\xc0\x2a\x09\x28\x21\xd8\x62" + "\x6e\x89\x32\xb6\x5c\x5b\xd8\xc9\x20\x49\xc2\x10\x93\x2b\x7a\xfa" + "\x7a\xc5\x9c\x0e\x88\x6a\xe5\xc1\xed\xb0\x0d\x8c\xe2\xc5\x76\x33" + "\xdb\x26\xbd\x66\x39\xbf\xf7\x3c\xee\x82\xbe\x92\x75\xc4\x02\xb4" + "\xcf\x2a\x43\x88\xda\x8c\xf8\xc6\x4e\xef\xe1\xc5\xa0\xf5\xab\x80" + "\x57\xc3\x9f\xa5\xc0\x58\x9c\x3e\x25\x3f\x09\x60\x33\x23\x00\xf9" + "\x4b\xea\x44\x87\x7b\x58\x8e\x1e\xdb\xde\x97\xcf\x23\x60\x72\x7a" + "\x09\xb7\x75\x26\x2d\x7e\xe5\x52\xb3\x31\x9b\x92\x66\xf0\x5a\x25"; + +static constexpr unsigned char CORRECT_E[] = "\x01\x00\x01"; + +static constexpr unsigned char CORRECT_2048_D[] = + "\x6a\x7d\xf2\xca\x63\xea\xd4\xdd\xa1\x91\xd6\x14\xb6\xb3\x85\xe0" + "\xd9\x05\x6a\x3d\x6d\x5c\xfe\x07\xdb\x1d\xaa\xbe\xe0\x22\xdb\x08" + "\x21\x2d\x97\x61\x3d\x33\x28\xe0\x26\x7c\x9d\xd2\x3d\x78\x7a\xbd" + "\xe2\xaf\xcb\x30\x6a\xeb\x7d\xfc\xe6\x92\x46\xcc\x73\xf5\xc8\x7f" + "\xdf\x06\x03\x01\x79\xa2\x11\x4b\x76\x7d\xb1\xf0\x83\xff\x84\x1c" + "\x02\x5d\x7d\xc0\x0c\xd8\x24\x35\xb9\xa9\x0f\x69\x53\x69\xe9\x4d" + "\xf2\x3d\x2c\xe4\x58\xbc\x3b\x32\x83\xad\x8b\xba\x2b\x8f\xa1\xba" + "\x62\xe2\xdc\xe9\xac\xcf\xf3\x79\x9a\xae\x7c\x84\x00\x16\xf3\xba" + "\x8e\x00\x48\xc0\xb6\xcc\x43\x39\xaf\x71\x61\x00\x3a\x5b\xeb\x86" + "\x4a\x01\x64\xb2\xc1\xc9\x23\x7b\x64\xbc\x87\x55\x69\x94\x35\x1b" + "\x27\x50\x6c\x33\xd4\xbc\xdf\xce\x0f\x9c\x49\x1a\x7d\x6b\x06\x28" + "\xc7\xc8\x52\xbe\x4f\x0a\x9c\x31\x32\xb2\xed\x3a\x2c\x88\x81\xe9" + "\xaa\xb0\x7e\x20\xe1\x7d\xeb\x07\x46\x91\xbe\x67\x77\x76\xa7\x8b" + "\x5c\x50\x2e\x05\xd9\xbd\xde\x72\x12\x6b\x37\x38\x69\x5e\x2d\xd1" + "\xa0\xa9\x8a\x14\x24\x7c\x65\xd8\xa7\xee\x79\x43\x2a\x09\x2c\xb0" + "\x72\x1a\x12\xdf\x79\x8e\x44\xf7\xcf\xce\x0c\x49\x81\x47\xa9\xb1"; + +static constexpr unsigned char CORRECT_3072_N[] = { + 0xf9, 0xb0, 0xc2, 0x4b, 0xe4, 0x8f, 0x50, 0x2c, 0xb9, 0xb3, 0xa5, 0x14, 0x4b, 0xeb, 0x21, + 0xa4, 0xa0, 0x2a, 0xc2, 0x0a, 0x89, 0xcb, 0x58, 0x40, 0xf3, 0x94, 0x1b, 0x6d, 0xc6, 0x38, + 0xd3, 0x87, 0x58, 0x8f, 0x52, 0x8e, 0x47, 0x32, 0xf3, 0xa5, 0x5a, 0xcd, 0x75, 0x43, 0xce, + 0x74, 0x7e, 0x9f, 0x41, 0xad, 0xad, 0x24, 0xe0, 0x0d, 0xb3, 0xaa, 0xe7, 0x58, 0xe1, 0xa3, + 0x5f, 0x38, 0xbc, 0x1c, 0xa8, 0xe5, 0xba, 0x1f, 0xb4, 0x05, 0x7f, 0xa8, 0xc4, 0x40, 0x95, + 0x20, 0xd4, 0xbf, 0x8f, 0x03, 0xac, 0x0f, 0x7f, 0x7a, 0x8a, 0xba, 0x13, 0x11, 0x76, 0x49, + 0x48, 0xc8, 0x67, 0x24, 0xda, 0x3e, 0xeb, 0x29, 0x24, 0xb2, 0x6d, 0x61, 0xa0, 0x5f, 0x7e, + 0xe1, 0x5b, 0x87, 0xca, 0xc8, 0x5b, 0x06, 0xed, 0x7d, 0xb2, 0x6e, 0xd4, 0x17, 0xde, 0x24, + 0xcb, 0x65, 0xbc, 0x8d, 0xe4, 0x5d, 0x00, 0x73, 0x21, 0xc0, 0x05, 0x3a, 0x00, 0xe3, 0xa6, + 0x92, 0x17, 0x25, 0x47, 0x49, 0xbe, 0x56, 0x08, 0x74, 0x23, 0x3a, 0x18, 0x1f, 0xd7, 0x8e, + 0xa7, 0xc5, 0xec, 0x7c, 0x05, 0x75, 0xd0, 0x83, 0x7a, 0xc4, 0xd7, 0x8a, 0x7f, 0xbf, 0xc6, + 0xe9, 0x43, 0x29, 0xe9, 0x67, 0xe5, 0x04, 0x48, 0xe1, 0x81, 0x53, 0x54, 0xbb, 0x8e, 0xa1, + 0x3a, 0x95, 0xd1, 0x6b, 0x93, 0xb4, 0xb2, 0xc3, 0x6e, 0x28, 0x05, 0x45, 0xdf, 0x6e, 0xe8, + 0x74, 0x49, 0x01, 0xb3, 0x26, 0xef, 0xa1, 0x78, 0xba, 0x4d, 0x11, 0xf1, 0x42, 0xfd, 0x91, + 0x0d, 0x0f, 0x23, 0xfa, 0x0f, 0x9d, 0xe9, 0xa5, 0x57, 0xdc, 0xd1, 0x7e, 0xce, 0x83, 0x42, + 0xa4, 0x7f, 0xa6, 0x96, 0xe1, 0x66, 0xc3, 0xa6, 0x65, 0x7a, 0xa3, 0xa8, 0x7a, 0x6d, 0x3d, + 0xf4, 0x97, 0x84, 0xae, 0x96, 0xce, 0x2d, 0x45, 0x69, 0xe0, 0x13, 0xbd, 0xd9, 0xec, 0x23, + 0x2a, 0xad, 0xa0, 0x8c, 0xfc, 0xd3, 0x08, 0xc9, 0x27, 0x28, 0xca, 0xd5, 0x4d, 0x29, 0x3e, + 0x4c, 0xf9, 0x49, 0xd3, 0x09, 0xce, 0xe7, 0x9f, 0xda, 0x83, 0xe6, 0x7e, 0xe4, 0x34, 0xf9, + 0x52, 0xc1, 0x63, 0x6b, 0xd5, 0x53, 0x7b, 0x99, 0x8c, 0x1b, 0xb5, 0x65, 0xca, 0x4b, 0x0d, + 0xd3, 0xd4, 0x74, 0x6e, 0x8f, 0x25, 0x99, 0x68, 0x9d, 0x00, 0x89, 0x8c, 0x09, 0x30, 0x8f, + 0x22, 0x13, 0x77, 0x5d, 0xf8, 0xb2, 0xc1, 0x0f, 0x01, 0x17, 0x91, 0x0c, 0x1b, 0x8b, 0xa2, + 0xe5, 0x24, 0xd6, 0xef, 0x34, 0xc8, 0x21, 0xc8, 0x32, 0x1d, 0x89, 0x48, 0x73, 0x43, 0x25, + 0x70, 0xdc, 0x08, 0x2d, 0x49, 0x8a, 0x9d, 0x73, 0xe4, 0xd8, 0x56, 0x86, 0xc4, 0x0d, 0x85, + 0x65, 0x88, 0x57, 0x3f, 0xe0, 0x83, 0x0a, 0x9c, 0x51, 0x35, 0x82, 0xf2, 0x89, 0x48, 0x4e, + 0x8e, 0x70, 0x7f, 0xd5, 0xa8, 0x04, 0xae, 0xe3, 0x87 +}; +static constexpr unsigned char CORRECT_3072_D[] = { + 0x2f, 0xba, 0x10, 0xb9, 0x8e, 0xfb, 0xb1, 0xd8, 0x8a, 0xba, 0x82, 0xf0, 0x69, 0x3e, 0x8d, + 0x94, 0xb9, 0x24, 0xd3, 0x28, 0x4e, 0x84, 0x76, 0xdf, 0x1b, 0x70, 0x10, 0xfa, 0x1f, 0xac, + 0x97, 0x0a, 0x44, 0xec, 0x48, 0x5c, 0x77, 0xd1, 0x8e, 0x6e, 0xe9, 0xf7, 0x61, 0xd5, 0xcf, + 0x2d, 0xc7, 0x52, 0x4b, 0xac, 0x95, 0xee, 0xf9, 0x80, 0xc4, 0xfa, 0x02, 0xf4, 0xa3, 0x54, + 0xa6, 0x0b, 0xe3, 0x31, 0x1b, 0x3b, 0xa6, 0x23, 0x0f, 0x37, 0x09, 0xda, 0xc9, 0x80, 0x8a, + 0xc0, 0xd6, 0xc9, 0xb2, 0xdd, 0x81, 0xd3, 0x08, 0x8b, 0xf4, 0xde, 0x72, 0x6c, 0xa1, 0x0e, + 0x8b, 0x01, 0xfb, 0x6d, 0x38, 0xe6, 0x53, 0xee, 0xee, 0x5b, 0xc8, 0xba, 0xa3, 0x7b, 0xfd, + 0x75, 0xb8, 0x18, 0x31, 0xb3, 0xb0, 0x6a, 0x97, 0x94, 0xb2, 0x39, 0xab, 0x02, 0xd0, 0xec, + 0x79, 0x90, 0x7d, 0xc5, 0x25, 0x84, 0x7d, 0x64, 0x84, 0x6b, 0xfe, 0xd3, 0xc2, 0x7d, 0xc1, + 0x46, 0x25, 0x74, 0x73, 0xb6, 0xed, 0xd1, 0xe6, 0x15, 0xc4, 0xf2, 0x02, 0xd0, 0x7b, 0x54, + 0x82, 0x4f, 0x3b, 0xcf, 0xcc, 0xff, 0x63, 0x16, 0xee, 0xad, 0x97, 0x81, 0x9a, 0xbf, 0x9e, + 0x96, 0xd1, 0xc6, 0xbe, 0x1d, 0xa4, 0xd1, 0xf7, 0xd8, 0x5a, 0xef, 0x01, 0xc0, 0x44, 0x18, + 0x1f, 0x69, 0xa9, 0xb9, 0x05, 0x67, 0xc1, 0xcf, 0xc7, 0x4b, 0x91, 0x0e, 0x14, 0x6a, 0x6b, + 0x92, 0xad, 0x33, 0x3d, 0xbf, 0x09, 0xbb, 0xaf, 0x36, 0xcd, 0x7d, 0xaf, 0x33, 0xcf, 0xbe, + 0x2f, 0x6e, 0x60, 0xf6, 0x51, 0xb9, 0x7b, 0x7a, 0x1d, 0x95, 0x0c, 0x39, 0xec, 0xe0, 0xbe, + 0xfe, 0x5a, 0x2c, 0x68, 0xfe, 0x06, 0x04, 0xbc, 0xdb, 0xe6, 0xfd, 0x7f, 0x19, 0xc5, 0x15, + 0xad, 0x0c, 0x82, 0x91, 0x04, 0x1c, 0xf4, 0x98, 0x40, 0xf3, 0xca, 0xcc, 0xf7, 0xf9, 0xd0, + 0xac, 0xd8, 0xee, 0x1c, 0x8f, 0x69, 0x72, 0x3a, 0xa9, 0xd1, 0xaf, 0x90, 0x00, 0x55, 0x1d, + 0x9a, 0x72, 0x9d, 0xd3, 0x3d, 0x02, 0xe9, 0x79, 0xa2, 0x95, 0x13, 0xa9, 0x6f, 0x8e, 0xaf, + 0xa3, 0x39, 0xe8, 0x3b, 0x01, 0x31, 0x51, 0xc5, 0x46, 0x77, 0xbb, 0xe5, 0x5f, 0xd6, 0x4d, + 0x19, 0x54, 0xff, 0xd2, 0x40, 0x40, 0x1e, 0x9f, 0x54, 0x69, 0x99, 0xad, 0x12, 0xfe, 0xb5, + 0xa8, 0xbb, 0x19, 0x9b, 0xcc, 0x63, 0xf7, 0x6d, 0x77, 0xa2, 0x9c, 0x55, 0x33, 0x6c, 0x08, + 0x95, 0x27, 0x5f, 0x84, 0xb5, 0x9e, 0x2d, 0xa7, 0x96, 0x46, 0x38, 0xf7, 0x29, 0x66, 0xd7, + 0x01, 0x19, 0x7c, 0xfd, 0x45, 0x87, 0x81, 0xb0, 0xdd, 0xcd, 0x04, 0x73, 0x6a, 0x79, 0xbc, + 0x77, 0xd7, 0x1d, 0x29, 0x9b, 0xd4, 0x66, 0xec, 0x6d, 0x4f, 0x84, 0xb9, 0xad, 0xcd, 0x6d, + 0x40, 0x2f, 0xf5, 0x75, 0x1d, 0x3a, 0xbf, 0x01, 0xa9 +}; + + +static constexpr unsigned char CORRECT_4096_N[] = { + 0xc4, 0x68, 0xa2, 0x94, 0x23, 0xd8, 0xf4, 0x02, 0xf2, 0x0a, 0x0c, 0x50, 0xc8, 0xc2, 0xd5, 0xe5, + 0x57, 0xfe, 0xf7, 0x3a, 0x51, 0x4e, 0xad, 0x2c, 0x91, 0x58, 0x58, 0x0d, 0xdb, 0x4d, 0x0c, 0x58, + 0x92, 0x42, 0x07, 0x60, 0x1a, 0xb1, 0x07, 0x97, 0xb9, 0x63, 0xeb, 0x51, 0xef, 0x75, 0x69, 0xe5, + 0x9a, 0xc7, 0xef, 0xee, 0x20, 0x2f, 0xf2, 0x39, 0x61, 0x7b, 0x0e, 0x6b, 0xf6, 0x07, 0x30, 0xbf, + 0x30, 0xb4, 0x88, 0x64, 0xf0, 0xde, 0xcc, 0x47, 0xd5, 0xad, 0x7d, 0xfb, 0x81, 0x4d, 0x81, 0xde, + 0xa7, 0x0b, 0xb1, 0xff, 0xfd, 0x40, 0xca, 0xf8, 0xed, 0xfb, 0x62, 0x2d, 0x83, 0xa8, 0xcc, 0xdc, + 0x7a, 0x96, 0xea, 0x75, 0x39, 0x8f, 0xc5, 0x50, 0x86, 0x51, 0x04, 0x7d, 0x13, 0x94, 0x17, 0xed, + 0x1a, 0x90, 0xd8, 0x0f, 0xa3, 0xd7, 0x96, 0x87, 0x49, 0xa8, 0x6c, 0x51, 0x25, 0x2c, 0x0c, 0xf4, + 0x50, 0x5d, 0xfe, 0xf9, 0x4c, 0x94, 0x83, 0x40, 0xf5, 0x46, 0xa9, 0xcd, 0x42, 0x61, 0x89, 0x8c, + 0x52, 0x6f, 0xdc, 0x72, 0x5f, 0xfb, 0x11, 0x87, 0x37, 0x00, 0xb1, 0x46, 0x12, 0x93, 0xb9, 0x60, + 0x94, 0x00, 0x7c, 0x81, 0xc1, 0x48, 0xd7, 0xd3, 0x51, 0xe9, 0x3a, 0x0f, 0x59, 0xad, 0xd3, 0x9f, + 0x7c, 0x8d, 0x22, 0x61, 0x45, 0xeb, 0x5e, 0x1f, 0x7c, 0xa0, 0x15, 0xb9, 0x8e, 0x4e, 0xe3, 0xca, + 0xc5, 0x2c, 0x0d, 0x1e, 0x20, 0x76, 0x12, 0xa6, 0x9d, 0xf4, 0x95, 0x6b, 0xa2, 0x9b, 0x92, 0xf3, + 0xc9, 0x28, 0x2e, 0x97, 0x81, 0xac, 0xd6, 0x2f, 0x98, 0x43, 0xa7, 0xf5, 0x80, 0x8f, 0xc7, 0xfd, + 0x9c, 0x04, 0xad, 0x5e, 0xcd, 0x61, 0x9d, 0xd0, 0xde, 0xfd, 0x45, 0x42, 0x7e, 0xcf, 0x7e, 0xaf, + 0xf8, 0x9c, 0xe5, 0xc8, 0xb2, 0x67, 0xfe, 0x68, 0x2d, 0xed, 0xbb, 0x55, 0xdf, 0xba, 0xb2, 0xdf, + 0x57, 0x73, 0xa6, 0xa4, 0x02, 0x80, 0x33, 0xaf, 0x45, 0xb3, 0x72, 0x2a, 0xca, 0xd0, 0xc2, 0x37, + 0xbe, 0x11, 0xd8, 0x8e, 0xd7, 0xaa, 0x1f, 0xca, 0xd6, 0x3d, 0xc4, 0x14, 0x27, 0x17, 0x23, 0xda, + 0xec, 0x29, 0x8a, 0x98, 0x91, 0xf9, 0x8e, 0xdd, 0x5b, 0x69, 0xf2, 0x0a, 0x35, 0xe3, 0x4d, 0x5a, + 0x35, 0x7d, 0xe5, 0x67, 0xd2, 0x4d, 0x0b, 0xf4, 0x01, 0x28, 0xe8, 0x4f, 0xbf, 0x7d, 0x8d, 0xc0, + 0x28, 0x8d, 0x6b, 0x3a, 0x2b, 0x98, 0x5d, 0x93, 0x9e, 0x52, 0x85, 0xe9, 0xee, 0xed, 0xc6, 0x1d, + 0x24, 0x36, 0x0a, 0x91, 0x6c, 0xc7, 0xfa, 0xe5, 0x32, 0x9e, 0xa4, 0x58, 0xc8, 0xa4, 0xe9, 0xc5, + 0x15, 0x66, 0x4d, 0xfa, 0x77, 0xa0, 0x04, 0xab, 0xc5, 0xe5, 0x3b, 0xe5, 0x58, 0x1b, 0xb7, 0x2e, + 0x94, 0x2e, 0xdc, 0x65, 0x2f, 0x96, 0x85, 0x96, 0x0e, 0x3d, 0x91, 0x2a, 0x3b, 0xf7, 0x4e, 0xf8, + 0xef, 0x4a, 0x6e, 0x73, 0xb0, 0x4b, 0xd1, 0xd7, 0xa0, 0xbe, 0x03, 0x22, 0x30, 0x10, 0x06, 0x07, + 0xcb, 0x0c, 0x64, 0xb5, 0x0f, 0xa1, 0x89, 0x2a, 0x7a, 0xe6, 0x39, 0xc1, 0x66, 0x94, 0xe5, 0x88, + 0x2a, 0x6e, 0xea, 0x3f, 0x30, 0xe4, 0x1f, 0x93, 0x38, 0xa6, 0x04, 0x64, 0x23, 0x4e, 0x1b, 0x65, + 0xa0, 0x50, 0x86, 0x27, 0x6c, 0xab, 0xf5, 0xfb, 0x38, 0x31, 0x40, 0x78, 0x1b, 0xc1, 0xf8, 0xe3, + 0x9c, 0x65, 0xd8, 0x1a, 0x6b, 0x14, 0x7e, 0x4e, 0x30, 0x39, 0x58, 0x21, 0xba, 0x85, 0xe2, 0x40, + 0xc2, 0xb8, 0xb3, 0x7a, 0xd8, 0xd6, 0x54, 0xfa, 0xcd, 0x99, 0xb4, 0xb0, 0x3a, 0x62, 0xb7, 0x70, + 0x23, 0x0f, 0xec, 0x8c, 0xf0, 0x4c, 0x84, 0xeb, 0x68, 0xa8, 0x92, 0xd5, 0x65, 0x17, 0x25, 0x77, + 0xaa, 0x9c, 0x54, 0x57, 0x9e, 0xe6, 0xc6, 0x35, 0x85, 0xb1, 0x19, 0x77, 0xb0, 0xe6, 0xe7, 0xeb +}; +static constexpr unsigned char CORRECT_4096_D[] = { + 0x71, 0xb9, 0x50, 0x61, 0xcc, 0x7b, 0xe3, 0x96, 0x0d, 0x05, 0x8a, 0x6a, 0x00, 0x44, 0xe8, 0x4a, + 0xfa, 0x6f, 0xb4, 0x40, 0xfd, 0x31, 0x3c, 0x0e, 0x71, 0x3e, 0x21, 0x06, 0x2c, 0xf3, 0xe8, 0xf1, + 0x24, 0x06, 0xbd, 0x74, 0x85, 0x1f, 0xfa, 0x10, 0x7d, 0x15, 0x00, 0xfd, 0x99, 0x54, 0x77, 0xf3, + 0xad, 0x72, 0x95, 0x57, 0x61, 0x25, 0xc1, 0xf0, 0x3d, 0xa4, 0x5e, 0x0e, 0x5f, 0x0f, 0x7c, 0xc7, + 0x47, 0x71, 0x51, 0x04, 0x79, 0x7f, 0xd7, 0xf2, 0xc4, 0x23, 0xc7, 0xad, 0xa8, 0x09, 0xf3, 0xe7, + 0xb2, 0xfb, 0x8f, 0x9e, 0x74, 0xca, 0x5e, 0x7c, 0x52, 0x77, 0xdb, 0x3a, 0x15, 0x60, 0xd8, 0xf5, + 0xd4, 0xb9, 0xab, 0x9a, 0x22, 0xb1, 0x3f, 0x83, 0xc7, 0xb2, 0x03, 0x92, 0x54, 0x92, 0xcc, 0x63, + 0xca, 0x9d, 0x11, 0xad, 0xc4, 0xa5, 0xa1, 0x10, 0x46, 0xb3, 0x11, 0xbc, 0xce, 0x74, 0x3a, 0x30, + 0x00, 0x94, 0xdc, 0x7d, 0x07, 0x3d, 0x7a, 0xde, 0x52, 0xe7, 0x0e, 0x8c, 0xbe, 0x21, 0xf1, 0xdd, + 0xe1, 0x21, 0xca, 0x18, 0x23, 0xc1, 0x21, 0x3e, 0x14, 0xb7, 0xfe, 0xed, 0x5e, 0xf6, 0x50, 0x41, + 0x3e, 0x91, 0x25, 0x86, 0x90, 0x1f, 0x18, 0x70, 0xd0, 0x9d, 0xe5, 0xb3, 0x5b, 0xae, 0xcd, 0xb9, + 0x2c, 0x0a, 0x20, 0x5d, 0x08, 0x7a, 0x27, 0x2e, 0xbe, 0x1f, 0x87, 0x54, 0xc0, 0xb4, 0xa7, 0x2b, + 0x12, 0x8d, 0xd6, 0x2e, 0x9a, 0x87, 0x23, 0x77, 0x7c, 0x40, 0x51, 0x80, 0x58, 0x50, 0x12, 0x7f, + 0xbb, 0xfa, 0xdb, 0x37, 0x78, 0xab, 0x55, 0xfd, 0x8b, 0x01, 0xa9, 0xaf, 0xfa, 0x37, 0xc6, 0x89, + 0xef, 0x1b, 0xba, 0x33, 0x09, 0x62, 0xbb, 0x59, 0x64, 0xb4, 0x6b, 0xb4, 0xfb, 0xee, 0x33, 0x21, + 0xbb, 0x27, 0x45, 0xd9, 0xb6, 0x8b, 0x86, 0x80, 0x56, 0x0f, 0xb0, 0x08, 0x22, 0x1a, 0x5d, 0x54, + 0xf6, 0x96, 0xc4, 0x47, 0x77, 0x85, 0xec, 0x3c, 0x86, 0x91, 0xc4, 0x03, 0x0e, 0xc3, 0x9f, 0x99, + 0xc4, 0x7e, 0xef, 0x78, 0x2e, 0x7b, 0x60, 0xb0, 0x9e, 0x49, 0x53, 0xa7, 0x9f, 0x1b, 0x74, 0x32, + 0xf4, 0x31, 0x3f, 0x5b, 0x75, 0xd3, 0xc0, 0x59, 0xa2, 0x47, 0xd7, 0xe8, 0x69, 0x82, 0x3c, 0x6c, + 0xfd, 0xfa, 0x24, 0xb6, 0xa7, 0x3c, 0xaa, 0x29, 0x94, 0xa1, 0x68, 0x67, 0x09, 0xd4, 0x93, 0xc3, + 0x0e, 0x76, 0xa1, 0xbd, 0x9b, 0xfb, 0xca, 0x2a, 0x05, 0x07, 0xfc, 0xdc, 0x14, 0xb0, 0x9c, 0x44, + 0x30, 0xde, 0x02, 0x26, 0x21, 0x5f, 0x86, 0xb8, 0x6a, 0x81, 0xf2, 0xf0, 0xe1, 0xc1, 0x3d, 0x16, + 0xfe, 0xca, 0x80, 0xc7, 0xe3, 0xdb, 0x8b, 0xd2, 0xbd, 0x3d, 0xaa, 0x51, 0xac, 0xcd, 0x95, 0x0d, + 0x1c, 0x5b, 0x1e, 0x63, 0xb1, 0xf7, 0x85, 0xe2, 0xba, 0x65, 0xef, 0x68, 0xab, 0x55, 0xea, 0xc6, + 0xd8, 0x93, 0x82, 0x50, 0x33, 0x58, 0x90, 0x00, 0x47, 0x19, 0x50, 0x79, 0x9f, 0x8d, 0xe4, 0xb0, + 0x64, 0xca, 0xb1, 0xdd, 0xae, 0x47, 0x44, 0x3f, 0x81, 0x31, 0xd6, 0x90, 0x36, 0x93, 0x07, 0x21, + 0xb8, 0x44, 0x38, 0xbb, 0xd6, 0xdc, 0x00, 0x58, 0x87, 0xcc, 0xe9, 0x75, 0x5a, 0x82, 0x84, 0x38, + 0x5d, 0x63, 0x6d, 0x6b, 0x58, 0x4d, 0x9d, 0x97, 0xfc, 0xa7, 0xea, 0x18, 0x61, 0xdc, 0xed, 0xd7, + 0x16, 0xce, 0x81, 0xf5, 0x5b, 0x36, 0xda, 0xe0, 0x68, 0xba, 0xf6, 0x1f, 0x1b, 0xa5, 0xe3, 0x04, + 0xb5, 0xbe, 0xba, 0x49, 0x67, 0x76, 0x65, 0x90, 0xb2, 0x6d, 0x8f, 0x79, 0xad, 0xe9, 0x3c, 0x54, + 0x84, 0xfb, 0x73, 0x9b, 0x68, 0x3b, 0xbe, 0x4c, 0x1a, 0xfc, 0xe5, 0xa3, 0x9d, 0x0c, 0x94, 0xbb, + 0x47, 0xe2, 0xa8, 0x10, 0x1e, 0xf1, 0xb7, 0xdb, 0x3e, 0x50, 0x1f, 0x1d, 0x09, 0x39, 0x48, 0xa1 +}; + +static constexpr unsigned char CORRECT_8192_N[] = { + 0xbe, 0xb0, 0x16, 0xc4, 0x00, 0xfe, 0x62, 0x75, 0x53, 0x5e, 0x2f, 0x0d, 0x36, 0xbe, 0x94, 0x7b, + 0x8e, 0x58, 0xb4, 0x98, 0xaa, 0xa7, 0xdf, 0x81, 0x74, 0xc7, 0xda, 0x8c, 0x35, 0x37, 0xd0, 0x21, + 0xf0, 0x36, 0x27, 0xdb, 0x25, 0xbb, 0xd2, 0x05, 0xb9, 0xf1, 0xce, 0x15, 0xec, 0x65, 0x2f, 0x9c, + 0x89, 0x01, 0xf6, 0x6a, 0x92, 0x42, 0x39, 0xa4, 0xad, 0xc5, 0x3c, 0x60, 0x0e, 0x48, 0x3b, 0x3b, + 0x1a, 0xe6, 0xce, 0xdd, 0x61, 0xe2, 0xda, 0x08, 0x1d, 0x3b, 0x18, 0xfa, 0x12, 0x4f, 0x53, 0x70, + 0x56, 0xdc, 0xc6, 0xc6, 0xbe, 0x19, 0xc7, 0x8f, 0x4d, 0x25, 0x5c, 0xf5, 0x58, 0x44, 0xd0, 0x64, + 0xfd, 0xd6, 0xb3, 0x55, 0xca, 0xd9, 0x06, 0x4e, 0x69, 0xdf, 0x4e, 0x76, 0x64, 0x41, 0xbb, 0xd7, + 0x5a, 0x26, 0xe1, 0x5e, 0x62, 0x54, 0x30, 0xf6, 0x79, 0x15, 0x5b, 0x9a, 0x88, 0x73, 0xb1, 0xbe, + 0x0a, 0xfe, 0x54, 0x04, 0x13, 0x99, 0x3b, 0xfa, 0xfc, 0x8f, 0x9a, 0x93, 0xd4, 0x14, 0xde, 0x09, + 0x98, 0x78, 0x98, 0x10, 0x39, 0xdf, 0x9f, 0x58, 0xae, 0x10, 0xb1, 0xab, 0xe6, 0xae, 0x39, 0x85, + 0xe1, 0x83, 0x74, 0xf8, 0x05, 0x2a, 0xf8, 0xb3, 0xca, 0x4a, 0xee, 0x17, 0xce, 0xcf, 0x6b, 0x25, + 0x8c, 0xba, 0x89, 0x92, 0x3c, 0xc9, 0x0a, 0xe6, 0x93, 0x84, 0x3e, 0x81, 0xc6, 0x8c, 0x85, 0x6c, + 0x1a, 0xa6, 0xe9, 0x8e, 0x58, 0xe6, 0x94, 0x3c, 0xeb, 0xaf, 0x98, 0x55, 0xab, 0x6c, 0x8c, 0x66, + 0xe8, 0x45, 0x99, 0x2e, 0xd3, 0xad, 0xd8, 0xac, 0x9e, 0x78, 0x15, 0x78, 0x86, 0x5e, 0x97, 0x83, + 0x53, 0x34, 0xab, 0xec, 0xa5, 0x54, 0xf7, 0x82, 0xf1, 0x17, 0x01, 0x91, 0x96, 0x24, 0x6d, 0x7c, + 0x22, 0x4d, 0x67, 0xca, 0xa5, 0x67, 0x34, 0x59, 0xe8, 0x79, 0x71, 0x8d, 0xe5, 0xba, 0x31, 0x65, + 0x82, 0xfa, 0xa8, 0x8c, 0x1f, 0xe6, 0x1b, 0x7f, 0x03, 0xec, 0x60, 0x6e, 0xcd, 0xac, 0x75, 0xfd, + 0xaa, 0x9b, 0xf9, 0x6c, 0xe0, 0x83, 0x5a, 0x37, 0x32, 0xc7, 0x5c, 0x5c, 0x85, 0xb2, 0xd0, 0xe7, + 0x6e, 0x90, 0xa7, 0x24, 0x5a, 0x34, 0x6a, 0x09, 0xfd, 0x51, 0x12, 0xf3, 0xd1, 0xe5, 0x5d, 0xee, + 0x9f, 0x6d, 0xc8, 0xc8, 0x14, 0x43, 0x55, 0x26, 0x26, 0xb3, 0xe3, 0x47, 0x18, 0xdf, 0xcf, 0x34, + 0xc7, 0xda, 0xa6, 0x62, 0x59, 0xab, 0xa1, 0xe7, 0x87, 0x35, 0x34, 0x7b, 0x75, 0x68, 0x0a, 0x84, + 0xc4, 0x3b, 0xb3, 0x7c, 0xe8, 0xda, 0x42, 0x77, 0x04, 0xf4, 0x5e, 0x75, 0xaf, 0xa1, 0x02, 0x58, + 0xc7, 0x84, 0x51, 0x57, 0xc4, 0xc1, 0xad, 0xbf, 0x49, 0x71, 0xb2, 0x55, 0x99, 0xae, 0xec, 0xf1, + 0x20, 0xe0, 0x92, 0x6e, 0x95, 0xa3, 0x74, 0x65, 0xbe, 0x1b, 0xeb, 0xd5, 0xf3, 0x2c, 0xe8, 0xcb, + 0xc2, 0xfc, 0x20, 0x60, 0x39, 0xbf, 0xb0, 0xbe, 0xac, 0xc0, 0x15, 0x59, 0x56, 0x64, 0x13, 0xa8, + 0xb4, 0x0b, 0xfe, 0xf3, 0x2e, 0xc6, 0xbe, 0x8c, 0x58, 0x7a, 0x98, 0x0f, 0x46, 0x60, 0x59, 0xcd, + 0xfb, 0xd0, 0x5f, 0x37, 0x16, 0x9d, 0xb4, 0xfe, 0x5f, 0x30, 0x2a, 0x96, 0x7c, 0x07, 0x22, 0x46, + 0x9b, 0xe7, 0x22, 0x10, 0xd2, 0x1e, 0xca, 0xc4, 0xab, 0xd4, 0x23, 0x9a, 0x65, 0x5d, 0xa9, 0xc2, + 0x50, 0x2d, 0xf3, 0x44, 0x5a, 0x8b, 0x4e, 0x11, 0x18, 0x41, 0xcb, 0xca, 0xa3, 0x5a, 0x1e, 0xf9, + 0xec, 0xbe, 0xc7, 0x8b, 0xd4, 0x90, 0xa4, 0x79, 0x03, 0x9c, 0xf2, 0x97, 0xfc, 0x33, 0xc1, 0x30, + 0x58, 0x7b, 0x4e, 0xce, 0xb5, 0x0d, 0x0e, 0x11, 0x1a, 0x29, 0x39, 0x1c, 0xe2, 0x88, 0x67, 0xa1, + 0x2f, 0xb8, 0x42, 0x30, 0x72, 0x03, 0x90, 0x01, 0xe1, 0x20, 0x0b, 0xad, 0x11, 0x63, 0xaa, 0xa3, + 0x55, 0x52, 0xf8, 0xb8, 0xe6, 0xe3, 0x2e, 0xc5, 0xf3, 0x1a, 0xfd, 0x72, 0x2b, 0xb7, 0xef, 0x4c, + 0x4b, 0xf8, 0x36, 0x58, 0x34, 0x15, 0xe4, 0x3b, 0xdd, 0xd0, 0x77, 0xf8, 0x46, 0xa1, 0x8f, 0x98, + 0xdb, 0x44, 0xc6, 0xc2, 0x30, 0xe5, 0x25, 0x3c, 0x39, 0x5c, 0xe4, 0x36, 0xc6, 0x74, 0xed, 0xd1, + 0x20, 0x81, 0xea, 0xd9, 0x72, 0x4a, 0xad, 0xfa, 0x19, 0x22, 0xc0, 0x69, 0x33, 0xd7, 0x46, 0xb5, + 0x32, 0xfd, 0xa6, 0x30, 0xf9, 0x0f, 0xd9, 0x19, 0xac, 0x71, 0xb2, 0x43, 0x8d, 0x5a, 0xda, 0x55, + 0xdd, 0x70, 0xdc, 0x1c, 0xf2, 0xdb, 0x93, 0x93, 0xc9, 0xaa, 0xee, 0x38, 0x7a, 0x22, 0xe6, 0x64, + 0xa3, 0xbf, 0x65, 0x28, 0xa3, 0x34, 0x36, 0x91, 0xff, 0xe8, 0x73, 0x90, 0x35, 0x64, 0xad, 0x0a, + 0xcf, 0xa3, 0xac, 0x04, 0x96, 0x83, 0xf4, 0x55, 0x07, 0x8e, 0xf7, 0x90, 0x1d, 0xa3, 0x22, 0xf5, + 0x4d, 0x7a, 0xb0, 0xf6, 0x7e, 0xfc, 0xe6, 0x0b, 0x59, 0xab, 0xd5, 0x38, 0xa3, 0xa7, 0x45, 0x5d, + 0x88, 0x9c, 0x7f, 0xc0, 0x7d, 0x99, 0xce, 0x6d, 0x45, 0xce, 0x70, 0xea, 0x4f, 0x85, 0x86, 0x90, + 0xdb, 0xf6, 0xaf, 0xbe, 0x79, 0x7a, 0xcc, 0x94, 0x47, 0x2c, 0x28, 0x7a, 0xcc, 0xdc, 0x8c, 0x52, + 0xc1, 0x6b, 0x87, 0xf6, 0x98, 0x79, 0x03, 0x39, 0xcd, 0x51, 0xc9, 0x41, 0x0e, 0x9b, 0x84, 0xaa, + 0x8e, 0x16, 0x2d, 0xaf, 0xb6, 0x50, 0xbd, 0xc1, 0xbb, 0xf4, 0xea, 0x02, 0x2a, 0xe8, 0x10, 0x41, + 0xe8, 0x39, 0xc5, 0xce, 0x6d, 0x03, 0x9e, 0x2f, 0xc7, 0x35, 0x58, 0x76, 0x06, 0xfa, 0xf5, 0x67, + 0x99, 0x8f, 0x40, 0xfe, 0xd7, 0x2d, 0x0f, 0xe0, 0xae, 0x5f, 0x0e, 0x47, 0xe5, 0x9f, 0xb3, 0x19, + 0xa0, 0x7d, 0xe9, 0xd4, 0xa0, 0x08, 0xed, 0xcb, 0x84, 0xc3, 0x2a, 0xc5, 0xb9, 0x66, 0xf7, 0x55, + 0x4f, 0x6b, 0x26, 0xc7, 0xca, 0x4f, 0xf4, 0xc0, 0x80, 0xe9, 0xcb, 0x5a, 0x0a, 0x02, 0xe1, 0x15, + 0xd7, 0x5d, 0xb8, 0x47, 0x71, 0xec, 0xa3, 0x20, 0xfb, 0x73, 0xfb, 0x65, 0x4b, 0x7d, 0x25, 0xe8, + 0x9d, 0x38, 0x81, 0x56, 0x31, 0x39, 0x95, 0xfe, 0x30, 0x13, 0xf6, 0x83, 0x28, 0x97, 0xe5, 0xa2, + 0xf4, 0xf7, 0x0e, 0x7d, 0x6b, 0xc2, 0xfa, 0x81, 0xbb, 0xe7, 0x4a, 0x3b, 0x4c, 0x53, 0x04, 0xe1, + 0x51, 0x50, 0xea, 0xf2, 0x4c, 0xc7, 0x9d, 0xe7, 0x5e, 0x5b, 0x06, 0x19, 0x88, 0x9a, 0xc2, 0x89, + 0x9c, 0xf2, 0xab, 0xeb, 0xf6, 0xf3, 0xeb, 0xb5, 0xd0, 0x20, 0x3d, 0xce, 0x3d, 0xea, 0xea, 0x04, + 0xf1, 0x83, 0x87, 0xc8, 0x0c, 0x90, 0x61, 0x81, 0x33, 0x14, 0x40, 0x1d, 0x9e, 0x3c, 0xcf, 0xba, + 0x54, 0x41, 0x5f, 0xb2, 0x77, 0x7c, 0xad, 0x52, 0xe0, 0x5d, 0x30, 0xcc, 0xca, 0x25, 0x07, 0x23, + 0xcf, 0xa5, 0xca, 0x12, 0x1b, 0x9c, 0x8b, 0x0c, 0xd3, 0x72, 0xda, 0x1c, 0x5d, 0xf1, 0x5a, 0x02, + 0x32, 0x40, 0x58, 0x8f, 0x13, 0x37, 0xf7, 0x9d, 0x16, 0x46, 0xd2, 0x62, 0xc9, 0x93, 0x7e, 0x35, + 0x29, 0x40, 0x98, 0x78, 0xe9, 0x3c, 0xb5, 0x99, 0x39, 0xcf, 0xa3, 0xcc, 0xcc, 0x4f, 0xf5, 0xa9, + 0x82, 0x35, 0xf8, 0x61, 0xee, 0x41, 0xec, 0xfa, 0x9b, 0x70, 0x53, 0x1d, 0xcf, 0x72, 0xc1, 0xef, + 0xdc, 0xc8, 0xd8, 0x73, 0x09, 0x04, 0x91, 0x0e, 0xc1, 0xfc, 0xc4, 0x78, 0xf8, 0xd7, 0x09, 0x68, + 0xc6, 0x75, 0x58, 0xe3, 0x79, 0x8d, 0xe6, 0xfd, 0xdd, 0x03, 0x1b, 0x00, 0x85, 0x89, 0xbf, 0xe0, + 0xf9, 0x09, 0x8d, 0x5b, 0xe3, 0xab, 0xe7, 0x17, 0xab, 0x4a, 0x35, 0xdf, 0xe6, 0xf8, 0x7d, 0xc5, + 0x6d, 0xfd, 0x1f, 0x5e, 0x85, 0xbe, 0xa8, 0x56, 0x18, 0xa2, 0x10, 0xcc, 0x4d, 0x4f, 0xac, 0x69 +}; +static constexpr unsigned char CORRECT_8192_D[] = { + 0x9e, 0x4c, 0x46, 0x09, 0xde, 0x9d, 0x4f, 0x15, 0x00, 0xe9, 0x4d, 0xfc, 0x15, 0x37, 0x2e, 0xc2, + 0x47, 0x50, 0x22, 0x54, 0x1e, 0x4f, 0x8f, 0xfe, 0xc2, 0xf8, 0x69, 0xd8, 0x3d, 0x11, 0xa1, 0x49, + 0x9b, 0x45, 0x09, 0xdf, 0x26, 0x3a, 0xfe, 0x45, 0xdc, 0xaf, 0xfc, 0x9a, 0x3c, 0x8d, 0x5f, 0x71, + 0xfe, 0x56, 0xcf, 0xbe, 0x76, 0xbe, 0x5d, 0x65, 0xf5, 0x0f, 0xa8, 0x68, 0x41, 0x52, 0xfb, 0x40, + 0xbc, 0xbb, 0x60, 0x7d, 0x6d, 0x96, 0x49, 0xd3, 0xb4, 0x98, 0x6b, 0xca, 0xa5, 0x4a, 0x8f, 0x04, + 0xd2, 0x47, 0x23, 0x08, 0xb7, 0xa5, 0x65, 0x01, 0xf4, 0x54, 0x11, 0x10, 0x67, 0x7f, 0x70, 0xd4, + 0x75, 0xd9, 0x37, 0x35, 0x00, 0x59, 0x1b, 0xa0, 0x1a, 0xc9, 0xd3, 0x33, 0xfb, 0x54, 0x8a, 0x60, + 0x63, 0x29, 0xa5, 0xab, 0x99, 0xcb, 0x34, 0x7e, 0x57, 0xd4, 0x40, 0x20, 0x50, 0x28, 0x63, 0x24, + 0x55, 0xb1, 0xfe, 0x03, 0x08, 0x56, 0x0b, 0xf1, 0xf6, 0x9a, 0x2c, 0x03, 0x8e, 0x6a, 0xe8, 0x4c, + 0x64, 0xf3, 0xaf, 0xa0, 0xc0, 0xba, 0x80, 0x68, 0xb8, 0xcf, 0x88, 0xff, 0x20, 0x57, 0xff, 0xce, + 0xc1, 0x80, 0x44, 0xa8, 0xe4, 0x79, 0x60, 0xce, 0xb8, 0x1f, 0x6d, 0xf9, 0xfb, 0xa8, 0x3a, 0xd5, + 0x88, 0x37, 0x0e, 0x9f, 0x84, 0xb0, 0x8c, 0xc9, 0x0f, 0x2b, 0x18, 0x4c, 0xd9, 0x8b, 0xab, 0xf3, + 0x2b, 0x48, 0xe6, 0xd8, 0x51, 0xba, 0xd0, 0xd2, 0xa6, 0x01, 0x36, 0x5f, 0xe0, 0x18, 0x13, 0x92, + 0x16, 0x3e, 0x38, 0xc5, 0x23, 0xda, 0xcc, 0xe5, 0xb8, 0x04, 0x0e, 0x26, 0xe8, 0xbd, 0x3b, 0xe0, + 0x3c, 0x41, 0x9c, 0x7b, 0xae, 0x60, 0x93, 0xbc, 0x72, 0xf1, 0xdb, 0x4e, 0x85, 0xaa, 0xa5, 0xed, + 0x07, 0xf8, 0xe4, 0x31, 0xd9, 0x0f, 0x8c, 0xe9, 0x1a, 0x51, 0x3e, 0xd0, 0x42, 0x26, 0x48, 0x7d, + 0x71, 0xb7, 0x2e, 0x16, 0x6d, 0x20, 0xb4, 0x30, 0xc4, 0x0c, 0x05, 0x9d, 0xd6, 0x45, 0xd6, 0x09, + 0x88, 0x09, 0x45, 0x8d, 0x79, 0xef, 0xf1, 0x03, 0xa3, 0xb6, 0xd6, 0x58, 0xc4, 0x70, 0xc6, 0x75, + 0x69, 0x56, 0xd2, 0x3a, 0x1e, 0x5c, 0x26, 0xaf, 0x36, 0x48, 0x88, 0x88, 0x39, 0xf5, 0xc3, 0xfd, + 0xa5, 0x02, 0x19, 0x4c, 0xe7, 0x6d, 0x62, 0x11, 0x72, 0xcd, 0xa0, 0xde, 0x53, 0xaa, 0xf0, 0x33, + 0x6b, 0xb9, 0x7a, 0xa8, 0x68, 0xb2, 0x4f, 0x8c, 0x89, 0xb4, 0xc4, 0x65, 0xbc, 0xf8, 0x6a, 0xca, + 0xfe, 0xb0, 0x64, 0xf7, 0x4b, 0xc2, 0x6c, 0xac, 0xab, 0x43, 0x45, 0xeb, 0x42, 0xaa, 0x51, 0xed, + 0x6b, 0x6b, 0xcf, 0xaf, 0x21, 0xda, 0x7a, 0xa7, 0x32, 0x8c, 0x1d, 0x34, 0x6c, 0x89, 0x47, 0x8f, + 0x80, 0xf0, 0x8c, 0xff, 0x1a, 0x5f, 0xff, 0xef, 0xba, 0x5b, 0x29, 0x73, 0x8a, 0x14, 0xfd, 0x08, + 0xb2, 0x4c, 0x65, 0x80, 0x1c, 0x50, 0xa2, 0xa4, 0x17, 0x7a, 0xb9, 0xfe, 0x58, 0xf6, 0x69, 0x4f, + 0x82, 0x6f, 0xf6, 0xec, 0xe0, 0x27, 0x02, 0xe6, 0x35, 0x49, 0x48, 0x54, 0x5d, 0xe2, 0xfc, 0x8a, + 0x40, 0x02, 0x22, 0x18, 0xf4, 0x40, 0x65, 0x91, 0x49, 0x6a, 0x0d, 0xe0, 0xb1, 0x03, 0xa7, 0x13, + 0xa0, 0xb6, 0xc6, 0x93, 0xda, 0x2a, 0xcf, 0xbf, 0x66, 0xb9, 0x8b, 0xf8, 0xcf, 0x2f, 0x6b, 0x0e, + 0xb1, 0x4b, 0x04, 0x08, 0xf9, 0x75, 0x6d, 0x90, 0x49, 0x67, 0xcd, 0x8a, 0xe2, 0x02, 0x9d, 0x76, + 0x72, 0x6f, 0x89, 0xed, 0xed, 0xbf, 0x49, 0x9a, 0x60, 0x42, 0x79, 0x2d, 0x6c, 0xa3, 0x76, 0x3b, + 0xf1, 0x28, 0x24, 0x2a, 0xfb, 0x27, 0xe4, 0x46, 0x94, 0x46, 0x26, 0x70, 0x71, 0x2a, 0x35, 0x85, + 0x1c, 0xbd, 0x44, 0xcd, 0x3c, 0xc8, 0xf2, 0x52, 0x6d, 0x16, 0x12, 0x3b, 0x51, 0x15, 0x41, 0x00, + 0x39, 0xa2, 0x53, 0x1e, 0x41, 0x98, 0x34, 0x69, 0xc8, 0x42, 0x3d, 0xdd, 0x5b, 0x92, 0xc4, 0xdf, + 0xa7, 0x22, 0xc5, 0xc1, 0x6f, 0x07, 0x60, 0xcd, 0x9b, 0x80, 0xcf, 0x4e, 0x88, 0xad, 0xe6, 0xc3, + 0x0a, 0x3e, 0x02, 0xba, 0x52, 0x29, 0x30, 0xe2, 0xdc, 0xe1, 0x67, 0x1d, 0x3e, 0x69, 0x0d, 0x8b, + 0x18, 0x93, 0xad, 0xd4, 0x21, 0xc5, 0x4d, 0x38, 0xc8, 0x1f, 0xec, 0xf1, 0xdb, 0xa3, 0xa2, 0xf5, + 0x75, 0x42, 0xf1, 0x87, 0xe5, 0xa1, 0xdf, 0x44, 0x6c, 0xa4, 0xa3, 0x05, 0x37, 0x99, 0x74, 0x2f, + 0x81, 0x93, 0xcb, 0xeb, 0x21, 0xae, 0xa7, 0x05, 0x44, 0xb3, 0x4a, 0x15, 0xed, 0x7c, 0x25, 0xe0, + 0xb4, 0x46, 0xf7, 0x56, 0xfe, 0x80, 0xb6, 0x9f, 0x1c, 0xb8, 0xf8, 0x36, 0xc9, 0x1a, 0x1f, 0x5d, + 0x38, 0xe3, 0x24, 0x62, 0x31, 0x95, 0xf8, 0x67, 0x5a, 0xdb, 0xe4, 0x24, 0x30, 0x8f, 0x8b, 0xb6, + 0xa5, 0xb2, 0xa5, 0x4d, 0x1d, 0x10, 0x1a, 0xa8, 0x68, 0x01, 0xd0, 0x9e, 0xc3, 0x2f, 0xaf, 0x2a, + 0x05, 0xcc, 0xac, 0xb1, 0x5b, 0xbe, 0x72, 0x72, 0x0e, 0xf1, 0xb3, 0x51, 0x0e, 0x7a, 0x18, 0x93, + 0x3f, 0x57, 0xc2, 0x6b, 0x13, 0xae, 0x2b, 0xcf, 0xa5, 0x6b, 0x30, 0x49, 0xe5, 0x8f, 0xbb, 0xf2, + 0x6c, 0xe3, 0x87, 0xdf, 0x21, 0x34, 0x3e, 0x25, 0xee, 0x7d, 0x6e, 0x56, 0x01, 0xbe, 0x03, 0xd0, + 0x3c, 0xce, 0x09, 0x6b, 0x6e, 0x6a, 0x1c, 0x04, 0xb7, 0x4a, 0xc6, 0xc0, 0x40, 0xad, 0xdc, 0x3d, + 0x1d, 0xb2, 0x44, 0x84, 0x3e, 0x25, 0x2c, 0x63, 0x87, 0x26, 0x0d, 0x80, 0x33, 0xe8, 0xc5, 0xf6, + 0x7d, 0x54, 0x0a, 0xad, 0xe9, 0x92, 0x49, 0xdf, 0xe2, 0x43, 0x03, 0x87, 0x45, 0xd3, 0x76, 0xac, + 0x3c, 0x61, 0x5a, 0x66, 0xc5, 0x22, 0x27, 0xff, 0x22, 0xe3, 0x2d, 0x46, 0x9e, 0xaf, 0x21, 0x3f, + 0xc0, 0x91, 0x97, 0x1a, 0xcd, 0x8d, 0x0d, 0xb2, 0x0c, 0xfc, 0x91, 0xc4, 0x9a, 0x73, 0xb4, 0x01, + 0x18, 0xd6, 0xec, 0xa5, 0xad, 0x13, 0xb5, 0x7e, 0xae, 0xab, 0xaa, 0xf7, 0xce, 0xdf, 0x52, 0x2e, + 0xf3, 0x5f, 0x38, 0xef, 0x90, 0x68, 0xd6, 0xe9, 0x5a, 0x89, 0x70, 0xe8, 0x0f, 0x42, 0xe6, 0x89, + 0xb9, 0x79, 0xf9, 0xb8, 0x46, 0xbc, 0x0d, 0x8e, 0x9d, 0x22, 0x77, 0x07, 0x57, 0xcb, 0x5e, 0x46, + 0x9a, 0x9b, 0x4f, 0x44, 0x65, 0x1f, 0x7e, 0x8f, 0xfd, 0xce, 0x7a, 0x32, 0xb4, 0x50, 0x6b, 0x27, + 0xd3, 0xc7, 0x3c, 0xd9, 0x9d, 0xce, 0x4b, 0x25, 0xac, 0x43, 0x9d, 0x2c, 0x97, 0x20, 0xa8, 0x6f, + 0x11, 0x5a, 0xc4, 0x31, 0x4f, 0x2b, 0x65, 0x0b, 0x4a, 0xcf, 0x06, 0x2d, 0xe8, 0x40, 0x87, 0x87, + 0xf8, 0xd7, 0xff, 0x29, 0xa5, 0xf7, 0x61, 0xc0, 0x8a, 0x2f, 0x69, 0x4a, 0x55, 0x05, 0xb1, 0xaf, + 0x8a, 0x9a, 0xbf, 0xae, 0xe7, 0x40, 0x08, 0xa9, 0x89, 0xe1, 0x9c, 0xc0, 0x35, 0x17, 0xa6, 0x61, + 0x23, 0x70, 0xe0, 0x90, 0x51, 0x32, 0x0d, 0x5e, 0x8b, 0x2b, 0xb5, 0xab, 0xec, 0xa9, 0xbf, 0x22, + 0x98, 0x4b, 0xdb, 0x14, 0x81, 0x97, 0x38, 0x95, 0xf0, 0x1c, 0x2e, 0xe5, 0x74, 0x74, 0x21, 0x5a, + 0x69, 0xb6, 0xfd, 0x96, 0x53, 0x62, 0x91, 0x30, 0x2f, 0x95, 0xf8, 0x91, 0xac, 0xff, 0x11, 0x9f, + 0x02, 0x15, 0xf7, 0x0b, 0xf3, 0xf0, 0xf2, 0x2d, 0xa1, 0x83, 0xa5, 0x15, 0x34, 0xee, 0xfa, 0x61, + 0x32, 0xfd, 0xb7, 0x29, 0x3e, 0xbe, 0x95, 0x2c, 0xe2, 0x95, 0x16, 0x27, 0x73, 0xd9, 0x74, 0xce, + 0x1b, 0x07, 0xf8, 0x5f, 0x25, 0x77, 0x7a, 0xf2, 0xbe, 0x22, 0x60, 0x7f, 0x58, 0x2b, 0x6c, 0x95, + 0x22, 0x92, 0x33, 0xba, 0xa3, 0xd8, 0x87, 0x58, 0x29, 0xa0, 0x69, 0x01, 0xd9, 0x51, 0x87, 0x01 +}; + +static const char *g_asyKeyGeneratorBySpecClass = "HcfAsyKeyGeneratorBySpec"; + +static const char *g_rsaAlgName = "RSA"; + +void RemoveLastChar(const unsigned char *str, unsigned char *dest, uint32_t destLen); +void EndianSwap(unsigned char *pData, int startIndex, int length); + +// 512 defined the length of byte array +void GenerateRsa512CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec); +void GenerateRsa512CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec); +void GenerateRsa512CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec); + +// 768 defined the length of byte array +void GenerateRsa768CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec); +void GenerateRsa768CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec); +void GenerateRsa768CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec); + +// 1024 defined the length of byte array +void GenerateRsa1024CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec); +void GenerateRsa1024CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec); +void GenerateRsa1024CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec); + +// 2048 defined the length of byte array +void GenerateRsa2048CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec); +void GenerateRsa2048CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec); +void GenerateRsa2048CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec); + +// 3072 defined the length of byte array +void GenerateRsa3072CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec); +void GenerateRsa3072CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec); +void GenerateRsa3072CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec); + +// 4096 defined the length of byte array +void GenerateRsa4096CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec); +void GenerateRsa4096CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec); +void GenerateRsa4096CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec); + +// 8192 defined the length of byte array +void GenerateRsa8192CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec); +void GenerateRsa8192CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec); +void GenerateRsa8192CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec); + +bool CheckGeneratorBySpecKeyFunc(HcfAsyKeyGeneratorBySpec *generator); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/test/unittest/include/sm4_common.h b/test/unittest/include/sm4_common.h new file mode 100644 index 0000000..e3609bf --- /dev/null +++ b/test/unittest/include/sm4_common.h @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef SM4_COMMON_H +#define SM4_COMMON_H + +#include "algorithm_parameter.h" +#include "blob.h" +#include "cipher.h" +#include "sym_key.h" + +#ifdef __cplusplus +extern "C" { +#endif + +static constexpr int32_t PLAINTEXT_LEN = 13; +static constexpr int32_t CIPHER_TEXT_LEN = 128; +static constexpr int32_t AES_IV_LEN = 16; // iv for CBC|CTR|OFB|CFB mode + +HcfResult GenerateSm4SymKey(HcfSymKey **key); +int32_t GenerateSymKeyForSm4(const char *algoName, HcfSymKey **key); + +// use ECB, test abnormal input +int32_t Sm4EncryptWithInput(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, + uint8_t *cipherText, int *cipherTextLen); + +// test encrypt and decrypt with null plain text +int32_t Sm4DecryptEmptyMsg(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen); +int32_t Sm4Encrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int *cipherTextLen); +int32_t Sm4Decrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen); +int32_t Sm4NoUpdateEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int *cipherTextLen); +int32_t Sm4NoUpdateDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen); +const char *GetMockClass(void); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/test/unittest/src/aes_cipher/aes_common.cpp b/test/unittest/src/aes_cipher/aes_common.cpp new file mode 100644 index 0000000..5bcccdd --- /dev/null +++ b/test/unittest/src/aes_cipher/aes_common.cpp @@ -0,0 +1,514 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "aes_common.h" +#include +#include +#include "securec.h" + +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" + +using namespace std; + +void PrintfHex(const char *tag, uint8_t *in, int inLen) +{ + if (!IS_DEBUG) { + return; + } + printf("%s:\n", tag); + for (int i = 0; i < inLen; i++) { + printf("%02hhX", in[i]); + } + printf("\n"); +} + +int32_t GenerateSymKey(const char *algoName, HcfSymKey **key) +{ + HcfSymKeyGenerator *generator = nullptr; + + int32_t ret = HcfSymKeyGeneratorCreate(algoName, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + return ret; + } + + ret = generator->generateSymKey(generator, key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + HcfObjDestroy((HcfObjectBase *)generator); + return ret; +} + +int32_t ConvertSymKey(const char *algoName, HcfSymKey **key) +{ + HcfSymKeyGenerator *generator = nullptr; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = {.data = (uint8_t *)keyMaterial, .len = 16}; + + int32_t ret = HcfSymKeyGeneratorCreate(algoName, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + return ret; + } + + ret = generator->convertSymKey(generator, &keyTmpBlob, key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + PrintfHex("keybinary", keyTmpBlob.data, keyTmpBlob.len); + HcfObjDestroy((HcfObjectBase *)generator); + return ret; +} + +/* just rand data fill file for test */ +int32_t GeneratorFile(const char *fileName, int32_t genFileSize) +{ + if (genFileSize == 0) { + return 0; + } + uint8_t buffer[FILE_BLOCK_SIZE] = {0}; + std::ifstream file(fileName); + + if (file.good()) { + file.close(); + return 0; + } + ofstream outfile(fileName, ios::out|ios::binary|ios::app); + if (outfile.is_open()) { + while (genFileSize) { + for (uint32_t i = 0; i < FILE_BLOCK_SIZE; i++) { + buffer[i] = (rand() % RAND_MAX_NUM) + 1; + } + genFileSize -= FILE_BLOCK_SIZE; + outfile.write(reinterpret_cast(buffer), FILE_BLOCK_SIZE); + } + outfile.close(); + } + return 0; +} + +int32_t CompareFileContent() +{ + int32_t ret = -1; + ifstream infile1; + ifstream infile2; + infile1.open("/data/test_aes.txt", ios::in|ios::binary); + infile1.seekg (0, infile1.end); + uint32_t length1 = infile1.tellg(); + infile1.seekg (0, infile1.beg); + + infile2.open("/data/test_aes_new.txt", ios::in|ios::binary); + infile2.seekg (0, infile2.end); + uint32_t length2 = infile2.tellg(); + infile2.seekg (0, infile2.beg); + if (length1 != length2) { + return ret; + } + uint8_t buffer1[FILE_BLOCK_SIZE] = {0}; + uint8_t buffer2[FILE_BLOCK_SIZE] = {0}; + for (uint32_t i = 0; i < length1 / FILE_BLOCK_SIZE; i++) { + infile1.read(reinterpret_cast(buffer1), FILE_BLOCK_SIZE); + infile2.read(reinterpret_cast(buffer2), FILE_BLOCK_SIZE); + ret = memcmp(buffer1, buffer2, FILE_BLOCK_SIZE); + if (ret != 0) { + goto CLEAR_UP; + } + } +CLEAR_UP: + infile1.close(); + infile2.close(); + return ret; +} + +int32_t AesMultiBlockEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params) +{ + HcfBlob output = {}; + ifstream infile; + ofstream outfile; + infile.open("/data/test_aes.txt", ios::in|ios::binary); + infile.seekg (0, infile.end); + uint32_t length = infile.tellg(); + infile.seekg (0, infile.beg); + uint8_t buffer[1024] = {0}; + outfile.open("/data/test_aes_enc.txt", ios::out|ios::binary); + HcfBlob input = {.data = (uint8_t *)buffer, .len = FILE_BLOCK_SIZE}; + uint32_t count = length / FILE_BLOCK_SIZE; + + int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! %d", ret); + goto CLEAR_UP; + } + for (uint32_t i = 0; i < count; i++) { + infile.read(reinterpret_cast(buffer), FILE_BLOCK_SIZE); + ret = cipher->update(cipher, &input, &output); + if (ret != 0) { + LOGE("update failed!"); + goto CLEAR_UP; + } + if (output.data != nullptr && output.len > 0) { + outfile.write(reinterpret_cast(output.data), output.len); + } + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } + } + ret = cipher->doFinal(cipher, nullptr, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + goto CLEAR_UP; + } + if (output.data != nullptr && output.len > 0) { + outfile.write((const char *)output.data, output.len); + } + + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } +CLEAR_UP: + outfile.close(); + infile.close(); + + return ret; +} + +int32_t AesMultiBlockDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params) +{ + HcfBlob output = {}; + ifstream infile; + ofstream outfile; + infile.open("/data/test_aes_enc.txt", ios::in|ios::binary); + infile.seekg (0, infile.end); + uint32_t length = infile.tellg(); + infile.seekg (0, infile.beg); + uint8_t buffer[1024] = {0}; + outfile.open("/data/test_aes_new.txt", ios::out|ios::binary); + HcfBlob input = {.data = (uint8_t *)buffer, .len = FILE_BLOCK_SIZE}; + + uint32_t count = length / FILE_BLOCK_SIZE; + int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! %d", ret); + goto CLEAR_UP; + } + for (uint32_t i = 0; i < count; i++) { + infile.read(reinterpret_cast(buffer), FILE_BLOCK_SIZE); + ret = cipher->update(cipher, &input, &output); + if (ret != 0) { + LOGE("update failed!"); + goto CLEAR_UP; + } + if (output.data != nullptr && output.len > 0) { + outfile.write(reinterpret_cast(output.data), output.len); + } + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } + } + ret = cipher->doFinal(cipher, nullptr, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + goto CLEAR_UP; + } + if (output.data != nullptr && output.len > 0) { + outfile.write((const char *)output.data, output.len); + } + + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } +CLEAR_UP: + outfile.close(); + infile.close(); + + return ret; +} + +// use ECB, test abnormal input +int32_t AesEncryptWithInput(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, + uint8_t *cipherText, int *cipherTextLen) +{ + HcfBlob output = { .data = nullptr, .len = 0 }; + int32_t maxLen = *cipherTextLen; + int32_t ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! %d", ret); + return ret; + } + + ret = cipher->update(cipher, input, &output); + if (ret != 0) { + LOGE("update failed!"); + return ret; + } + *cipherTextLen = output.len; + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + HcfBlobDataFree(&output); + } + + ret = cipher->doFinal(cipher, nullptr, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText + *cipherTextLen, maxLen - *cipherTextLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + *cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + + PrintfHex("ciphertext", cipherText, *cipherTextLen); + return 0; +} + +int32_t AesEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int *cipherTextLen) +{ + uint8_t plainText[] = "this is test!"; + HcfBlob input = {.data = (uint8_t *)plainText, .len = 13}; + HcfBlob output = {}; + int32_t maxLen = *cipherTextLen; + int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! %d", ret); + return ret; + } + + ret = cipher->update(cipher, &input, &output); + if (ret != 0) { + LOGE("update failed!"); + return ret; + } + *cipherTextLen = output.len; + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + HcfBlobDataFree(&output); + } + + ret = cipher->doFinal(cipher, nullptr, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText + *cipherTextLen, maxLen - *cipherTextLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + *cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + + PrintfHex("ciphertext", cipherText, *cipherTextLen); + return 0; +} + +int32_t AesDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen) +{ + uint8_t plainText[] = "this is test!"; + HcfBlob input = {.data = (uint8_t *)cipherText, .len = cipherTextLen}; + HcfBlob output = {}; + int32_t maxLen = cipherTextLen; + int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! %d", ret); + return ret; + } + + ret = cipher->update(cipher, &input, &output); + if (ret != 0) { + LOGE("update failed!"); + return ret; + } + cipherTextLen = output.len; + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + HcfBlobDataFree(&output); + } + + ret = cipher->doFinal(cipher, nullptr, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText + cipherTextLen, maxLen - cipherTextLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + + PrintfHex("plainText", cipherText, cipherTextLen); + if (cipherTextLen != sizeof(plainText) - 1) { + return -1; + } + return memcmp(cipherText, plainText, cipherTextLen); +} + +int32_t AesNoUpdateEncWithInput(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, + uint8_t *cipherText, int *cipherTextLen) +{ + HcfBlob output = { .data = nullptr, .len = 0 }; + int32_t maxLen = *cipherTextLen; + int32_t ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! %d", ret); + return ret; + } + + *cipherTextLen = 0; + ret = cipher->doFinal(cipher, input, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + *cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + + PrintfHex("ciphertext", cipherText, *cipherTextLen); + return 0; +} + +// test encrypt and decrypt with null plain text +int32_t AesDecryptEmptyMsg(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen) +{ + HcfBlob input = { .data = cipherText, .len = cipherTextLen }; + HcfBlob output = { .data = nullptr, .len = 0 }; + int32_t ret = cipher->init(cipher, DECRYPT_MODE, &(key->key), params); + if (ret != 0) { + LOGE("init failed! %d", ret); + return ret; + } + + ret = cipher->doFinal(cipher, &input, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.len == 0 && output.data == nullptr) { + ret = 0; + } else { + ret = -1; + } + HcfBlobDataFree(&output); + return ret; +} + +int32_t AesNoUpdateEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int *cipherTextLen) +{ + uint8_t plainText[] = "this is test!"; + HcfBlob input = {.data = (uint8_t *)plainText, .len = 13}; + HcfBlob output = {}; + int32_t maxLen = *cipherTextLen; + int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! %d", ret); + return ret; + } + + *cipherTextLen = 0; + ret = cipher->doFinal(cipher, &input, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + *cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + + PrintfHex("ciphertext", cipherText, *cipherTextLen); + return 0; +} + +int32_t AesNoUpdateDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen) +{ + uint8_t plainText[] = "this is test!"; + HcfBlob input = {.data = (uint8_t *)cipherText, .len = cipherTextLen}; + HcfBlob output = {}; + int32_t maxLen = cipherTextLen; + int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! %d", ret); + return ret; + } + + cipherTextLen = 0; + ret = cipher->doFinal(cipher, &input, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + + PrintfHex("plainText", cipherText, cipherTextLen); + if (cipherTextLen != sizeof(plainText) - 1) { + return -1; + } + return memcmp(cipherText, plainText, cipherTextLen); +} \ No newline at end of file diff --git a/test/unittest/src/aes_cipher/crypto_aes_cbc_cipher_test.cpp b/test/unittest/src/aes_cipher/crypto_aes_cbc_cipher_test.cpp new file mode 100644 index 0000000..084b004 --- /dev/null +++ b/test/unittest/src/aes_cipher/crypto_aes_cbc_cipher_test.cpp @@ -0,0 +1,486 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" + +#include "aes_common.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoAesCbcCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +HWTEST_F(CryptoAesCbcCipherTest, CryptoAesCbcCipherTest001, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CBC|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCbcCipherTest, CryptoAesCbcCipherTest002, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CBC|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCbcCipherTest, CryptoAesCbcCipherTest003, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CBC|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCbcCipherTest, CryptoAesCbcCipherTest004, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CBC|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCbcCipherTest, CryptoAesCbcCipherTest005, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CBC|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCbcCipherTest, CryptoAesCbcCipherTest006, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CBC|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCbcCipherTest, CryptoAesCbcCipherTest007, TestSize.Level0) +{ + int ret = 0; + HcfIvParamsSpec ivSpec = {}; + uint8_t iv[16] = {0}; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); + if (ret != 0) { + LOGE("GeneratorFile failed!"); + goto CLEAR_UP; + } + + ret = ConvertSymKey("AES128", &key); + if (ret != 0) { + LOGE("ConvertSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CBC|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesMultiBlockEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesMultiBlockDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + ret = CompareFileContent(); + if (ret != 0) { + LOGE("CompareFileContent failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCbcCipherTest, CryptoAesCbcCipherTest008, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|CBC|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCbcCipherTest, CryptoAesCbcCipherTest009, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|CBC|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/aes_cipher/crypto_aes_ccm_cipher_test.cpp b/test/unittest/src/aes_cipher/crypto_aes_ccm_cipher_test.cpp new file mode 100644 index 0000000..b780128 --- /dev/null +++ b/test/unittest/src/aes_cipher/crypto_aes_ccm_cipher_test.cpp @@ -0,0 +1,625 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" + +#include "aes_common.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoAesCcmCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest001, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[12] = {0}; + uint8_t iv[7] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed!"); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); + PrintfHex("ccm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 12; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest002, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[12] = {0}; + uint8_t iv[7] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed!"); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); + PrintfHex("ccm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 12; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest003, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[12] = {0}; + uint8_t iv[7] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed!"); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); + PrintfHex("ccm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 12; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest004, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[12] = {0}; + uint8_t iv[7] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed!"); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); + PrintfHex("ccm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 12; + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest005, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[12] = {0}; + uint8_t iv[7] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed!"); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); + PrintfHex("ccm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 12; + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest006, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[12] = {0}; + uint8_t iv[7] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed!"); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); + PrintfHex("ccm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 12; + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest007, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[CCM_AAD_LEN] = { 0 }; + uint8_t tag[CCM_TAG_LEN] = { 0 }; + uint8_t iv[CCM_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|CCM|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed!"); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, CCM_TAG_LEN, cipherText + cipherTextLen - CCM_TAG_LEN, CCM_TAG_LEN); + PrintfHex("ccm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= CCM_TAG_LEN; + + ret = AesDecrypt(cipher, key, &(spec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest008, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[CCM_AAD_LEN] = { 0 }; + uint8_t tag[CCM_TAG_LEN] = { 0 }; + uint8_t iv[CCM_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|CCM|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed!"); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, CCM_TAG_LEN, cipherText + cipherTextLen - CCM_TAG_LEN, CCM_TAG_LEN); + PrintfHex("ccm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= CCM_TAG_LEN; + + ret = AesDecrypt(cipher, key, &(spec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest009, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest010, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[CCM_AAD_LEN] = { 0 }; + uint8_t tag[CCM_TAG_LEN] = { 0 }; + uint8_t iv[CCM_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = nullptr; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest011, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[CCM_AAD_LEN] = { 0 }; + uint8_t tag[CCM_TAG_LEN] = { 0 }; + uint8_t iv[CCM_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = nullptr; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCcmCipherTest, CryptoAesCcmCipherTest012, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[CCM_AAD_LEN] = { 0 }; + uint8_t tag[CCM_TAG_LEN] = { 0 }; + uint8_t iv[CCM_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = nullptr; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/aes_cipher/crypto_aes_cfb_cipher_test.cpp b/test/unittest/src/aes_cipher/crypto_aes_cfb_cipher_test.cpp new file mode 100644 index 0000000..eed1503 --- /dev/null +++ b/test/unittest/src/aes_cipher/crypto_aes_cfb_cipher_test.cpp @@ -0,0 +1,1723 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" + +#include "aes_common.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoAesCfbCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest001, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest002, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest003, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest004, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB1|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest005, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB1|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest006, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB1|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest007, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB8|NoPadding", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest008, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB8|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest009, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB8|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest010, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB128|NoPadding", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest011, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB128|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest012, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB128|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest013, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest014, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest015, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest016, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB1|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest017, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB1|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest018, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB1|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest019, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB8|NoPadding", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest020, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB8|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest021, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB8|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest022, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB128|NoPadding", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest023, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB128|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest024, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + + ret = HcfCipherCreate("AES128|CFB128|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest025, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CFB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); + if (ret != 0) { + LOGE("GeneratorFile failed!"); + goto CLEAR_UP; + } + + ret = AesMultiBlockEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesMultiBlockDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + ret = CompareFileContent(); + if (ret != 0) { + LOGE("CompareFileContent failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest026, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|CFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest027, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|CFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest028, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|CFB1|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest029, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|CFB1|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest030, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|CFB8|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest031, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|CFB8|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest032, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|CFB128|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest033, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|CFB128|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest034, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + const char *cipherName = "AES128|CFB|NoPadding"; + const char *retAlgo = nullptr; + ret = HcfCipherCreate(cipherName, &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + retAlgo = cipher->getAlgorithm(cipher); + if (retAlgo == nullptr) { + LOGE("cipher getAlgorithm failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + goto CLEAR_UP; + } + + ret = strcmp(retAlgo, cipherName); + if (ret != 0) { + LOGE("cipher getAlgorithm failed!"); + } +CLEAR_UP: + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest035, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + const char *cipherName = "AES128|CFB|NoPadding"; + const char *retAlgo = nullptr; + ret = HcfCipherCreate(cipherName, &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + retAlgo = cipher->getAlgorithm(nullptr); + if (retAlgo == nullptr) { + LOGE("cipher getAlgorithm failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCfbCipherTest, CryptoAesCfbCipherTest036, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKeyGenerator *generator = nullptr; + const char *cipherName = "AES128|CFB|NoPadding"; + const char *retAlgo = nullptr; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = HcfCipherCreate(cipherName, &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + retAlgo = cipher->getAlgorithm(reinterpret_cast(generator)); + if (retAlgo == nullptr) { + LOGE("cipher getAlgorithm failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(generator); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/aes_cipher/crypto_aes_cipher_test.cpp b/test/unittest/src/aes_cipher/crypto_aes_cipher_test.cpp new file mode 100644 index 0000000..015b589 --- /dev/null +++ b/test/unittest/src/aes_cipher/crypto_aes_cipher_test.cpp @@ -0,0 +1,873 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" + +#include "aes_common.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoAesCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest001, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + const char *inputAlgoName = "AES128"; + const char *generatorAlgoName = nullptr; + + ret = HcfSymKeyGeneratorCreate(inputAlgoName, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + // generator getAlgoName + generatorAlgoName = generator->getAlgoName(generator); + if (generatorAlgoName == nullptr) { + LOGE("generator getAlgoName returns nullptr."); + ret = HCF_ERR_CRYPTO_OPERATION; + goto CLEAR_UP; + } + + ret = strcmp(generatorAlgoName, inputAlgoName); + if (ret != 0) { + LOGE("generator getAlgoName failed!"); + } +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest002, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + const char *generatorAlgoName = nullptr; + const char *inputAlgoName = "AES128"; + + ret = HcfSymKeyGeneratorCreate(inputAlgoName, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + // generator getAlgoName + generatorAlgoName = generator->getAlgoName(nullptr); + if (generatorAlgoName == nullptr) { + LOGE("generator getAlgoName failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest003, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + const char *generatorAlgoName = nullptr; + const char *inputAlgoName = "AES128"; + + ret = HcfSymKeyGeneratorCreate(inputAlgoName, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + // generator getAlgoName + generatorAlgoName = generator->getAlgoName(reinterpret_cast(key)); + if (generatorAlgoName == nullptr) { + LOGE("generator getAlgoName failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest004, TestSize.Level0) +{ + int ret = 0; + HcfSymKey *key = nullptr; + const char *inputAlgoName = "AES128"; + const char *keyAlgoName = nullptr; + + ret = GenerateSymKey(inputAlgoName, &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + // key getAlgorithm + keyAlgoName = key->key.getAlgorithm(&(key->key)); + if (keyAlgoName == nullptr) { + LOGE("key getAlgorithm returns nullptr."); + ret = HCF_ERR_CRYPTO_OPERATION; + goto CLEAR_UP; + } + + ret = strcmp(keyAlgoName, inputAlgoName); + if (ret != 0) { + LOGE("key getAlgorithm failed!"); + } +CLEAR_UP: + HcfObjDestroy(key); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest005, TestSize.Level0) +{ + int ret = 0; + HcfSymKey *key = nullptr; + const char *inputAlgoName = "AES128"; + const char *keyAlgoName = nullptr; + + ret = GenerateSymKey(inputAlgoName, &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + // key getAlgorithm + keyAlgoName = key->key.getAlgorithm(nullptr); + if (keyAlgoName == nullptr) { + LOGE("key getAlgorithm returns nullptr."); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(key); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest006, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + const char *inputAlgoName = "AES128"; + const char *keyAlgoName = nullptr; + + ret = HcfSymKeyGeneratorCreate(inputAlgoName, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + // key getAlgorithm + keyAlgoName = key->key.getAlgorithm(reinterpret_cast(generator)); + if (keyAlgoName == nullptr) { + LOGE("key getAlgorithm returns nullptr."); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest007, TestSize.Level0) +{ + int ret = 0; + HcfSymKey *key = nullptr; + const char *keyFormat = "PKCS#8"; + const char *retFormat = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + // key GetFormat + retFormat = key->key.getFormat(&(key->key)); + if (retFormat == nullptr) { + LOGE("key GetFormat returns nullptr."); + ret = HCF_ERR_CRYPTO_OPERATION; + goto CLEAR_UP; + } + + ret = strcmp(retFormat, keyFormat); + if (ret != 0) { + LOGE("key GetFormat failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest008, TestSize.Level0) +{ + int ret = 0; + HcfSymKey *key = nullptr; + const char *retFormat = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + // key getFormat + retFormat = key->key.getFormat(nullptr); + if (retFormat == nullptr) { + LOGE("key GetFormat returns nullptr."); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(key); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest009, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + const char *retFormat = nullptr; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + // key getFormat + retFormat = key->key.getFormat(reinterpret_cast(generator)); + if (retFormat == nullptr) { + LOGE("key GetFormat returns nullptr."); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest010, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + HcfBlob encodedBlob = { 0 }; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->convertSymKey(generator, &keyTmpBlob, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + // key getEncoded + ret = key->key.getEncoded(&(key->key), &encodedBlob); + if (ret != 0) { + LOGE("key GetEncoded failed."); + goto CLEAR_UP; + } + + if (encodedBlob.len != keyTmpBlob.len) { + LOGE("key GetEncoded failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + goto CLEAR_UP; + } + ret = memcmp(encodedBlob.data, keyTmpBlob.data, keyTmpBlob.len); + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + if (encodedBlob.data != nullptr) { + HcfFree(encodedBlob.data); + encodedBlob.data = nullptr; + } + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest011, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + HcfBlob encodedBlob = { 0 }; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->convertSymKey(generator, &keyTmpBlob, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + // key getEncoded + ret = key->key.getEncoded(nullptr, &encodedBlob); + if (ret != 0) { + LOGE("key GetEncoded failed."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + if (encodedBlob.data != nullptr) { + HcfFree(encodedBlob.data); + encodedBlob.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest012, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + HcfBlob encodedBlob = { 0 }; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->convertSymKey(generator, &keyTmpBlob, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + // key getEncoded + ret = key->key.getEncoded(reinterpret_cast(generator), &encodedBlob); + if (ret != 0) { + LOGE("key GetEncoded failed."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + if (encodedBlob.data != nullptr) { + HcfFree(encodedBlob.data); + encodedBlob.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest013, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + HcfBlob encodedBlob = { 0 }; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; + SymKeyImpl *impl = nullptr; + size_t tmpLen = 0; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->convertSymKey(generator, &keyTmpBlob, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + impl = reinterpret_cast(key); + tmpLen = impl->keyMaterial.len; + impl->keyMaterial.len = 0; + + // key getEncoded + ret = key->key.getEncoded(&(key->key), &encodedBlob); + impl->keyMaterial.len = tmpLen; + if (ret != 0) { + LOGE("key GetEncoded failed."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + if (encodedBlob.data != nullptr) { + HcfFree(encodedBlob.data); + encodedBlob.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest014, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + HcfBlob encodedBlob = { 0 }; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->convertSymKey(generator, &keyTmpBlob, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + key->clearMem(nullptr); + + ret = key->key.getEncoded(&(key->key), &encodedBlob); + if (ret != 0) { + LOGE("key GetEncoded failed."); + goto CLEAR_UP; + } + if ((encodedBlob.data != nullptr) && (encodedBlob.data[0] != '\0')) { + LOGE("clearMem failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + if (encodedBlob.data != nullptr) { + HcfFree(encodedBlob.data); + encodedBlob.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest015, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + + ret = HcfSymKeyGeneratorCreate("RSA128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed! Should not select RSA for symKey generator."); + } + + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest016, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + + ret = HcfSymKeyGeneratorCreate("RSA512", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed! Should not select RSA for symKey generator."); + } + + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest017, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + + ret = HcfSymKeyGeneratorCreate("", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed! Should not select empty string for symKey generator."); + } + + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest018, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + + ret = HcfSymKeyGeneratorCreate(nullptr, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed! Should not select nullptr for symKey generator."); + } + + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest019, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + + ret = HcfSymKeyGeneratorSpiCreate(nullptr, nullptr); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorSpiCreate failed!"); + } + + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest020, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->generateSymKey(nullptr, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest021, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->convertSymKey(nullptr, &keyTmpBlob, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest022, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = 0 }; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->convertSymKey(generator, &keyTmpBlob, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest023, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + // allow input without encryption mode. It will pick the last PKCS5, and use default aes128ecb. + ret = HcfCipherCreate("AES128|NoPadding|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest024, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + // allow input without encryption mode. It will use default aes128ecb. + ret = HcfCipherCreate("AES128|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest025, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + // allow input without encryption mode. It will use default aes128ecb. + ret = HcfCipherCreate("AES128", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest026, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate("", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + } + + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest027, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate(nullptr, &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + } + + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest028, TestSize.Level0) +{ + int ret = HcfCipherAesGeneratorSpiCreate(nullptr, nullptr); + if (ret != 0) { + LOGE("HcfCipherAesGeneratorSpiCreate failed!"); + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest029, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGeneratorSpi *generator = nullptr; + HcfSymKey *key = nullptr; + SymKeyAttr attr = { .algo = HCF_ALG_AES, .keySize = AES_KEY_SIZE }; + + ret = HcfSymKeyGeneratorSpiCreate(&attr, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorSpiCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->engineGenerateSymmKey(nullptr, &key); + if (ret != 0) { + LOGE("engineGenerateSymmKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest030, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGeneratorSpi *generator = nullptr; + HcfSymKey *key = nullptr; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; + SymKeyAttr attr = { .algo = HCF_ALG_AES, .keySize = AES_KEY_SIZE }; + + ret = HcfSymKeyGeneratorSpiCreate(&attr, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorSpiCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->engineConvertSymmKey(nullptr, &keyTmpBlob, &key); + if (ret != 0) { + LOGE("engineConvertSymmKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/aes_cipher/crypto_aes_ctr_cipher_test.cpp b/test/unittest/src/aes_cipher/crypto_aes_ctr_cipher_test.cpp new file mode 100644 index 0000000..c8f0d5b --- /dev/null +++ b/test/unittest/src/aes_cipher/crypto_aes_ctr_cipher_test.cpp @@ -0,0 +1,485 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" + +#include "aes_common.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoAesCtrCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +HWTEST_F(CryptoAesCtrCipherTest, CryptoAesCtrCipherTest001, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CTR|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCtrCipherTest, CryptoAesCtrCipherTest002, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CTR|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCtrCipherTest, CryptoAesCtrCipherTest003, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CTR|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCtrCipherTest, CryptoAesCtrCipherTest004, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CTR|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCtrCipherTest, CryptoAesCtrCipherTest005, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CTR|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCtrCipherTest, CryptoAesCtrCipherTest006, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CTR|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCtrCipherTest, CryptoAesCtrCipherTest007, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = ConvertSymKey("AES128", &key); + if (ret != 0) { + LOGE("ConvertSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|CTR|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); + if (ret != 0) { + LOGE("GeneratorFile failed!"); + goto CLEAR_UP; + } + + ret = AesMultiBlockEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesMultiBlockDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + ret = CompareFileContent(); + if (ret != 0) { + LOGE("CompareFileContent failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCtrCipherTest, CryptoAesCtrCipherTest008, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|CTR|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesCtrCipherTest, CryptoAesCtrCipherTest009, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|CTR|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/aes_cipher/crypto_aes_ecb_cipher_test.cpp b/test/unittest/src/aes_cipher/crypto_aes_ecb_cipher_test.cpp new file mode 100644 index 0000000..71d96b4 --- /dev/null +++ b/test/unittest/src/aes_cipher/crypto_aes_ecb_cipher_test.cpp @@ -0,0 +1,1186 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" + +#include "aes_common.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoAesEcbCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +/** + * @tc.name: CryptoAesEcbCipherTest.CryptoAesEcbCipherTest001 + * @tc.desc: Verify whether the crypto framework is normal. + * @tc.type: FUNC + * @tc.require: I5QWEO + */ +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest001, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_NE(ret, 0); +} + +/** + * @tc.name: CryptoAesEcbCipherTest.CryptoAesEcbCipherTest002 + * @tc.desc: Verify AES128 cipher algorithm. + * @tc.type: FUNC + * @tc.require: I5QWEG + */ +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest002, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest003, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest004, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t codeCipherText[] = { + 0xF5, 0x12, 0xA0, 0x33, 0xCD, 0xCF, 0x0D, 0x32, + 0x3E, 0xFF, 0x80, 0x53, 0x89, 0xB6, 0xE4, 0xFE + }; + + ret = ConvertSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = memcmp(cipherText, codeCipherText, cipherTextLen); + if (ret != 0) { + LOGE("cipherText compare failed!"); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest005, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest006, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest007, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest008, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t codeCipherText[] = { + 0xF5, 0x12, 0xA0, 0x33, 0xCD, 0xCF, 0x0D, 0x32, + 0x3E, 0xFF, 0x80, 0x53, 0x89, 0xB6, 0xE4, 0xFE + }; + + ret = ConvertSymKey("AES128", &key); + if (ret != 0) { + LOGE("ConvertSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = memcmp(cipherText, codeCipherText, cipherTextLen); + if (ret != 0) { + LOGE("cipherText compare failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest009, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); + if (ret != 0) { + LOGE("GeneratorFile failed!"); + goto CLEAR_UP; + } + ret = ConvertSymKey("AES128", &key); + if (ret != 0) { + LOGE("ConvertSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesMultiBlockEncrypt(cipher, key, nullptr); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesMultiBlockDecrypt(cipher, key, nullptr); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + ret = CompareFileContent(); + if (ret != 0) { + LOGE("CompareFileContent failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest010, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|ECB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest011, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + key->clearMem(key); +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest012, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|ECB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + key->clearMem(key); +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest013, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->generateSymKey(reinterpret_cast(cipher), &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest014, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->convertSymKey(reinterpret_cast(cipher), &keyTmpBlob, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest015, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + // allow input with more than one padding mode. It will pick the last PKCS5. + ret = HcfCipherCreate("AES128|ECB|NoPadding|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest016, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + // It is not allowed that AES128 in key is smaller AES256 in cipher. -> now only use the size of input key. + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest017, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest018, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(nullptr, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! Should input cipher when init."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest019, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, nullptr, nullptr); + if (ret != 0) { + LOGE("init failed! Should input key when init."); + } + +CLEAR_UP: + HcfObjDestroy(cipher); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest020, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + HcfCipher *cipher = nullptr; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(reinterpret_cast(generator), ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! Should input key when init."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest021, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t plainText[] = "this is test!"; + HcfBlob input = { .data = plainText, .len = 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncryptWithInput(cipher, key, &input, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest022, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfBlob input = { .data = nullptr, .len = 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncryptWithInput(cipher, key, &input, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest023, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfBlob input = { .data = nullptr, .len = PLAINTEXT_LEN }; + HcfBlob output = { .data = nullptr, .len = 0 }; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed!"); + goto CLEAR_UP; + } + + ret = cipher->update(nullptr, &input, &output); + if (ret != 0) { + LOGE("update failed! Blob data should not be nullptr."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest024, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfBlob input = { .data = nullptr, .len = PLAINTEXT_LEN }; + HcfBlob output = { .data = nullptr, .len = 0 }; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed!"); + goto CLEAR_UP; + } + + ret = cipher->update(reinterpret_cast(key), &input, &output); + if (ret != 0) { + LOGE("update failed! Blob data should not be nullptr."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest025, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncWithInput(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest026, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t plainText[] = "this is test!"; + HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed!"); + goto CLEAR_UP; + } + + ret = cipher->doFinal(cipher, &input, nullptr); + if (ret != 0) { + LOGE("update failed! Blob data should not be nullptr."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest027, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t plainText[] = "this is test!"; + HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; + HcfBlob output = { .data = nullptr, .len = 0 }; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed!"); + goto CLEAR_UP; + } + + ret = cipher->doFinal(reinterpret_cast(key), &input, &output); + if (ret != 0) { + LOGE("update failed! Blob data should not be nullptr."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest028, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGeneratorSpi *generator = nullptr; + HcfSymKey *key = nullptr; + HcfCipher *cipher = nullptr; + SymKeyAttr attr = { .algo = HCF_ALG_AES, .keySize = AES_KEY_SIZE }; + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = HcfSymKeyGeneratorSpiCreate(&attr, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorSpiCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->engineGenerateSymmKey(reinterpret_cast(cipher), &key); + if (ret != 0) { + LOGE("engineGenerateSymmKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesEcbCipherTest, CryptoAesEcbCipherTest029, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGeneratorSpi *generator = nullptr; + HcfSymKey *key = nullptr; + uint8_t keyMaterial[] = { + 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, + 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c + }; + HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; + HcfCipher *cipher = nullptr; + SymKeyAttr attr = { .algo = HCF_ALG_AES, .keySize = AES_KEY_SIZE }; + + ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = HcfSymKeyGeneratorSpiCreate(&attr, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorSpiCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->engineConvertSymmKey(reinterpret_cast(cipher), &keyTmpBlob, &key); + if (ret != 0) { + LOGE("engineConvertSymmKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/aes_cipher/crypto_aes_gcm_cipher_test.cpp b/test/unittest/src/aes_cipher/crypto_aes_gcm_cipher_test.cpp new file mode 100644 index 0000000..b206b7e --- /dev/null +++ b/test/unittest/src/aes_cipher/crypto_aes_gcm_cipher_test.cpp @@ -0,0 +1,941 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" + +#include "aes_common.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoAesGcmCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest001, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[16] = {0}; + uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 16; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest002, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[16] = {0}; + uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 16; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest003, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[16] = {0}; + uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 16; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest004, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[16] = {0}; + uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 16; + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest005, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[16] = {0}; + uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 16; + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest006, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[16] = {0}; + uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= 16; + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest007, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[GCM_AAD_LEN] = { 0 }; + uint8_t tag[GCM_TAG_LEN] = { 0 }; + uint8_t iv[GCM_IV_LEN] = { 0 }; // openssl only support nonce 12 bytes, tag 16 bytes + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|GCM|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= GCM_TAG_LEN; + + ret = AesDecrypt(cipher, key, &(spec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest008, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[GCM_AAD_LEN] = { 0 }; + uint8_t tag[GCM_TAG_LEN] = { 0 }; + uint8_t iv[GCM_IV_LEN] = { 0 }; // openssl only support nonce 12 bytes, tag 16 bytes + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|GCM|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= GCM_TAG_LEN; + + ret = AesDecrypt(cipher, key, &(spec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest009, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate("RSA128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed! Should not select RSA for GCM generator."); + } + + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest010, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + + // not allow '|' without content, because findAbility will fail for "" input + ret = HcfCipherCreate("AES128|GCM|", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed! Should select padding mode for AES generator."); + } + + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest011, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + // CBC, CTR, OFB, CFB enc/dec success, + // GCM, CCM enc/dec failed with params set to nullptr. + ret = HcfCipherCreate("AES128|GCM|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest012, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[GCM_AAD_LEN] = { 0 }; + uint8_t tag[GCM_TAG_LEN] = { 0 }; + uint8_t iv[GCM_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = nullptr; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + } + +// now support gcm no aad. +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest013, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[GCM_AAD_LEN] = { 0 }; + uint8_t tag[GCM_TAG_LEN] = { 0 }; + uint8_t iv[GCM_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = nullptr; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest014, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[GCM_AAD_LEN] = { 0 }; + uint8_t tag[GCM_TAG_LEN] = { 0 }; + uint8_t iv[GCM_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = nullptr; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest015, TestSize.Level0) +{ + int ret = 0; + uint8_t tag[GCM_TAG_LEN] = {0}; + uint8_t iv[GCM_IV_LEN] = {0}; + uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = nullptr; + spec.aad.len = 0; + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= GCM_TAG_LEN; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest016, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[GCM_AAD_LONG_LEN] = { 0 }; + uint8_t tag[GCM_TAG_LEN] = {0}; + uint8_t iv[GCM_IV_LEN] = {0}; + uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= GCM_TAG_LEN; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest017, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[GCM_AAD_LONG_LEN] = { 0 }; + uint8_t tag[GCM_TAG_LEN] = {0}; + uint8_t iv[GCM_IV_LONG_LEN] = {0}; + uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= GCM_TAG_LEN; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest018, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[GCM_AAD_SHORT_LEN] = { 0 }; + uint8_t tag[GCM_TAG_LEN] = {0}; + // openssl only support ivLen [9, 16]; + uint8_t iv[GCM_IV_SHORT_LEN] = {0}; + uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= GCM_TAG_LEN; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesGcmCipherTest, CryptoAesGcmCipherTest019, TestSize.Level0) +{ + int ret = 0; + uint8_t tag[GCM_TAG_LEN] = {0}; + uint8_t iv[GCM_IV_LONG_LEN] = {0}; + uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + HcfGcmParamsSpec spec = {}; + spec.aad.data = nullptr; + spec.aad.len = 0; + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); + PrintfHex("gcm tag", spec.tag.data, spec.tag.len); + cipherTextLen -= GCM_TAG_LEN; + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed, ret:%d!", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/aes_cipher/crypto_aes_ofb_cipher_test.cpp b/test/unittest/src/aes_cipher/crypto_aes_ofb_cipher_test.cpp new file mode 100644 index 0000000..d9d60e4 --- /dev/null +++ b/test/unittest/src/aes_cipher/crypto_aes_ofb_cipher_test.cpp @@ -0,0 +1,483 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" + +#include "aes_common.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoAesOfbCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +HWTEST_F(CryptoAesOfbCipherTest, CryptoAesOfbCipherTest001, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|OFB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesOfbCipherTest, CryptoAesOfbCipherTest002, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|OFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesOfbCipherTest, CryptoAesOfbCipherTest003, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|OFB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + goto CLEAR_UP; + } +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesOfbCipherTest, CryptoAesOfbCipherTest004, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|OFB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesOfbCipherTest, CryptoAesOfbCipherTest005, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|OFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesOfbCipherTest, CryptoAesOfbCipherTest006, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfIvParamsSpec ivSpec = {}; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = HcfSymKeyGeneratorCreate("AES128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|OFB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesOfbCipherTest, CryptoAesOfbCipherTest007, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[16] = {0}; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = 16; + + ret = GenerateSymKey("AES128", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES128|OFB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); + if (ret != 0) { + LOGE("GeneratorFile failed!"); + goto CLEAR_UP; + } + + ret = AesMultiBlockEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec); + if (ret != 0) { + LOGE("AesNoUpdateEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesMultiBlockDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec); + if (ret != 0) { + LOGE("AesNoUpdateDecrypt failed! %d", ret); + goto CLEAR_UP; + } + ret = CompareFileContent(); + if (ret != 0) { + LOGE("CompareFileContent failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesOfbCipherTest, CryptoAesOfbCipherTest008, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES192", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES192|OFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoAesOfbCipherTest, CryptoAesOfbCipherTest009, TestSize.Level0) +{ + int ret = 0; + uint8_t iv[AES_IV_LEN] = { 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + HcfIvParamsSpec ivSpec = {}; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + ivSpec.iv.data = iv; + ivSpec.iv.len = AES_IV_LEN; + + ret = GenerateSymKey("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("AES256|OFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/alg_25519_common_param_spec.c b/test/unittest/src/alg_25519_common_param_spec.c new file mode 100644 index 0000000..1e01db0 --- /dev/null +++ b/test/unittest/src/alg_25519_common_param_spec.c @@ -0,0 +1,351 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "alg_25519_common_param_spec.h" +#include "securec.h" +#include "asy_key_generator.h" +#include "memory.h" +#include "memory_mock.h" + +static HcfResult CreateAlg25519KeyPairSpec(bool choose, HcfAlg25519KeyPairParamsSpec **alg25519KeyPairSpec) +{ + *alg25519KeyPairSpec = (HcfAlg25519KeyPairParamsSpec*)HcfMalloc(sizeof(HcfAlg25519KeyPairParamsSpec), 0); + if (*alg25519KeyPairSpec == NULL) { + return HCF_ERR_MALLOC; + } + if (choose) { + (*alg25519KeyPairSpec)->base.algName = (char*)HcfMalloc(sizeof("Ed25519"), 0); + if ((*alg25519KeyPairSpec)->base.algName == NULL) { + HcfFree(*alg25519KeyPairSpec); + *alg25519KeyPairSpec = NULL; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519KeyPairSpec)->base.algName, sizeof("Ed25519"), + "Ed25519", sizeof("Ed25519")); + } else { + (*alg25519KeyPairSpec)->base.algName = (char*)HcfMalloc(sizeof("X25519"), 0); + if ((*alg25519KeyPairSpec)->base.algName == NULL) { + HcfFree(*alg25519KeyPairSpec); + *alg25519KeyPairSpec = NULL; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519KeyPairSpec)->base.algName, sizeof("X25519"), + "X25519", sizeof("X25519")); + } + return HCF_SUCCESS; +} + +HcfResult ConstructAlg25519KeyPairParamsSpec(const char *algoName, bool choose, HcfAsyKeyParamsSpec **spec) +{ + HcfResult res = HCF_ERR_CRYPTO_OPERATION; + HcfAsyKeyGenerator *generator = NULL; + if (HcfAsyKeyGeneratorCreate(algoName, &generator) != HCF_SUCCESS) { + return res; + } + + HcfKeyPair *keyPair = NULL; + if (generator->generateKeyPair(generator, NULL, &keyPair) != HCF_SUCCESS) { + HcfObjDestroy(generator); + return res; + } + + HcfAlg25519KeyPairParamsSpec *alg25519KeyPairSpec = NULL; + if (CreateAlg25519KeyPairSpec(choose, &alg25519KeyPairSpec) == HCF_SUCCESS) { + HcfBigInteger retBigInt = { .data = NULL, .len = 0 }; + alg25519KeyPairSpec->base.specType = HCF_KEY_PAIR_SPEC; + if (choose) { + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); + } else { + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, X25519_PK_BN, &retBigInt); + } + if (res == HCF_SUCCESS) { + alg25519KeyPairSpec->pk.data = retBigInt.data; + alg25519KeyPairSpec->pk.len = retBigInt.len; + if (choose) { + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); + } else { + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, X25519_SK_BN, &retBigInt); + } + if (res == HCF_SUCCESS) { + alg25519KeyPairSpec->sk.data = retBigInt.data; + alg25519KeyPairSpec->sk.len = retBigInt.len; + *spec = (HcfAsyKeyParamsSpec *)alg25519KeyPairSpec; + } else { + HcfFree(alg25519KeyPairSpec->pk.data); + alg25519KeyPairSpec->pk.data = NULL; + alg25519KeyPairSpec->pk.len = 0; + } + } + if (res != HCF_SUCCESS) { + DestroyAlg25519KeyPairSpec((HcfAlg25519KeyPairParamsSpec *)alg25519KeyPairSpec); + } + } + + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return res; +} + +static HcfResult CreateAlg25519PubKeySpec(bool choose, HcfAlg25519PubKeyParamsSpec **alg25519PubKeySpec) +{ + *alg25519PubKeySpec = (HcfAlg25519PubKeyParamsSpec*)HcfMalloc(sizeof(HcfAlg25519PubKeyParamsSpec), 0); + if (*alg25519PubKeySpec == NULL) { + return HCF_ERR_MALLOC; + } + if (choose) { + (*alg25519PubKeySpec)->base.algName = (char*)HcfMalloc(sizeof("Ed25519"), 0); + if ((*alg25519PubKeySpec)->base.algName == NULL) { + HcfFree(*alg25519PubKeySpec); + *alg25519PubKeySpec = NULL; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519PubKeySpec)->base.algName, sizeof("Ed25519"), + "Ed25519", sizeof("Ed25519")); + } else { + (*alg25519PubKeySpec)->base.algName = (char*)HcfMalloc(sizeof("X25519"), 0); + if ((*alg25519PubKeySpec)->base.algName == NULL) { + HcfFree(*alg25519PubKeySpec); + *alg25519PubKeySpec = NULL; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519PubKeySpec)->base.algName, sizeof("X25519"), + "X25519", sizeof("X25519")); + } + return HCF_SUCCESS; +} + +HcfResult ConstructAlg25519PubKeyParamsSpec(const char *algoName, bool choose, HcfAsyKeyParamsSpec **spec) +{ + HcfResult res = HCF_ERR_CRYPTO_OPERATION; + HcfAsyKeyGenerator *generator = NULL; + if (HcfAsyKeyGeneratorCreate(algoName, &generator) != HCF_SUCCESS) { + return res; + } + + HcfKeyPair *keyPair = NULL; + if (generator->generateKeyPair(generator, NULL, &keyPair) != HCF_SUCCESS) { + HcfObjDestroy(generator); + return res; + } + + HcfAlg25519PubKeyParamsSpec *alg25519PubKeySpec = NULL; + if (CreateAlg25519PubKeySpec(choose, &alg25519PubKeySpec) == HCF_SUCCESS) { + HcfBigInteger retBigInt = { .data = NULL, .len = 0 }; + alg25519PubKeySpec->base.specType = HCF_PUBLIC_KEY_SPEC; + if (choose) { + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); + } else { + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, X25519_PK_BN, &retBigInt); + } + if (res == HCF_SUCCESS) { + alg25519PubKeySpec->pk.data = retBigInt.data; + alg25519PubKeySpec->pk.len = retBigInt.len; + *spec = (HcfAsyKeyParamsSpec *)alg25519PubKeySpec; + } else { + DestroyAlg25519PubKeySpec((HcfAlg25519PubKeyParamsSpec *)alg25519PubKeySpec); + } + } + + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return res; +} + +static HcfResult CreateAlg25519PriKeySpec(bool choose, HcfAlg25519PriKeyParamsSpec **alg25519PriKeySpec) +{ + *alg25519PriKeySpec = (HcfAlg25519PriKeyParamsSpec*)HcfMalloc(sizeof(HcfAlg25519PriKeyParamsSpec), 0); + if (*alg25519PriKeySpec == NULL) { + return HCF_ERR_MALLOC; + } + if (choose) { + (*alg25519PriKeySpec)->base.algName = (char*)HcfMalloc(sizeof("Ed25519"), 0); + if ((*alg25519PriKeySpec)->base.algName == NULL) { + HcfFree(*alg25519PriKeySpec); + *alg25519PriKeySpec = NULL; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519PriKeySpec)->base.algName, sizeof("Ed25519"), + "Ed25519", sizeof("Ed25519")); + } else { + (*alg25519PriKeySpec)->base.algName = (char*)HcfMalloc(sizeof("X25519"), 0); + if ((*alg25519PriKeySpec)->base.algName == NULL) { + HcfFree(*alg25519PriKeySpec); + *alg25519PriKeySpec = NULL; + return HCF_ERR_MALLOC; + } + (void)memcpy_s((*alg25519PriKeySpec)->base.algName, sizeof("X25519"), + "X25519", sizeof("X25519")); + } + return HCF_SUCCESS; +} + +HcfResult ConstructAlg25519PriKeyParamsSpec(const char *algoName, bool choose, HcfAsyKeyParamsSpec **spec) +{ + HcfResult res = HCF_ERR_CRYPTO_OPERATION; + HcfAsyKeyGenerator *generator = NULL; + if (HcfAsyKeyGeneratorCreate(algoName, &generator) != HCF_SUCCESS) { + return res; + } + + HcfKeyPair *keyPair = NULL; + if (generator->generateKeyPair(generator, NULL, &keyPair) != HCF_SUCCESS) { + HcfObjDestroy(generator); + return res; + } + HcfAlg25519PriKeyParamsSpec *alg25519PriKeySpec = NULL; + if (CreateAlg25519PriKeySpec(choose, &alg25519PriKeySpec) == HCF_SUCCESS) { + HcfBigInteger retBigInt = { .data = NULL, .len = 0 }; + alg25519PriKeySpec->base.specType = HCF_PRIVATE_KEY_SPEC; + if (choose) { + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); + } else { + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, X25519_SK_BN, &retBigInt); + } + if (res == HCF_SUCCESS) { + alg25519PriKeySpec->sk.data = retBigInt.data; + alg25519PriKeySpec->sk.len = retBigInt.len; + *spec = (HcfAsyKeyParamsSpec *)alg25519PriKeySpec; + } else { + DestroyAlg25519PriKeySpec((HcfAlg25519PriKeyParamsSpec *)alg25519PriKeySpec); + } + } + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return res; +} + +HcfResult TestHcfAsyKeyGeneratorCreate(const char *algName, HcfAsyKeyGenerator **generator) +{ + HcfResult res = HcfAsyKeyGeneratorCreate(algName, generator); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*generator == NULL) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} + +HcfResult TestGenerateKeyPair(HcfAsyKeyGenerator *generator, HcfKeyPair **keyPair) +{ + HcfResult res = generator->generateKeyPair(generator, NULL, keyPair); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*keyPair == NULL) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} + +HcfResult TestKeyGeneratorAndGenerateKeyPair(const char *algName, HcfAsyKeyGenerator **generator, HcfKeyPair **keyPair) +{ + HcfResult res = TestHcfAsyKeyGeneratorCreate(algName, generator); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + res = TestGenerateKeyPair(*generator, keyPair); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} + +HcfResult TestGenerateConvertKey(HcfAsyKeyGenerator *generator, HcfBlob *pubKeyBlob, HcfBlob *priKeyBlob, + HcfKeyPair **keyPair) +{ + HcfResult res = generator->convertKey(generator, NULL, pubKeyBlob, priKeyBlob, keyPair); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*keyPair == NULL) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} + +HcfResult TestGenerateKeyPairAndConvertKey(const char *algName, HcfAsyKeyGenerator **generator, HcfBlob *pubKeyBlob, + HcfBlob *priKeyBlob, HcfKeyPair **keyPair) +{ + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(algName, generator, keyPair); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + res = TestGenerateConvertKey(*generator, pubKeyBlob, priKeyBlob, keyPair); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} + +HcfResult TestCreateKeyPairParamsSpecAndGeneratorBySpec(const char *algName, bool choose, + HcfAsyKeyParamsSpec **paramSpec, HcfAsyKeyGeneratorBySpec **generator) +{ + HcfResult res = ConstructAlg25519KeyPairParamsSpec(algName, choose, paramSpec); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*paramSpec == NULL) { + return HCF_ERR_CRYPTO_OPERATION; + } + res = HcfAsyKeyGeneratorBySpecCreate(*paramSpec, generator); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*generator == NULL) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} + +HcfResult TestCreatePubKeyParamsSpecAndGeneratorBySpec(const char *algName, bool choose, + HcfAsyKeyParamsSpec **paramSpec, HcfAsyKeyGeneratorBySpec **generator) +{ + HcfResult res = ConstructAlg25519PubKeyParamsSpec(algName, choose, paramSpec); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*paramSpec == NULL) { + return HCF_ERR_CRYPTO_OPERATION; + } + res = HcfAsyKeyGeneratorBySpecCreate(*paramSpec, generator); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*generator == NULL) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} + +HcfResult TestCreatePriKeyParamsSpecAndGeneratorBySpec(const char *algName, bool choose, + HcfAsyKeyParamsSpec **paramSpec, HcfAsyKeyGeneratorBySpec **generator) +{ + HcfResult res = ConstructAlg25519PriKeyParamsSpec(algName, choose, paramSpec); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*paramSpec == NULL) { + return HCF_ERR_CRYPTO_OPERATION; + } + res = HcfAsyKeyGeneratorBySpecCreate(*paramSpec, generator); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*generator == NULL) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} \ No newline at end of file diff --git a/test/unittest/src/crypto_aes_cipher_test.cpp b/test/unittest/src/crypto_aes_cipher_test.cpp deleted file mode 100644 index 52eaea9..0000000 --- a/test/unittest/src/crypto_aes_cipher_test.cpp +++ /dev/null @@ -1,7006 +0,0 @@ -/* - * Copyright (C) 2022-2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include "securec.h" - -#include "aes_openssl.h" -#include "blob.h" -#include "cipher.h" -#include "detailed_iv_params.h" -#include "detailed_gcm_params.h" -#include "detailed_ccm_params.h" -#include "log.h" -#include "memory.h" -#include "sym_common_defines.h" -#include "sym_key_generator.h" - -using namespace std; -using namespace testing::ext; - -namespace { -const int32_t FILE_BLOCK_SIZE = 1024; -const int32_t RAND_MAX_NUM = 100; -const bool IS_DEBUG = false; -constexpr int32_t CIPHER_TEXT_LEN = 128; -constexpr int32_t KEY_MATERIAL_LEN = 16; -constexpr int32_t AES_IV_LEN = 16; // iv for CBC|CTR|OFB|CFB mode -constexpr int32_t GCM_IV_LEN = 12; // GCM -constexpr int32_t GCM_AAD_LEN = 8; -constexpr int32_t GCM_TAG_LEN = 16; -constexpr int32_t GCM_IV_LONG_LEN = 16; -constexpr int32_t GCM_IV_SHORT_LEN = 9; -constexpr int32_t GCM_AAD_LONG_LEN = 2049; -constexpr int32_t GCM_AAD_SHORT_LEN = 1; -constexpr int32_t CCM_IV_LEN = 7; // CCM -constexpr int32_t CCM_AAD_LEN = 8; -constexpr int32_t CCM_TAG_LEN = 12; -constexpr int32_t PLAINTEXT_LEN = 13; -constexpr int32_t AES_KEY_SIZE = 128; - -class CryptoAesCipherTest : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); - void SetUp(); - void TearDown(); -}; - -void CryptoAesCipherTest::SetUpTestCase() {} - -void CryptoAesCipherTest::TearDownTestCase() {} - -void CryptoAesCipherTest::SetUp() // add init here, this will be called before test. -{ -} - -void CryptoAesCipherTest::TearDown() // add destroy here, this will be called when test case done. -{ -} - -static void PrintfHex(const char *tag, uint8_t *in, int inLen) -{ - if (!IS_DEBUG) { - return; - } - printf("%s:\n", tag); - for (int i = 0; i < inLen; i++) { - printf("%02hhX", in[i]); - } - printf("\n"); -} - -static int32_t GenerateSymKey(const char *algoName, HcfSymKey **key) -{ - HcfSymKeyGenerator *generator = nullptr; - - int32_t ret = HcfSymKeyGeneratorCreate(algoName, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - return ret; - } - - ret = generator->generateSymKey(generator, key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - HcfObjDestroy((HcfObjectBase *)generator); - return ret; -} - -static int32_t ConvertSymKey(const char *algoName, HcfSymKey **key) -{ - HcfSymKeyGenerator *generator = nullptr; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = {.data = (uint8_t *)keyMaterial, .len = 16}; - - int32_t ret = HcfSymKeyGeneratorCreate(algoName, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - return ret; - } - - ret = generator->convertSymKey(generator, &keyTmpBlob, key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - PrintfHex("keybinary", keyTmpBlob.data, keyTmpBlob.len); - HcfObjDestroy((HcfObjectBase *)generator); - return ret; -} - -/* just rand data fill file for test */ -static int32_t GeneratorFile(const char *fileName, int32_t genFileSize) -{ - if (genFileSize == 0) { - return 0; - } - uint8_t buffer[FILE_BLOCK_SIZE] = {0}; - std::ifstream file(fileName); - - if (file.good()) { - file.close(); - return 0; - } - ofstream outfile(fileName, ios::out|ios::binary|ios::app); - if (outfile.is_open()) { - while (genFileSize) { - for (uint32_t i = 0; i < FILE_BLOCK_SIZE; i++) { - buffer[i] = (rand() % RAND_MAX_NUM) + 1; - } - genFileSize -= FILE_BLOCK_SIZE; - outfile.write(reinterpret_cast(buffer), FILE_BLOCK_SIZE); - } - outfile.close(); - } - return 0; -} - -static int32_t CompareFileContent() -{ - int32_t ret = -1; - ifstream infile1; - ifstream infile2; - infile1.open("/data/test_aes.txt", ios::in|ios::binary); - infile1.seekg (0, infile1.end); - uint32_t length1 = infile1.tellg(); - infile1.seekg (0, infile1.beg); - - infile2.open("/data/test_aes_new.txt", ios::in|ios::binary); - infile2.seekg (0, infile2.end); - uint32_t length2 = infile2.tellg(); - infile2.seekg (0, infile2.beg); - if (length1 != length2) { - return ret; - } - uint8_t buffer1[FILE_BLOCK_SIZE] = {0}; - uint8_t buffer2[FILE_BLOCK_SIZE] = {0}; - for (uint32_t i = 0; i < length1 / FILE_BLOCK_SIZE; i++) { - infile1.read(reinterpret_cast(buffer1), FILE_BLOCK_SIZE); - infile2.read(reinterpret_cast(buffer2), FILE_BLOCK_SIZE); - ret = memcmp(buffer1, buffer2, FILE_BLOCK_SIZE); - if (ret != 0) { - goto CLEAR_UP; - } - } -CLEAR_UP: - infile1.close(); - infile2.close(); - return ret; -} - -static int32_t AesMultiBlockEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params) -{ - HcfBlob output = {}; - ifstream infile; - ofstream outfile; - infile.open("/data/test_aes.txt", ios::in|ios::binary); - infile.seekg (0, infile.end); - uint32_t length = infile.tellg(); - infile.seekg (0, infile.beg); - uint8_t buffer[1024] = {0}; - outfile.open("/data/test_aes_enc.txt", ios::out|ios::binary); - HcfBlob input = {.data = (uint8_t *)buffer, .len = FILE_BLOCK_SIZE}; - uint32_t count = length / FILE_BLOCK_SIZE; - - int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! %d", ret); - goto CLEAR_UP; - } - for (uint32_t i = 0; i < count; i++) { - infile.read(reinterpret_cast(buffer), FILE_BLOCK_SIZE); - ret = cipher->update(cipher, &input, &output); - if (ret != 0) { - LOGE("update failed!"); - goto CLEAR_UP; - } - if (output.data != nullptr && output.len > 0) { - outfile.write(reinterpret_cast(output.data), output.len); - } - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } - } - ret = cipher->doFinal(cipher, nullptr, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - goto CLEAR_UP; - } - if (output.data != nullptr && output.len > 0) { - outfile.write((const char *)output.data, output.len); - } - - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } -CLEAR_UP: - outfile.close(); - infile.close(); - - return ret; -} - -static int32_t AesMultiBlockDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params) -{ - HcfBlob output = {}; - ifstream infile; - ofstream outfile; - infile.open("/data/test_aes_enc.txt", ios::in|ios::binary); - infile.seekg (0, infile.end); - uint32_t length = infile.tellg(); - infile.seekg (0, infile.beg); - uint8_t buffer[1024] = {0}; - outfile.open("/data/test_aes_new.txt", ios::out|ios::binary); - HcfBlob input = {.data = (uint8_t *)buffer, .len = FILE_BLOCK_SIZE}; - - uint32_t count = length / FILE_BLOCK_SIZE; - int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! %d", ret); - goto CLEAR_UP; - } - for (uint32_t i = 0; i < count; i++) { - infile.read(reinterpret_cast(buffer), FILE_BLOCK_SIZE); - ret = cipher->update(cipher, &input, &output); - if (ret != 0) { - LOGE("update failed!"); - goto CLEAR_UP; - } - if (output.data != nullptr && output.len > 0) { - outfile.write(reinterpret_cast(output.data), output.len); - } - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } - } - ret = cipher->doFinal(cipher, nullptr, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - goto CLEAR_UP; - } - if (output.data != nullptr && output.len > 0) { - outfile.write((const char *)output.data, output.len); - } - - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } -CLEAR_UP: - outfile.close(); - infile.close(); - - return ret; -} - -// use ECB, test abnormal input -static int32_t AesEncryptWithInput(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, - uint8_t *cipherText, int *cipherTextLen) -{ - HcfBlob output = { .data = nullptr, .len = 0 }; - int32_t maxLen = *cipherTextLen; - int32_t ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! %d", ret); - return ret; - } - - ret = cipher->update(cipher, input, &output); - if (ret != 0) { - LOGE("update failed!"); - return ret; - } - *cipherTextLen = output.len; - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - HcfBlobDataFree(&output); - } - - ret = cipher->doFinal(cipher, nullptr, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText + *cipherTextLen, maxLen - *cipherTextLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - *cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - - PrintfHex("ciphertext", cipherText, *cipherTextLen); - return 0; -} - -static int32_t AesEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int *cipherTextLen) -{ - uint8_t plainText[] = "this is test!"; - HcfBlob input = {.data = (uint8_t *)plainText, .len = 13}; - HcfBlob output = {}; - int32_t maxLen = *cipherTextLen; - int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! %d", ret); - return ret; - } - - ret = cipher->update(cipher, &input, &output); - if (ret != 0) { - LOGE("update failed!"); - return ret; - } - *cipherTextLen = output.len; - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - HcfBlobDataFree(&output); - } - - ret = cipher->doFinal(cipher, nullptr, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText + *cipherTextLen, maxLen - *cipherTextLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - *cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - - PrintfHex("ciphertext", cipherText, *cipherTextLen); - return 0; -} - -static int32_t AesDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int cipherTextLen) -{ - uint8_t plainText[] = "this is test!"; - HcfBlob input = {.data = (uint8_t *)cipherText, .len = cipherTextLen}; - HcfBlob output = {}; - int32_t maxLen = cipherTextLen; - int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! %d", ret); - return ret; - } - - ret = cipher->update(cipher, &input, &output); - if (ret != 0) { - LOGE("update failed!"); - return ret; - } - cipherTextLen = output.len; - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - HcfBlobDataFree(&output); - } - - ret = cipher->doFinal(cipher, nullptr, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText + cipherTextLen, maxLen - cipherTextLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - - PrintfHex("plainText", cipherText, cipherTextLen); - if (cipherTextLen != sizeof(plainText) - 1) { - return -1; - } - return memcmp(cipherText, plainText, cipherTextLen); -} - -static int32_t AesNoUpdateEncWithInput(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, - uint8_t *cipherText, int *cipherTextLen) -{ - HcfBlob output = { .data = nullptr, .len = 0 }; - int32_t maxLen = *cipherTextLen; - int32_t ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! %d", ret); - return ret; - } - - *cipherTextLen = 0; - ret = cipher->doFinal(cipher, input, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - *cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - - PrintfHex("ciphertext", cipherText, *cipherTextLen); - return 0; -} - -// test encrypt and decrypt with null plain text -static int32_t AesDecryptEmptyMsg(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int cipherTextLen) -{ - HcfBlob input = { .data = cipherText, .len = cipherTextLen }; - HcfBlob output = { .data = nullptr, .len = 0 }; - int32_t ret = cipher->init(cipher, DECRYPT_MODE, &(key->key), params); - if (ret != 0) { - LOGE("init failed! %d", ret); - return ret; - } - - ret = cipher->doFinal(cipher, &input, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.len == 0 && output.data == nullptr) { - ret = 0; - } else { - ret = -1; - } - HcfBlobDataFree(&output); - return ret; -} - -static int32_t AesNoUpdateEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int *cipherTextLen) -{ - uint8_t plainText[] = "this is test!"; - HcfBlob input = {.data = (uint8_t *)plainText, .len = 13}; - HcfBlob output = {}; - int32_t maxLen = *cipherTextLen; - int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! %d", ret); - return ret; - } - - *cipherTextLen = 0; - ret = cipher->doFinal(cipher, &input, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - *cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - - PrintfHex("ciphertext", cipherText, *cipherTextLen); - return 0; -} - -static int32_t AesNoUpdateDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int cipherTextLen) -{ - uint8_t plainText[] = "this is test!"; - HcfBlob input = {.data = (uint8_t *)cipherText, .len = cipherTextLen}; - HcfBlob output = {}; - int32_t maxLen = cipherTextLen; - int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! %d", ret); - return ret; - } - - cipherTextLen = 0; - ret = cipher->doFinal(cipher, &input, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - - PrintfHex("plainText", cipherText, cipherTextLen); - if (cipherTextLen != sizeof(plainText) - 1) { - return -1; - } - return memcmp(cipherText, plainText, cipherTextLen); -} - -/** - * @tc.name: CryptoAesCipherTest.CryptoAesCipherTest001 - * @tc.desc: Verify whether the crypto framework is normal. - * @tc.type: FUNC - * @tc.require: I5QWEO - */ -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest001, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_NE(ret, 0); -} - -/** - * @tc.name: CryptoAesCipherTest.CryptoAesCipherTest002 - * @tc.desc: Verify AES128 cipher algorithm. - * @tc.type: FUNC - * @tc.require: I5QWEG - */ -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest002, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest003, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest004, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CBC|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest005, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CBC|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest006, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CBC|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest007, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CTR|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest008, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CTR|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest009, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CTR|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest010, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|OFB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest011, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|OFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest012, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|OFB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest013, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest014, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest015, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest016, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB1|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest017, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB1|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest018, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB1|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest019, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB8|NoPadding", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest020, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB8|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest021, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB8|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest022, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB128|NoPadding", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest023, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB128|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest024, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB128|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest025, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[16] = {0}; - uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 16; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest026, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[16] = {0}; - uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 16; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest027, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[16] = {0}; - uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 16; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest028, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[12] = {0}; - uint8_t iv[7] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed!"); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); - PrintfHex("ccm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 12; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest029, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[12] = {0}; - uint8_t iv[7] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed!"); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); - PrintfHex("ccm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 12; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest030, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[12] = {0}; - uint8_t iv[7] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed!"); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); - PrintfHex("ccm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 12; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest031, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t codeCipherText[] = { - 0xF5, 0x12, 0xA0, 0x33, 0xCD, 0xCF, 0x0D, 0x32, - 0x3E, 0xFF, 0x80, 0x53, 0x89, 0xB6, 0xE4, 0xFE - }; - - ret = ConvertSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = memcmp(cipherText, codeCipherText, cipherTextLen); - if (ret != 0) { - LOGE("cipherText compare failed!"); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest032, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest033, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest034, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest035, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CBC|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest036, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CBC|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest037, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CBC|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest038, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CTR|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest039, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CTR|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest040, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CTR|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest041, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|OFB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest042, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|OFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest043, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|OFB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest044, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest045, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest046, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest047, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB1|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest048, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB1|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest049, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB1|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest050, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB8|NoPadding", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest051, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB8|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest052, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB8|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest053, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB128|NoPadding", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest054, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB128|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest055, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfIvParamsSpec ivSpec = {}; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - - ret = HcfCipherCreate("AES128|CFB128|PKCS7", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest056, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[16] = {0}; - uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 16; - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest057, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[16] = {0}; - uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 16; - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest058, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[16] = {0}; - uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 16, cipherText + cipherTextLen - 16, 16); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 16; - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest059, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[12] = {0}; - uint8_t iv[7] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed!"); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); - PrintfHex("ccm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 12; - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest060, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[12] = {0}; - uint8_t iv[7] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed!"); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); - PrintfHex("ccm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 12; - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest061, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[12] = {0}; - uint8_t iv[7] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed!"); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); - PrintfHex("ccm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= 12; - - ret = AesNoUpdateDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest062, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t codeCipherText[] = { - 0xF5, 0x12, 0xA0, 0x33, 0xCD, 0xCF, 0x0D, 0x32, - 0x3E, 0xFF, 0x80, 0x53, 0x89, 0xB6, 0xE4, 0xFE - }; - - ret = ConvertSymKey("AES128", &key); - if (ret != 0) { - LOGE("ConvertSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = memcmp(cipherText, codeCipherText, cipherTextLen); - if (ret != 0) { - LOGE("cipherText compare failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest063, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); - if (ret != 0) { - LOGE("GeneratorFile failed!"); - goto CLEAR_UP; - } - ret = ConvertSymKey("AES128", &key); - if (ret != 0) { - LOGE("ConvertSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesMultiBlockEncrypt(cipher, key, nullptr); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesMultiBlockDecrypt(cipher, key, nullptr); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - ret = CompareFileContent(); - if (ret != 0) { - LOGE("CompareFileContent failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest064, TestSize.Level0) -{ - int ret = 0; - HcfIvParamsSpec ivSpec = {}; - uint8_t iv[16] = {0}; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); - if (ret != 0) { - LOGE("GeneratorFile failed!"); - goto CLEAR_UP; - } - - ret = ConvertSymKey("AES128", &key); - if (ret != 0) { - LOGE("ConvertSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CBC|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesMultiBlockEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesMultiBlockDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - ret = CompareFileContent(); - if (ret != 0) { - LOGE("CompareFileContent failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest065, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = ConvertSymKey("AES128", &key); - if (ret != 0) { - LOGE("ConvertSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CTR|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); - if (ret != 0) { - LOGE("GeneratorFile failed!"); - goto CLEAR_UP; - } - - ret = AesMultiBlockEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesMultiBlockDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - ret = CompareFileContent(); - if (ret != 0) { - LOGE("CompareFileContent failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest066, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|OFB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); - if (ret != 0) { - LOGE("GeneratorFile failed!"); - goto CLEAR_UP; - } - - ret = AesMultiBlockEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesMultiBlockDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - ret = CompareFileContent(); - if (ret != 0) { - LOGE("CompareFileContent failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest067, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[16] = {0}; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = 16; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CFB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = GeneratorFile("/data/test_aes.txt", 10 * FILE_BLOCK_SIZE); - if (ret != 0) { - LOGE("GeneratorFile failed!"); - goto CLEAR_UP; - } - - ret = AesMultiBlockEncrypt(cipher, key, (HcfParamsSpec *)&ivSpec); - if (ret != 0) { - LOGE("AesNoUpdateEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesMultiBlockDecrypt(cipher, key, (HcfParamsSpec *)&ivSpec); - if (ret != 0) { - LOGE("AesNoUpdateDecrypt failed! %d", ret); - goto CLEAR_UP; - } - ret = CompareFileContent(); - if (ret != 0) { - LOGE("CompareFileContent failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest068, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|ECB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest069, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - key->clearMem(key); -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest070, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|ECB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - key->clearMem(key); -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest071, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|CBC|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest072, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|CBC|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest073, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|CTR|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest074, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|CTR|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest075, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|OFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest076, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|OFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest077, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|CFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest078, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|CFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest079, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|CFB1|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest080, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|CFB1|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest081, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|CFB8|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest082, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|CFB8|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest083, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|CFB128|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest084, TestSize.Level0) -{ - int ret = 0; - uint8_t iv[AES_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfIvParamsSpec ivSpec = {}; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - ivSpec.iv.data = iv; - ivSpec.iv.len = AES_IV_LEN; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|CFB128|PKCS5", &cipher); // CFB1/CFB8/CFB128 bit - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(ivSpec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, &(ivSpec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest085, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[GCM_AAD_LEN] = { 0 }; - uint8_t tag[GCM_TAG_LEN] = { 0 }; - uint8_t iv[GCM_IV_LEN] = { 0 }; // openssl only support nonce 12 bytes, tag 16 bytes - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|GCM|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= GCM_TAG_LEN; - - ret = AesDecrypt(cipher, key, &(spec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest086, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[GCM_AAD_LEN] = { 0 }; - uint8_t tag[GCM_TAG_LEN] = { 0 }; - uint8_t iv[GCM_IV_LEN] = { 0 }; // openssl only support nonce 12 bytes, tag 16 bytes - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|GCM|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= GCM_TAG_LEN; - - ret = AesDecrypt(cipher, key, &(spec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest087, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[CCM_AAD_LEN] = { 0 }; - uint8_t tag[CCM_TAG_LEN] = { 0 }; - uint8_t iv[CCM_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES192", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES192|CCM|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed!"); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, CCM_TAG_LEN, cipherText + cipherTextLen - CCM_TAG_LEN, CCM_TAG_LEN); - PrintfHex("ccm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= CCM_TAG_LEN; - - ret = AesDecrypt(cipher, key, &(spec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest088, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[CCM_AAD_LEN] = { 0 }; - uint8_t tag[CCM_TAG_LEN] = { 0 }; - uint8_t iv[CCM_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|CCM|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed!"); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, CCM_TAG_LEN, cipherText + cipherTextLen - CCM_TAG_LEN, CCM_TAG_LEN); - PrintfHex("ccm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= CCM_TAG_LEN; - - ret = AesDecrypt(cipher, key, &(spec.base), cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest089, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - const char *cipherName = "AES128|CFB|NoPadding"; - const char *retAlgo = nullptr; - ret = HcfCipherCreate(cipherName, &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - retAlgo = cipher->getAlgorithm(cipher); - if (retAlgo == nullptr) { - LOGE("cipher getAlgorithm failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - goto CLEAR_UP; - } - - ret = strcmp(retAlgo, cipherName); - if (ret != 0) { - LOGE("cipher getAlgorithm failed!"); - } -CLEAR_UP: - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest090, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - const char *cipherName = "AES128|CFB|NoPadding"; - const char *retAlgo = nullptr; - ret = HcfCipherCreate(cipherName, &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - retAlgo = cipher->getAlgorithm(nullptr); - if (retAlgo == nullptr) { - LOGE("cipher getAlgorithm failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest091, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKeyGenerator *generator = nullptr; - const char *cipherName = "AES128|CFB|NoPadding"; - const char *retAlgo = nullptr; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = HcfCipherCreate(cipherName, &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - retAlgo = cipher->getAlgorithm(reinterpret_cast(generator)); - if (retAlgo == nullptr) { - LOGE("cipher getAlgorithm failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(generator); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest092, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - const char *inputAlgoName = "AES128"; - const char *generatorAlgoName = nullptr; - - ret = HcfSymKeyGeneratorCreate(inputAlgoName, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - // generator getAlgoName - generatorAlgoName = generator->getAlgoName(generator); - if (generatorAlgoName == nullptr) { - LOGE("generator getAlgoName returns nullptr."); - ret = HCF_ERR_CRYPTO_OPERATION; - goto CLEAR_UP; - } - - ret = strcmp(generatorAlgoName, inputAlgoName); - if (ret != 0) { - LOGE("generator getAlgoName failed!"); - } -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest093, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - const char *generatorAlgoName = nullptr; - const char *inputAlgoName = "AES128"; - - ret = HcfSymKeyGeneratorCreate(inputAlgoName, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - // generator getAlgoName - generatorAlgoName = generator->getAlgoName(nullptr); - if (generatorAlgoName == nullptr) { - LOGE("generator getAlgoName failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest094, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - const char *generatorAlgoName = nullptr; - const char *inputAlgoName = "AES128"; - - ret = HcfSymKeyGeneratorCreate(inputAlgoName, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - // generator getAlgoName - generatorAlgoName = generator->getAlgoName(reinterpret_cast(key)); - if (generatorAlgoName == nullptr) { - LOGE("generator getAlgoName failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest095, TestSize.Level0) -{ - int ret = 0; - HcfSymKey *key = nullptr; - const char *inputAlgoName = "AES128"; - const char *keyAlgoName = nullptr; - - ret = GenerateSymKey(inputAlgoName, &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // key getAlgorithm - keyAlgoName = key->key.getAlgorithm(&(key->key)); - if (keyAlgoName == nullptr) { - LOGE("key getAlgorithm returns nullptr."); - ret = HCF_ERR_CRYPTO_OPERATION; - goto CLEAR_UP; - } - - ret = strcmp(keyAlgoName, inputAlgoName); - if (ret != 0) { - LOGE("key getAlgorithm failed!"); - } -CLEAR_UP: - HcfObjDestroy(key); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest096, TestSize.Level0) -{ - int ret = 0; - HcfSymKey *key = nullptr; - const char *inputAlgoName = "AES128"; - const char *keyAlgoName = nullptr; - - ret = GenerateSymKey(inputAlgoName, &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // key getAlgorithm - keyAlgoName = key->key.getAlgorithm(nullptr); - if (keyAlgoName == nullptr) { - LOGE("key getAlgorithm returns nullptr."); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(key); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest097, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - const char *inputAlgoName = "AES128"; - const char *keyAlgoName = nullptr; - - ret = HcfSymKeyGeneratorCreate(inputAlgoName, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - // key getAlgorithm - keyAlgoName = key->key.getAlgorithm(reinterpret_cast(generator)); - if (keyAlgoName == nullptr) { - LOGE("key getAlgorithm returns nullptr."); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest098, TestSize.Level0) -{ - int ret = 0; - HcfSymKey *key = nullptr; - const char *keyFormat = "PKCS#8"; - const char *retFormat = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // key GetFormat - retFormat = key->key.getFormat(&(key->key)); - if (retFormat == nullptr) { - LOGE("key GetFormat returns nullptr."); - ret = HCF_ERR_CRYPTO_OPERATION; - goto CLEAR_UP; - } - - ret = strcmp(retFormat, keyFormat); - if (ret != 0) { - LOGE("key GetFormat failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest099, TestSize.Level0) -{ - int ret = 0; - HcfSymKey *key = nullptr; - const char *retFormat = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // key getFormat - retFormat = key->key.getFormat(nullptr); - if (retFormat == nullptr) { - LOGE("key GetFormat returns nullptr."); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(key); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest100, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - const char *retFormat = nullptr; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - // key getFormat - retFormat = key->key.getFormat(reinterpret_cast(generator)); - if (retFormat == nullptr) { - LOGE("key GetFormat returns nullptr."); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest101, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - HcfBlob encodedBlob = { 0 }; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->convertSymKey(generator, &keyTmpBlob, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - // key getEncoded - ret = key->key.getEncoded(&(key->key), &encodedBlob); - if (ret != 0) { - LOGE("key GetEncoded failed."); - goto CLEAR_UP; - } - - if (encodedBlob.len != keyTmpBlob.len) { - LOGE("key GetEncoded failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - goto CLEAR_UP; - } - ret = memcmp(encodedBlob.data, keyTmpBlob.data, keyTmpBlob.len); - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - if (encodedBlob.data != nullptr) { - HcfFree(encodedBlob.data); - encodedBlob.data = nullptr; - } - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest102, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - HcfBlob encodedBlob = { 0 }; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->convertSymKey(generator, &keyTmpBlob, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - // key getEncoded - ret = key->key.getEncoded(nullptr, &encodedBlob); - if (ret != 0) { - LOGE("key GetEncoded failed."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - if (encodedBlob.data != nullptr) { - HcfFree(encodedBlob.data); - encodedBlob.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest103, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - HcfBlob encodedBlob = { 0 }; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->convertSymKey(generator, &keyTmpBlob, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - // key getEncoded - ret = key->key.getEncoded(reinterpret_cast(generator), &encodedBlob); - if (ret != 0) { - LOGE("key GetEncoded failed."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - if (encodedBlob.data != nullptr) { - HcfFree(encodedBlob.data); - encodedBlob.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest104, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - HcfBlob encodedBlob = { 0 }; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; - SymKeyImpl *impl = nullptr; - size_t tmpLen = 0; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->convertSymKey(generator, &keyTmpBlob, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - impl = reinterpret_cast(key); - tmpLen = impl->keyMaterial.len; - impl->keyMaterial.len = 0; - - // key getEncoded - ret = key->key.getEncoded(&(key->key), &encodedBlob); - impl->keyMaterial.len = tmpLen; - if (ret != 0) { - LOGE("key GetEncoded failed."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - if (encodedBlob.data != nullptr) { - HcfFree(encodedBlob.data); - encodedBlob.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest105, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - HcfBlob encodedBlob = { 0 }; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->convertSymKey(generator, &keyTmpBlob, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - key->clearMem(nullptr); - - ret = key->key.getEncoded(&(key->key), &encodedBlob); - if (ret != 0) { - LOGE("key GetEncoded failed."); - goto CLEAR_UP; - } - if ((encodedBlob.data != nullptr) && (encodedBlob.data[0] != '\0')) { - LOGE("clearMem failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - if (encodedBlob.data != nullptr) { - HcfFree(encodedBlob.data); - encodedBlob.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest106, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - - ret = HcfSymKeyGeneratorCreate("RSA128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed! Should not select RSA for symKey generator."); - } - - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest107, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - - ret = HcfSymKeyGeneratorCreate("RSA512", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed! Should not select RSA for symKey generator."); - } - - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest108, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - - ret = HcfSymKeyGeneratorCreate("", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed! Should not select empty string for symKey generator."); - } - - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest109, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - - ret = HcfSymKeyGeneratorCreate(nullptr, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed! Should not select nullptr for symKey generator."); - } - - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest110, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - - ret = HcfSymKeyGeneratorSpiCreate(nullptr, nullptr); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorSpiCreate failed!"); - } - - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest111, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->generateSymKey(nullptr, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest112, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->generateSymKey(reinterpret_cast(cipher), &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest113, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->convertSymKey(nullptr, &keyTmpBlob, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest114, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->convertSymKey(reinterpret_cast(cipher), &keyTmpBlob, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest115, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = 0 }; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - - ret = generator->convertSymKey(generator, &keyTmpBlob, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest116, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate("RSA128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed! Should not select RSA for GCM generator."); - } - - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest117, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // allow input without encryption mode. It will pick the last PKCS5, and use default aes128ecb. - ret = HcfCipherCreate("AES128|NoPadding|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest118, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - - // not allow '|' without content, because findAbility will fail for "" input - ret = HcfCipherCreate("AES128|GCM|", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed! Should select padding mode for AES generator."); - } - - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest119, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // allow input without encryption mode. It will use default aes128ecb. - ret = HcfCipherCreate("AES128|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest120, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // allow input without encryption mode. It will use default aes128ecb. - ret = HcfCipherCreate("AES128", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest121, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate("", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - } - - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest122, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate(nullptr, &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - } - - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest123, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // allow input with more than one padding mode. It will pick the last PKCS5. - ret = HcfCipherCreate("AES128|ECB|NoPadding|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest124, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES256|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - // It is not allowed that AES128 in key is smaller AES256 in cipher. -> now only use the size of input key. - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest125, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest126, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // CBC, CTR, OFB, CFB enc/dec success, - // GCM, CCM enc/dec failed with params set to nullptr. - ret = HcfCipherCreate("AES128|GCM|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest127, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(nullptr, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! Should input cipher when init."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest128, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, nullptr, nullptr); - if (ret != 0) { - LOGE("init failed! Should input key when init."); - } - -CLEAR_UP: - HcfObjDestroy(cipher); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest129, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - HcfCipher *cipher = nullptr; - - ret = HcfSymKeyGeneratorCreate("AES128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(reinterpret_cast(generator), ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! Should input key when init."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest130, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[GCM_AAD_LEN] = { 0 }; - uint8_t tag[GCM_TAG_LEN] = { 0 }; - uint8_t iv[GCM_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = nullptr; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - } - -// now support gcm no aad. -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest131, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[GCM_AAD_LEN] = { 0 }; - uint8_t tag[GCM_TAG_LEN] = { 0 }; - uint8_t iv[GCM_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = nullptr; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest132, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[GCM_AAD_LEN] = { 0 }; - uint8_t tag[GCM_TAG_LEN] = { 0 }; - uint8_t iv[GCM_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = nullptr; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest133, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest134, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[CCM_AAD_LEN] = { 0 }; - uint8_t tag[CCM_TAG_LEN] = { 0 }; - uint8_t iv[CCM_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = nullptr; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest135, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[CCM_AAD_LEN] = { 0 }; - uint8_t tag[CCM_TAG_LEN] = { 0 }; - uint8_t iv[CCM_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = nullptr; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest136, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[CCM_AAD_LEN] = { 0 }; - uint8_t tag[CCM_TAG_LEN] = { 0 }; - uint8_t iv[CCM_IV_LEN] = { 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = nullptr; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|CCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, &(spec.base), cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest137, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t plainText[] = "this is test!"; - HcfBlob input = { .data = plainText, .len = 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncryptWithInput(cipher, key, &input, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest138, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfBlob input = { .data = nullptr, .len = 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncryptWithInput(cipher, key, &input, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest139, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfBlob input = { .data = nullptr, .len = PLAINTEXT_LEN }; - HcfBlob output = { .data = nullptr, .len = 0 }; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed!"); - goto CLEAR_UP; - } - - ret = cipher->update(nullptr, &input, &output); - if (ret != 0) { - LOGE("update failed! Blob data should not be nullptr."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest140, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfBlob input = { .data = nullptr, .len = PLAINTEXT_LEN }; - HcfBlob output = { .data = nullptr, .len = 0 }; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed!"); - goto CLEAR_UP; - } - - ret = cipher->update(reinterpret_cast(key), &input, &output); - if (ret != 0) { - LOGE("update failed! Blob data should not be nullptr."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest141, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesNoUpdateEncWithInput(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = AesDecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest142, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t plainText[] = "this is test!"; - HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed!"); - goto CLEAR_UP; - } - - ret = cipher->doFinal(cipher, &input, nullptr); - if (ret != 0) { - LOGE("update failed! Blob data should not be nullptr."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest143, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t plainText[] = "this is test!"; - HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; - HcfBlob output = { .data = nullptr, .len = 0 }; - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed!"); - goto CLEAR_UP; - } - - ret = cipher->doFinal(reinterpret_cast(key), &input, &output); - if (ret != 0) { - LOGE("update failed! Blob data should not be nullptr."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest144, TestSize.Level0) -{ - int ret = HcfCipherAesGeneratorSpiCreate(nullptr, nullptr); - if (ret != 0) { - LOGE("HcfCipherAesGeneratorSpiCreate failed!"); - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest145, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGeneratorSpi *generator = nullptr; - HcfSymKey *key = nullptr; - SymKeyAttr attr = { .algo = HCF_ALG_AES, .keySize = AES_KEY_SIZE }; - - ret = HcfSymKeyGeneratorSpiCreate(&attr, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorSpiCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->engineGenerateSymmKey(nullptr, &key); - if (ret != 0) { - LOGE("engineGenerateSymmKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest146, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGeneratorSpi *generator = nullptr; - HcfSymKey *key = nullptr; - HcfCipher *cipher = nullptr; - SymKeyAttr attr = { .algo = HCF_ALG_AES, .keySize = AES_KEY_SIZE }; - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = HcfSymKeyGeneratorSpiCreate(&attr, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorSpiCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->engineGenerateSymmKey(reinterpret_cast(cipher), &key); - if (ret != 0) { - LOGE("engineGenerateSymmKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest147, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGeneratorSpi *generator = nullptr; - HcfSymKey *key = nullptr; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; - SymKeyAttr attr = { .algo = HCF_ALG_AES, .keySize = AES_KEY_SIZE }; - - ret = HcfSymKeyGeneratorSpiCreate(&attr, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorSpiCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->engineConvertSymmKey(nullptr, &keyTmpBlob, &key); - if (ret != 0) { - LOGE("engineConvertSymmKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest148, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGeneratorSpi *generator = nullptr; - HcfSymKey *key = nullptr; - uint8_t keyMaterial[] = { - 0xba, 0x3b, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, - 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c - }; - HcfBlob keyTmpBlob = { .data = keyMaterial, .len = KEY_MATERIAL_LEN }; - HcfCipher *cipher = nullptr; - SymKeyAttr attr = { .algo = HCF_ALG_AES, .keySize = AES_KEY_SIZE }; - - ret = HcfCipherCreate("AES128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = HcfSymKeyGeneratorSpiCreate(&attr, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorSpiCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->engineConvertSymmKey(reinterpret_cast(cipher), &keyTmpBlob, &key); - if (ret != 0) { - LOGE("engineConvertSymmKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTestNoAadGcm, TestSize.Level0) -{ - int ret = 0; - uint8_t tag[GCM_TAG_LEN] = {0}; - uint8_t iv[GCM_IV_LEN] = {0}; - uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = nullptr; - spec.aad.len = 0; - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= GCM_TAG_LEN; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTestGcmLongAad, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[GCM_AAD_LONG_LEN] = { 0 }; - uint8_t tag[GCM_TAG_LEN] = {0}; - uint8_t iv[GCM_IV_LEN] = {0}; - uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= GCM_TAG_LEN; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTestGcmLongIv, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[GCM_AAD_LONG_LEN] = { 0 }; - uint8_t tag[GCM_TAG_LEN] = {0}; - uint8_t iv[GCM_IV_LONG_LEN] = {0}; - uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= GCM_TAG_LEN; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTestGcmShortIv, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[GCM_AAD_SHORT_LEN] = { 0 }; - uint8_t tag[GCM_TAG_LEN] = {0}; - // openssl only support ivLen [9, 16]; - uint8_t iv[GCM_IV_SHORT_LEN] = {0}; - uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= GCM_TAG_LEN; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTestGcmNoAadLongIv, TestSize.Level0) -{ - int ret = 0; - uint8_t tag[GCM_TAG_LEN] = {0}; - uint8_t iv[GCM_IV_LONG_LEN] = {0}; - uint8_t cipherText[CIPHER_TEXT_LEN] = {0}; - int cipherTextLen = CIPHER_TEXT_LEN; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - HcfGcmParamsSpec spec = {}; - spec.aad.data = nullptr; - spec.aad.len = 0; - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("AES128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("AES128|GCM|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = AesEncrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, GCM_TAG_LEN, cipherText + cipherTextLen - GCM_TAG_LEN, GCM_TAG_LEN); - PrintfHex("gcm tag", spec.tag.data, spec.tag.len); - cipherTextLen -= GCM_TAG_LEN; - - ret = AesDecrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed, ret:%d!", ret); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_EQ(ret, 0); -} -} \ No newline at end of file diff --git a/test/unittest/src/crypto_brainpool_asy_key_generator_test.cpp b/test/unittest/src/crypto_brainpool_asy_key_generator_test.cpp index cb83f73..be0fff4 100644 --- a/test/unittest/src/crypto_brainpool_asy_key_generator_test.cpp +++ b/test/unittest/src/crypto_brainpool_asy_key_generator_test.cpp @@ -19,6 +19,7 @@ #include "asy_key_generator.h" #include "ecc_asy_key_generator_openssl.h" #include "blob.h" +#include "memory.h" #include "memory_mock.h" #include "openssl_adapter_mock.h" #include "params_parser.h" @@ -53,6 +54,10 @@ HcfBlob g_mockECC_BrainPool160r1PubKeyBlob = { .len = 0 }; +HcfAsyKeyGenerator *g_160r1Generator = nullptr; +HcfKeyPair *g_160r1KeyPair = nullptr; +HcfKeyPair *g_160r1ConvertKeyPair = nullptr; + static const char *GetMockClass(void) { return "HcfSymKeyGenerator"; @@ -63,179 +68,127 @@ HcfObjectBase g_obj = { .destroy = nullptr }; -void CryptoBrainPoolAsyKeyGeneratorTest::SetUpTestCase() +static HcfResult HcfAsyKeyGeneratorCreateTest(const char *algName) { HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); + HcfResult res = HcfAsyKeyGeneratorCreate(algName, &generator); + if (res == HCF_SUCCESS) { + HcfObjDestroy(generator); + } + return res; +} - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); +void CryptoBrainPoolAsyKeyGeneratorTest::SetUpTestCase() +{ + HcfResult res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &g_160r1Generator); EXPECT_EQ(res, HCF_SUCCESS); - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &g_mockECC_BrainPool160r1PriKeyBlob); + res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &g_160r1KeyPair); EXPECT_EQ(res, HCF_SUCCESS); - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &g_mockECC_BrainPool160r1PubKeyBlob); + res = g_160r1KeyPair->priKey->base.getEncoded(&(g_160r1KeyPair->priKey->base), + &g_mockECC_BrainPool160r1PriKeyBlob); + EXPECT_EQ(res, HCF_SUCCESS); + res = g_160r1KeyPair->pubKey->base.getEncoded(&(g_160r1KeyPair->pubKey->base), + &g_mockECC_BrainPool160r1PubKeyBlob); + EXPECT_EQ(res, HCF_SUCCESS); + res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + &g_mockECC_BrainPool160r1PriKeyBlob, &g_160r1ConvertKeyPair); EXPECT_EQ(res, HCF_SUCCESS); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP160r1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_2, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160t1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP160t1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_3, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP192r1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP192r1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_4, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP192t1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP192t1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_5, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP224r1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP224r1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_6, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP224t1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP224t1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_7, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP256r1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP256r1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_8, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP256t1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP256t1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_9, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP320r1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP320r1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_10, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP320t1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP320t1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_11, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP384r1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP384r1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_12, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP384t1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP384t1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_13, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP512r1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP512r1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest001_14, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP512t1", &generator); - + HcfResult res = HcfAsyKeyGeneratorCreateTest("ECC_BrainPoolP512t1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest002, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *className = generator->base.getClass(); + const char *className = g_160r1Generator->base.getClass(); ASSERT_NE(className, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest003, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160t1", &generator); + HcfResult res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); @@ -245,7 +198,7 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest004, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); + HcfResult res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); @@ -257,7 +210,7 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest005, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); + HcfResult res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); @@ -268,194 +221,106 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest006, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *algName = generator->getAlgoName(generator); + const char *algName = g_160r1Generator->getAlgoName(g_160r1Generator); ASSERT_NE(algName, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest007, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *algName = generator->getAlgoName(nullptr); + const char *algName = g_160r1Generator->getAlgoName(nullptr); ASSERT_EQ(algName, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest008, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *algName = generator->getAlgoName((HcfAsyKeyGenerator *)&g_obj); + const char *algName = g_160r1Generator->getAlgoName((HcfAsyKeyGenerator *)&g_obj); ASSERT_EQ(algName, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest009, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest010, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(nullptr, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(nullptr, nullptr, &keyPair); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(keyPair, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest011, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair((HcfAsyKeyGenerator *)&g_obj, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair((HcfAsyKeyGenerator *)&g_obj, nullptr, &keyPair); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(keyPair, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest012, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - res = generator->generateKeyPair(generator, nullptr, nullptr); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest013, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->base.getClass(); + const char *className = g_160r1KeyPair->base.getClass(); ASSERT_NE(className, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest014, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy((HcfObjectBase *)(&(keyPair->base))); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest015, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest016, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest017, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->pubKey->base.base.getClass(); + const char *className = g_160r1KeyPair->pubKey->base.base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest018, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -464,286 +329,146 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->pubKey = nullptr; HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest019, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest020, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest021, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + const char *format = g_160r1KeyPair->pubKey->base.getFormat(&(g_160r1KeyPair->pubKey->base)); ASSERT_NE(format, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest022, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat(nullptr); + const char *format = g_160r1KeyPair->pubKey->base.getFormat(nullptr); ASSERT_EQ(format, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest023, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat((HcfKey *)&g_obj); + const char *format = g_160r1KeyPair->pubKey->base.getFormat((HcfKey *)&g_obj); ASSERT_EQ(format, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest024, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + const char *algName = g_160r1KeyPair->pubKey->base.getAlgorithm(&(g_160r1KeyPair->pubKey->base)); ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest025, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm(nullptr); + const char *algName = g_160r1KeyPair->pubKey->base.getAlgorithm(nullptr); ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest026, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); + const char *algName = g_160r1KeyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest027, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + HcfResult res = g_160r1KeyPair->pubKey->base.getEncoded(&(g_160r1KeyPair->pubKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + HcfFree(blob.data); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest028, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(nullptr, &blob); + HcfResult res = g_160r1KeyPair->pubKey->base.getEncoded(nullptr, &blob); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest029, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); + HcfResult res = g_160r1KeyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} +} HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest030, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), nullptr); + HcfResult res = g_160r1KeyPair->pubKey->base.getEncoded(&(g_160r1KeyPair->pubKey->base), nullptr); ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest031, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem(keyPair->priKey); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest032, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest033, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem((HcfPriKey *)&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest034, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -752,16 +477,12 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 ASSERT_NE(algName, nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest035, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -770,396 +491,217 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->priKey = nullptr; HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest036, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest037, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_160r1Generator->generateKeyPair(g_160r1Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest038, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat(&keyPair->priKey->base); + const char *format = g_160r1KeyPair->priKey->base.getFormat(&g_160r1KeyPair->priKey->base); ASSERT_NE(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest039, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat(nullptr); + const char *format = g_160r1KeyPair->priKey->base.getFormat(nullptr); ASSERT_EQ(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest040, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat((HcfKey *)&g_obj); + const char *format = g_160r1KeyPair->priKey->base.getFormat((HcfKey *)&g_obj); ASSERT_EQ(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest041, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + const char *algName = g_160r1KeyPair->pubKey->base.getAlgorithm(&(g_160r1KeyPair->pubKey->base)); ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest042, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm(nullptr); + const char *algName = g_160r1KeyPair->pubKey->base.getAlgorithm(nullptr); ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest043, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); + const char *algName = g_160r1KeyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest044, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + HcfResult res = g_160r1KeyPair->priKey->base.getEncoded(&(g_160r1KeyPair->priKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + HcfFree(blob.data); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest045, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(nullptr, &blob); + HcfResult res = g_160r1KeyPair->priKey->base.getEncoded(nullptr, &blob); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest046, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); - + HcfResult res = g_160r1KeyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest047, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), nullptr); + HcfResult res = g_160r1KeyPair->priKey->base.getEncoded(&(g_160r1KeyPair->priKey->base), nullptr); ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest048, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &outKeyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(outKeyPair, nullptr); HcfObjDestroy(outKeyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest049, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(nullptr, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(nullptr, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &outKeyPair); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(outKeyPair, nullptr); HcfObjDestroy(outKeyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest050, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey((HcfAsyKeyGenerator *)&g_obj, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &outKeyPair); + HcfResult res = g_160r1Generator->convertKey((HcfAsyKeyGenerator *)&g_obj, nullptr, + &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &outKeyPair); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(outKeyPair, nullptr); HcfObjDestroy(outKeyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest051, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(nullptr, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(nullptr, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &outKeyPair); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(outKeyPair, nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest052, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(generator, nullptr, nullptr, &g_mockECC_BrainPool160r1PriKeyBlob, &outKeyPair); + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, nullptr, + &g_mockECC_BrainPool160r1PriKeyBlob, &outKeyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(outKeyPair, nullptr); HcfObjDestroy(outKeyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest053, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(generator, nullptr, nullptr, nullptr, &outKeyPair); + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, nullptr, nullptr, &outKeyPair); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(outKeyPair, nullptr); HcfObjDestroy(outKeyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest054, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, nullptr); ASSERT_NE(res, HCF_SUCCESS); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest055, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->base.getClass(); + const char *className = g_160r1KeyPair->base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } + HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest056, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy((HcfObjectBase *)(&(keyPair->base))); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest057, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(nullptr); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest058, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); @@ -1167,35 +709,18 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->base.destroy(&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest059, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->pubKey->base.base.getClass(); + const char *className = g_160r1KeyPair->pubKey->base.base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest060, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); @@ -1205,245 +730,110 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->pubKey = nullptr; HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest061, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest062, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest063, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + const char *format = g_160r1ConvertKeyPair->pubKey->base.getFormat(&(g_160r1ConvertKeyPair->pubKey->base)); ASSERT_NE(format, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest064, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat(nullptr); + const char *format = g_160r1ConvertKeyPair->pubKey->base.getFormat(nullptr); ASSERT_EQ(format, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest065, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat((HcfKey *)&g_obj); + const char *format = g_160r1ConvertKeyPair->pubKey->base.getFormat((HcfKey *)&g_obj); ASSERT_EQ(format, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest066, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + const char *algName = g_160r1ConvertKeyPair->pubKey->base.getAlgorithm(&(g_160r1ConvertKeyPair->pubKey->base)); ASSERT_NE(algName, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest067, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm(nullptr); + const char *algName = g_160r1ConvertKeyPair->pubKey->base.getAlgorithm(nullptr); ASSERT_EQ(algName, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest068, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); + const char *algName = g_160r1ConvertKeyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); ASSERT_EQ(algName, nullptr); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest069, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + HcfResult res = g_160r1ConvertKeyPair->pubKey->base.getEncoded(&(g_160r1ConvertKeyPair->pubKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + HcfFree(blob.data); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest070, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(nullptr, &blob); + HcfResult res = g_160r1ConvertKeyPair->pubKey->base.getEncoded(nullptr, &blob); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest071, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); + HcfResult res = g_160r1ConvertKeyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest072, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), nullptr); + HcfResult res = g_160r1ConvertKeyPair->pubKey->base.getEncoded(&(g_160r1ConvertKeyPair->pubKey->base), nullptr); ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest073, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); @@ -1451,16 +841,12 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->priKey->clearMem(keyPair->priKey); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest074, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); @@ -1468,16 +854,12 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->priKey->clearMem(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest075, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); @@ -1485,35 +867,18 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->priKey->clearMem((HcfPriKey *)&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest076, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->priKey->base.base.getClass(); + const char *algName = g_160r1ConvertKeyPair->priKey->base.base.getClass(); ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest077, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); @@ -1523,16 +888,12 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->priKey = nullptr; HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest078, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); @@ -1540,16 +901,12 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->priKey->base.base.destroy(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest079, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + HcfResult res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); @@ -1557,242 +914,105 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 keyPair->priKey->base.base.destroy(&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest080, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat(&keyPair->priKey->base); + const char *format = g_160r1ConvertKeyPair->priKey->base.getFormat(&g_160r1ConvertKeyPair->priKey->base); ASSERT_NE(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest081, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat(nullptr); + const char *format = g_160r1ConvertKeyPair->priKey->base.getFormat(nullptr); ASSERT_EQ(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest082, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat((HcfKey *)&g_obj); + const char *format = g_160r1ConvertKeyPair->priKey->base.getFormat((HcfKey *)&g_obj); ASSERT_EQ(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest083, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->priKey->base.getAlgorithm(&keyPair->priKey->base); + const char *algName = g_160r1ConvertKeyPair->priKey->base.getAlgorithm(&g_160r1ConvertKeyPair->priKey->base); ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest084, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->priKey->base.getAlgorithm(nullptr); + const char *algName = g_160r1ConvertKeyPair->priKey->base.getAlgorithm(nullptr); ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest085, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getAlgorithm((HcfKey *)&g_obj); + const char *format = g_160r1ConvertKeyPair->priKey->base.getAlgorithm((HcfKey *)&g_obj); ASSERT_EQ(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest086, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + HcfResult res = g_160r1ConvertKeyPair->priKey->base.getEncoded(&(g_160r1ConvertKeyPair->priKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + HcfFree(blob.data); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest087, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(nullptr, &blob); + HcfResult res = g_160r1ConvertKeyPair->priKey->base.getEncoded(nullptr, &blob); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - free(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + HcfFree(blob.data); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest088, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); + HcfResult res = g_160r1ConvertKeyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - free(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + HcfFree(blob.data); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest089, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), nullptr); + HcfResult res = g_160r1ConvertKeyPair->priKey->base.getEncoded(&(g_160r1ConvertKeyPair->priKey->base), nullptr); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - free(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + HcfFree(blob.data); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest090, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); + HcfResult res = g_160r1ConvertKeyPair->pubKey->base.getEncoded(&(g_160r1ConvertKeyPair->pubKey->base), &pubKeyBlob); ASSERT_EQ(res, HCF_SUCCESS); HcfBlob priKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); + res = g_160r1ConvertKeyPair->priKey->base.getEncoded(&(g_160r1ConvertKeyPair->priKey->base), &priKeyBlob); ASSERT_EQ(res, HCF_SUCCESS); HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); + res = g_160r1Generator->convertKey(g_160r1Generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(outKeyPair, nullptr); @@ -1811,13 +1031,11 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 ASSERT_NE(outPriKeyBlob.data, nullptr); ASSERT_NE(outPriKeyBlob.len, 0); - free(pubKeyBlob.data); - free(priKeyBlob.data); - free(outPubKeyBlob.data); - free(outPriKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); + HcfFree(outPubKeyBlob.data); + HcfFree(outPriKeyBlob.data); HcfObjDestroy(outKeyPair); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest091, TestSize.Level0) @@ -1829,7 +1047,7 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 }; HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + HcfResult res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1844,7 +1062,7 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 }; HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + HcfResult res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1864,7 +1082,7 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 }; HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + HcfResult res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1884,7 +1102,7 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 }; HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + HcfResult res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1901,7 +1119,7 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 }; HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + HcfResult res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1910,13 +1128,13 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 HcfObjDestroy(spiObj); } -static void MemoryMallocTestFunc(uint32_t mallocCount) +static void MemoryMallocTestFunc(int32_t mallocCount) { - for (uint32_t i = 0; i < mallocCount; i++) { + for (int32_t i = 0; i < mallocCount; i++) { ResetRecordMallocNum(); SetMockMallocIndex(i); HcfAsyKeyGenerator *tmpGenerator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &tmpGenerator); + HcfResult res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &tmpGenerator); if (res != HCF_SUCCESS) { continue; } @@ -1942,15 +1160,15 @@ static void MemoryMallocTestFunc(uint32_t mallocCount) }; res = tmpKeyPair->priKey->base.getEncoded(&(tmpKeyPair->priKey->base), &tmpPriKeyBlob); if (res != HCF_SUCCESS) { - free(tmpPubKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); continue; } HcfKeyPair *tmpOutKeyPair = nullptr; res = tmpGenerator->convertKey(tmpGenerator, nullptr, &tmpPubKeyBlob, &tmpPriKeyBlob, &tmpOutKeyPair); - free(tmpPubKeyBlob.data); - free(tmpPriKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); + HcfFree(tmpPriKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); if (res == HCF_SUCCESS) { @@ -1963,7 +1181,7 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 { StartRecordMallocNum(); HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); + HcfResult res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, nullptr, &keyPair); @@ -1988,24 +1206,24 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 HcfKeyPair *outKeyPair = nullptr; res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); - free(pubKeyBlob.data); - free(priKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); - uint32_t mallocCount = GetMallocNum(); + int32_t mallocCount = GetMallocNum(); MemoryMallocTestFunc(mallocCount); EndRecordMallocNum(); } -static void OpensslMockTestFunc(uint32_t mallocCount) +static void OpensslMockTestFunc(int32_t mallocCount) { - for (uint32_t i = 0; i < mallocCount; i++) { + for (int32_t i = 0; i < mallocCount; i++) { ResetOpensslCallNum(); SetOpensslCallMockIndex(i); HcfAsyKeyGenerator *tmpGenerator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &tmpGenerator); + HcfResult res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &tmpGenerator); if (res != HCF_SUCCESS) { continue; } @@ -2031,15 +1249,15 @@ static void OpensslMockTestFunc(uint32_t mallocCount) }; res = tmpKeyPair->priKey->base.getEncoded(&(tmpKeyPair->priKey->base), &tmpPriKeyBlob); if (res != HCF_SUCCESS) { - free(tmpPubKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); continue; } HcfKeyPair *tmpOutKeyPair = nullptr; res = tmpGenerator->convertKey(tmpGenerator, nullptr, &tmpPubKeyBlob, &tmpPriKeyBlob, &tmpOutKeyPair); - free(tmpPubKeyBlob.data); - free(tmpPriKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); + HcfFree(tmpPriKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); if (res == HCF_SUCCESS) { @@ -2052,7 +1270,7 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 { StartRecordOpensslCallNum(); HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); + HcfResult res = HcfAsyKeyGeneratorCreate("ECC_BrainPoolP160r1", &generator); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, nullptr, &keyPair); @@ -2077,13 +1295,13 @@ HWTEST_F(CryptoBrainPoolAsyKeyGeneratorTest, CryptoBrainPoolAsyKeyGeneratorTest0 HcfKeyPair *outKeyPair = nullptr; res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); - free(pubKeyBlob.data); - free(priKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); - uint32_t mallocCount = GetOpensslCallNum(); + int32_t mallocCount = GetOpensslCallNum(); OpensslMockTestFunc(mallocCount); EndRecordOpensslCallNum(); } diff --git a/test/unittest/src/crypto_brainpool_key_agreement_test.cpp b/test/unittest/src/crypto_brainpool_key_agreement_test.cpp index 403aef2..d06a31c 100644 --- a/test/unittest/src/crypto_brainpool_key_agreement_test.cpp +++ b/test/unittest/src/crypto_brainpool_key_agreement_test.cpp @@ -17,10 +17,11 @@ #include "securec.h" #include "asy_key_generator.h" -#include "detailed_ecc_key_params.h" +#include "ecc_common_param_spec.h" #include "ecdh_openssl.h" #include "key_agreement.h" #include "ecc_key_util.h" +#include "memory.h" #include "memory_mock.h" #include "openssl_adapter_mock.h" #include "params_parser.h" @@ -31,8 +32,8 @@ using namespace testing::ext; namespace { class CryptoBrainPoolKeyAgreementTest : public testing::Test { public: - static void SetUpTestCase(); - static void TearDownTestCase(); + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; void SetUp(); void TearDown(); }; @@ -40,10 +41,6 @@ public: void CryptoBrainPoolKeyAgreementTest::SetUp() {} void CryptoBrainPoolKeyAgreementTest::TearDown() {} -static string g_brainpool160r1AlgName = "ECC_BrainPoolP160r1"; -HcfEccCommParamsSpec *g_eccCommSpec = nullptr; -HcfEccKeyPairParamsSpec g_brainpool160r1KeyPairSpec; - static const char *GetMockClass(void) { return "HcfSymKeyGenerator"; @@ -54,127 +51,51 @@ static HcfObjectBase obj = { .destroy = nullptr }; -static HcfResult ConstructEccBrainPool160r1KeyPairCommParamsSpec(const string &algoName, HcfEccCommParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = nullptr; - - HcfEccKeyUtilCreate(algoName.c_str(), &eccCommSpec); - if (eccCommSpec == nullptr) { - return HCF_INVALID_PARAMS; - } - - *spec = eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult Constructbrainpool160r1KeyPairParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) +static HcfResult HcfKeyAgreementCreateTest(const char *algName) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return res; + HcfKeyAgreement *keyAgreement = nullptr; + HcfResult res = HcfKeyAgreementCreate(algName, &keyAgreement); + if (res == HCF_SUCCESS) { + HcfObjDestroy(keyAgreement); } - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_brainpool160r1KeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - eccKeyPairSpec->base.base.algName = g_eccCommSpec->base.algName; - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = g_eccCommSpec->field; - eccKeyPairSpec->base.field->fieldType = g_eccCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.data; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.len; - eccKeyPairSpec->base.a.data = g_eccCommSpec->a.data; - eccKeyPairSpec->base.a.len = g_eccCommSpec->a.len; - eccKeyPairSpec->base.b.data = g_eccCommSpec->b.data; - eccKeyPairSpec->base.b.len = g_eccCommSpec->b.len; - eccKeyPairSpec->base.g.x.data = g_eccCommSpec->g.x.data; - eccKeyPairSpec->base.g.x.len = g_eccCommSpec->g.x.len; - eccKeyPairSpec->base.g.y.data = g_eccCommSpec->g.y.data; - eccKeyPairSpec->base.g.y.len = g_eccCommSpec->g.y.len; - eccKeyPairSpec->base.n.data = g_eccCommSpec->n.data; - eccKeyPairSpec->base.n.len = g_eccCommSpec->n.len; - eccKeyPairSpec->base.h = g_eccCommSpec->h; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); - eccKeyPairSpec->pk.x.data = retBigInt.data; - eccKeyPairSpec->pk.x.len = retBigInt.len; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); - eccKeyPairSpec->pk.y.data =retBigInt.data; - eccKeyPairSpec->pk.y.len = retBigInt.len; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); - eccKeyPairSpec->sk.data = retBigInt.data; - eccKeyPairSpec->sk.len = retBigInt.len; - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; -} - -void CryptoBrainPoolKeyAgreementTest::SetUpTestCase() -{ - ConstructEccBrainPool160r1KeyPairCommParamsSpec("NID_brainpoolP160r1", &g_eccCommSpec); -} - -void CryptoBrainPoolKeyAgreementTest::TearDownTestCase() -{ - FreeEccCommParamsSpec(g_eccCommSpec); + return res; } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest001, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("ECC_BrainPoolP160r1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest002, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate(nullptr, &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest(nullptr); ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest003, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD" - "ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD" + "ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD"); ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest004, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("SM257", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("SM257"); ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest005, TestSize.Level0) { - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP512t1", nullptr); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP512t1", nullptr); ASSERT_NE(res, HCF_SUCCESS); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest006, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); @@ -187,7 +108,7 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest006, Te HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest007, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); @@ -197,7 +118,7 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest007, Te HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest008, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); @@ -209,7 +130,7 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest008, Te HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest009, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); @@ -221,7 +142,7 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest009, Te HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest010, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); @@ -234,7 +155,7 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest010, Te HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest011, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); @@ -247,7 +168,7 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest011, Te HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest012, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); @@ -260,23 +181,13 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest012, Te HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest013, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -287,32 +198,21 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest013, Te ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(keyAgreement); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest014, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -323,32 +223,21 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest014, Te ASSERT_EQ(out.data, nullptr); ASSERT_EQ(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(keyAgreement); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest015, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -359,32 +248,21 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest015, Te ASSERT_EQ(out.data, nullptr); ASSERT_EQ(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(keyAgreement); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest016, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -395,32 +273,21 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest016, Te ASSERT_EQ(out.data, nullptr); ASSERT_EQ(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(keyAgreement); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest017, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - int32_t res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); + HcfResult res = HcfKeyAgreementCreate("ECC_BrainPoolP160r1", &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyAgreement, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -428,7 +295,6 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest017, Te ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(keyPair); HcfObjDestroy(keyAgreement); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest018, TestSize.Level0) @@ -476,7 +342,7 @@ HWTEST_F(CryptoBrainPoolKeyAgreementTest, CryptoBrainPoolKeyAgreementTest018, Te HcfObjDestroy(generator); HcfObjDestroy(keyPair1); HcfObjDestroy(keyPair2); - free(outBlob1.data); - free(outBlob2.data); -} + HcfFree(outBlob1.data); + HcfFree(outBlob2.data); } +} \ No newline at end of file diff --git a/test/unittest/src/crypto_brainpool_no_length_sign_test.cpp b/test/unittest/src/crypto_brainpool_no_length_sign_test.cpp index b4e0430..3e51b87 100644 --- a/test/unittest/src/crypto_brainpool_no_length_sign_test.cpp +++ b/test/unittest/src/crypto_brainpool_no_length_sign_test.cpp @@ -17,10 +17,10 @@ #include #include "asy_key_generator.h" +#include "ecc_common_param_spec.h" #include "ecc_key_util.h" #include "key_utils.h" #include "blob.h" -#include "detailed_ecc_key_params.h" #include "ecc_openssl_common.h" #include "ecc_openssl_common_param_spec.h" #include "ecc_common.h" @@ -40,17 +40,14 @@ using namespace testing::ext; namespace { class CryptoBrainPoolNoLengthSignTest : public testing::Test { public: - static void SetUpTestCase(); - static void TearDownTestCase(); + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; void SetUp(); void TearDown(); }; static string g_brainpool160r1AlgName = "ECC_BrainPoolP160r1"; -static string g_brainpool160r1curveName = "NID_brainpoolP160r1"; - -HcfEccCommParamsSpec *g_eccCommSpec = nullptr; -HcfEccKeyPairParamsSpec g_brainpool160r1KeyPairSpec; +static string g_brainpool160r1CurveName = "NID_brainpoolP160r1"; void CryptoBrainPoolNoLengthSignTest::SetUp() {} void CryptoBrainPoolNoLengthSignTest::TearDown() {} @@ -71,128 +68,56 @@ HcfObjectBase obj = { .destroy = nullptr }; -static HcfResult ConstructEccBrainPool160r1KeyPairCommParamsSpec(const string &algoName, HcfEccCommParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = nullptr; - HcfEccKeyUtilCreate(algoName.c_str(), &eccCommSpec); - *spec = eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult Constructbrainpool160r1KeyPairParamsSpec(const string &algoName, const string &curveName, - HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_brainpool160r1KeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccKeyPairSpec->base.base.algName = g_eccCommSpec->base.algName; - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = g_eccCommSpec->field; - eccKeyPairSpec->base.field->fieldType = g_eccCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.data; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.len; - eccKeyPairSpec->base.a.data = g_eccCommSpec->a.data; - eccKeyPairSpec->base.a.len = g_eccCommSpec->a.len; - eccKeyPairSpec->base.b.data = g_eccCommSpec->b.data; - eccKeyPairSpec->base.b.len = g_eccCommSpec->b.len; - eccKeyPairSpec->base.g.x.data = g_eccCommSpec->g.x.data; - eccKeyPairSpec->base.g.x.len = g_eccCommSpec->g.x.len; - eccKeyPairSpec->base.g.y.data = g_eccCommSpec->g.y.data; - eccKeyPairSpec->base.g.y.len = g_eccCommSpec->g.y.len; - eccKeyPairSpec->base.n.data = g_eccCommSpec->n.data; - eccKeyPairSpec->base.n.len = g_eccCommSpec->n.len; - eccKeyPairSpec->base.h = g_eccCommSpec->h; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); - eccKeyPairSpec->pk.x.data = retBigInt.data; - eccKeyPairSpec->pk.x.len = retBigInt.len; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); - eccKeyPairSpec->pk.y.data =retBigInt.data; - eccKeyPairSpec->pk.y.len = retBigInt.len; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); - eccKeyPairSpec->sk.data = retBigInt.data; - eccKeyPairSpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - HcfObjDestroy(generator); - return HCF_SUCCESS; -} - -void CryptoBrainPoolNoLengthSignTest::SetUpTestCase() +static HcfResult HcfSignCreateTest(const char *algName) { - ConstructEccBrainPool160r1KeyPairCommParamsSpec("NID_brainpoolP160r1", &g_eccCommSpec); -} - -void CryptoBrainPoolNoLengthSignTest::TearDownTestCase() -{ - FreeEccCommParamsSpec(g_eccCommSpec); + HcfSign *sign = nullptr; + HcfResult res = HcfSignCreate(algName, &sign); + if (res == HCF_SUCCESS) { + HcfObjDestroy(sign); + } + return res; } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest001_1, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA1", &sign); + HcfResult res = HcfSignCreateTest("ECC_BrainPoolP160r1|SHA1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - HcfObjDestroy(sign); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest001_2, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); + HcfResult res = HcfSignCreateTest("ECC_BrainPoolP160r1|SHA224"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - HcfObjDestroy(sign); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest001_3, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreateTest("ECC_BrainPoolP160r1|SHA256"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - HcfObjDestroy(sign); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest001_4, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA384", &sign); + HcfResult res = HcfSignCreateTest("ECC_BrainPoolP160r1|SHA384"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - HcfObjDestroy(sign); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest001_5, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA512", &sign); + HcfResult res = HcfSignCreateTest("ECC_BrainPoolP160r1|SHA512"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - HcfObjDestroy(sign); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest001_6, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|MD5", &sign); + HcfResult res = HcfSignCreateTest("ECC_BrainPoolP160r1|MD5"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - HcfObjDestroy(sign); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest002, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); @@ -204,7 +129,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest002, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest003, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); sign->base.destroy((HcfObjectBase *)sign); @@ -213,7 +138,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest003, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest004, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); sign->base.destroy(nullptr); @@ -222,7 +147,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest004, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest005, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); @@ -233,7 +158,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest005, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest006, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); @@ -245,7 +170,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest006, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest007, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); @@ -257,7 +182,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest007, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest008, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); @@ -269,22 +194,12 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest008, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest009, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -293,28 +208,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest009, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest010, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -323,28 +227,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest010, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest011, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -353,28 +246,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest011, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest012, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -386,13 +268,12 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest012, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest013, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); @@ -404,7 +285,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest013, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest014, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); @@ -416,18 +297,18 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest014, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest015, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); res = sign->init(sign, nullptr, (HcfPriKey *)(&obj)); ASSERT_EQ(res, HCF_INVALID_PARAMS); - HcfBlob g_mockInput = { + HcfBlob mockInput = { .data = (uint8_t *)g_mockMessage, .len = 1 }; - res = sign->update(sign, &g_mockInput); + res = sign->update(sign, &mockInput); ASSERT_EQ(res, HCF_INVALID_PARAMS); HcfObjDestroy(sign); } @@ -435,18 +316,18 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest015, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest016, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); res = sign->init(sign, nullptr, (HcfPriKey *)(&obj)); ASSERT_EQ(res, HCF_INVALID_PARAMS); - HcfBlob g_mockInput = { + HcfBlob mockInput = { .data = (uint8_t *)g_mockMessage, .len = 1 }; - res = sign->update(nullptr, &g_mockInput); + res = sign->update(nullptr, &mockInput); ASSERT_EQ(res, HCF_INVALID_PARAMS); HcfObjDestroy(sign); } @@ -454,18 +335,18 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest016, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest017, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); res = sign->init(sign, nullptr, (HcfPriKey *)(&obj)); ASSERT_EQ(res, HCF_INVALID_PARAMS); - HcfBlob g_mockInput = { + HcfBlob mockInput = { .data = (uint8_t *)g_mockMessage, .len = 1 }; - res = sign->update((HcfSign *)(&obj), &g_mockInput); + res = sign->update((HcfSign *)(&obj), &mockInput); ASSERT_EQ(res, HCF_INVALID_PARAMS); HcfObjDestroy(sign); } @@ -473,17 +354,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest017, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest018, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfBlob g_mockInput = { + HcfBlob mockInput = { .data = (uint8_t *)g_mockMessage, .len = 1 }; - res = sign->update(sign, &g_mockInput); + res = sign->update(sign, &mockInput); ASSERT_EQ(res, HCF_INVALID_PARAMS); HcfObjDestroy(sign); } @@ -492,22 +373,12 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest018, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest019, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -519,28 +390,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest019, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest020, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -557,29 +417,19 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest020, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + HcfBlobDataFree(&input); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest021, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -596,28 +446,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest021, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest022, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -633,31 +472,20 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest022, Te ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest023, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -670,31 +498,20 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest023, Te ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest024, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -712,28 +529,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest024, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest025, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -748,28 +554,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest025, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest026, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -787,28 +582,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest026, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest027, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -830,28 +614,17 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest027, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest028, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA256", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -873,7 +646,6 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest028, Te HcfObjDestroy(sign); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HcfSignatureParams g_params = { @@ -885,30 +657,20 @@ HcfSignatureParams g_params = { HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest029, TestSize.Level0) { - int32_t res = HcfSignSpiEcdsaCreate(&g_params, nullptr); + HcfResult res = HcfSignSpiEcdsaCreate(&g_params, nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest030, TestSize.Level0) { HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1curveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -917,13 +679,12 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest030, Te HcfObjDestroy(spiObj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest031, TestSize.Level0) { HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -936,7 +697,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest031, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest032, TestSize.Level0) { HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -953,7 +714,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest032, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest033, TestSize.Level0) { HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -970,7 +731,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest033, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest034, TestSize.Level0) { HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -982,7 +743,7 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest034, Te HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest035, TestSize.Level0) { HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -996,4 +757,26 @@ HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest035, Te ASSERT_EQ(res, HCF_INVALID_PARAMS); HcfObjDestroy(spiObj); } + +HWTEST_F(CryptoBrainPoolNoLengthSignTest, CryptoBrainPoolNoLengthSignTest036, TestSize.Level0) +{ + HcfSign *sign = nullptr; + HcfResult ret = HcfSignCreate("ECC_BrainPoolP160r1|SHA1", &sign); + ASSERT_EQ(ret, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + int32_t returnInt = 0; + ret = sign->setSignSpecInt(sign, SM2_USER_ID_UINT8ARR, returnInt); + ASSERT_EQ(ret, HCF_NOT_SUPPORT); + ret = sign->getSignSpecInt(sign, SM2_USER_ID_UINT8ARR, &returnInt); + ASSERT_EQ(ret, HCF_NOT_SUPPORT); + HcfBlob returnBlob = { .data = nullptr, .len = 0}; + ret = sign->setSignSpecUint8Array(sign, SM2_USER_ID_UINT8ARR, returnBlob); + ASSERT_EQ(ret, HCF_NOT_SUPPORT); + char *itemName = nullptr; + ret = sign->getSignSpecString(sign, SM2_USER_ID_UINT8ARR, &itemName); + ASSERT_EQ(ret, HCF_NOT_SUPPORT); + + HcfObjDestroy(sign); } +} \ No newline at end of file diff --git a/test/unittest/src/crypto_brainpool_no_length_verify_test.cpp b/test/unittest/src/crypto_brainpool_no_length_verify_test.cpp index cec7dbe..ad1da2f 100644 --- a/test/unittest/src/crypto_brainpool_no_length_verify_test.cpp +++ b/test/unittest/src/crypto_brainpool_no_length_verify_test.cpp @@ -17,10 +17,10 @@ #include #include "asy_key_generator.h" +#include "ecc_common_param_spec.h" #include "ecc_key_util.h" #include "key_utils.h" #include "blob.h" -#include "detailed_ecc_key_params.h" #include "ecc_openssl_common.h" #include "ecc_openssl_common_param_spec.h" #include "ecc_common.h" @@ -39,8 +39,8 @@ using namespace testing::ext; namespace { class CryptoBrainPoolNoLengthVerifyTest : public testing::Test { public: - static void SetUpTestCase(); - static void TearDownTestCase(); + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; void SetUp(); void TearDown(); }; @@ -48,10 +48,6 @@ public: static string g_brainpool160r1AlgName = "ECC_BrainPoolP160r1"; static string g_brainpool160r1CurveName = "NID_brainpoolP160r1"; -HcfEccCommParamsSpec *g_eccCommSpec = nullptr; - -HcfEccKeyPairParamsSpec g_brainpool160r1KeyPairSpec; - void CryptoBrainPoolNoLengthVerifyTest::SetUp() {} void CryptoBrainPoolNoLengthVerifyTest::TearDown() {} @@ -71,140 +67,56 @@ HcfObjectBase obj = { .destroy = nullptr }; -static HcfResult ConstructEccBrainPool160r1KeyPairCommParamsSpec(const string &algoName, HcfEccCommParamsSpec **spec) +static HcfResult HcfVerifyCreateTest(const char *algName) { - HcfEccCommParamsSpec *eccCommSpec = nullptr; - HcfEccKeyUtilCreate(algoName.c_str(), &eccCommSpec); - if (eccCommSpec == nullptr) { - return HCF_INVALID_PARAMS; - } - *spec = eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult Constructbrainpool160r1KeyPairParamsSpec(const string &algoName, const string &curveName, - HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(keyPair); - return res; + HcfVerify *verify = nullptr; + HcfResult res = HcfVerifyCreate(algName, &verify); + if (res == HCF_SUCCESS) { + HcfObjDestroy(verify); } - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_brainpool160r1KeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccKeyPairSpec->base.base.algName = g_eccCommSpec->base.algName; - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = g_eccCommSpec->field; - eccKeyPairSpec->base.field->fieldType = g_eccCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.data; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.len; - eccKeyPairSpec->base.a.data = g_eccCommSpec->a.data; - eccKeyPairSpec->base.a.len = g_eccCommSpec->a.len; - eccKeyPairSpec->base.b.data = g_eccCommSpec->b.data; - eccKeyPairSpec->base.b.len = g_eccCommSpec->b.len; - eccKeyPairSpec->base.g.x.data = g_eccCommSpec->g.x.data; - eccKeyPairSpec->base.g.x.len = g_eccCommSpec->g.x.len; - eccKeyPairSpec->base.g.y.data = g_eccCommSpec->g.y.data; - eccKeyPairSpec->base.g.y.len = g_eccCommSpec->g.y.len; - eccKeyPairSpec->base.n.data = g_eccCommSpec->n.data; - eccKeyPairSpec->base.n.len = g_eccCommSpec->n.len; - eccKeyPairSpec->base.h = g_eccCommSpec->h; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); - eccKeyPairSpec->pk.x.data = retBigInt.data; - eccKeyPairSpec->pk.x.len = retBigInt.len; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); - eccKeyPairSpec->pk.y.data =retBigInt.data; - eccKeyPairSpec->pk.y.len = retBigInt.len; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); - eccKeyPairSpec->sk.data = retBigInt.data; - eccKeyPairSpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; -} - -void CryptoBrainPoolNoLengthVerifyTest::SetUpTestCase() -{ - ConstructEccBrainPool160r1KeyPairCommParamsSpec("NID_brainpoolP160r1", &g_eccCommSpec); -} - -void CryptoBrainPoolNoLengthVerifyTest::TearDownTestCase() -{ - FreeEccCommParamsSpec(g_eccCommSpec); + return res; } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest001_1, TestSize.Level0) { - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA1", &verify); + HcfResult res = HcfVerifyCreateTest("ECC_BrainPoolP160r1|SHA1"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - HcfObjDestroy(verify); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest001_2, TestSize.Level0) { - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreateTest("ECC_BrainPoolP160r1|SHA224"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - HcfObjDestroy(verify); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest001_3, TestSize.Level0) { - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA256", &verify); + HcfResult res = HcfVerifyCreateTest("ECC_BrainPoolP160r1|SHA256"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - HcfObjDestroy(verify); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest001_4, TestSize.Level0) { - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA384", &verify); - + HcfResult res = HcfVerifyCreateTest("ECC_BrainPoolP160r1|SHA384"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - HcfObjDestroy(verify); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest001_5, TestSize.Level0) { - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA512", &verify); - + HcfResult res = HcfVerifyCreateTest("ECC_BrainPoolP160r1|SHA512"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - HcfObjDestroy(verify); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest001_6, TestSize.Level0) { - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|MD5", &verify); - + HcfResult res = HcfVerifyCreateTest("ECC_BrainPoolP160r1|MD5"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - HcfObjDestroy(verify); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest002, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); @@ -217,7 +129,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest002 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest003, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); @@ -227,7 +139,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest003 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest004, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); @@ -238,7 +150,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest004 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest005, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); @@ -249,7 +161,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest005 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest006, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); @@ -262,7 +174,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest006 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest007, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); @@ -275,7 +187,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest007 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest008, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); @@ -288,29 +200,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest008 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest009, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); res = verify->init(verify, nullptr, keyPair->pubKey); ASSERT_EQ(res, HCF_SUCCESS); - HcfObjDestroy(generator); HcfObjDestroy(keyPair); HcfObjDestroy(verify); } @@ -318,23 +219,13 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest009 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest010, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -342,29 +233,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest010 ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest011, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -372,29 +252,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest011 ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest012, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -406,29 +275,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest012 HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest013, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -437,29 +295,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest013 HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest014, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -468,29 +315,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest014 HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest015, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -502,29 +338,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest015 HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest016, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -536,29 +361,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest016 HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest017, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -570,29 +384,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest017 HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest018, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -604,29 +407,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest018 HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest019, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -641,29 +433,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest019 HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest020, TestSize.Level0) { HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -679,29 +460,18 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest020 HcfObjDestroy(verify); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest021, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -733,33 +503,22 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest021 bool flag = verify->verify(verify, nullptr, &out); ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(sign); HcfObjDestroy(verify); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest022, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -783,33 +542,22 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest022 bool flag = verify->verify(verify, &g_mockInput, &out); ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(sign); HcfObjDestroy(verify); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest023, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -841,33 +589,22 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest023 bool flag = verify->verify(nullptr, nullptr, &out); ASSERT_NE(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(sign); HcfObjDestroy(verify); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest024, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -899,33 +636,22 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest024 bool flag = verify->verify((HcfVerify *)&obj, nullptr, &out); ASSERT_NE(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(sign); HcfObjDestroy(verify); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest025, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -954,33 +680,22 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest025 bool flag = verify->verify((HcfVerify *)(&obj), nullptr, &out); ASSERT_NE(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(sign); - HcfObjDestroy(generator); HcfObjDestroy(verify); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest026, TestSize.Level0) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -1014,11 +729,10 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest026 bool flag = verify->verify((HcfVerify *)(&obj), &input, &out); ASSERT_NE(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(sign); HcfObjDestroy(verify); - HcfObjDestroy(generator); } HcfSignatureParams g_params = { @@ -1030,30 +744,19 @@ HcfSignatureParams g_params = { HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest027, TestSize.Level0) { - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, nullptr); + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest028, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); - + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -1062,29 +765,17 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest028 HcfObjDestroy(spiObj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest029, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); - + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -1093,13 +784,12 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest029 HcfObjDestroy(spiObj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest030, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1117,7 +807,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest030 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest031, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1135,7 +825,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest031 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest032, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1148,7 +838,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest032 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest033, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1167,7 +857,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest033 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest034, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1185,7 +875,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest034 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest035, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1197,7 +887,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest035 HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest036, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); + HcfResult res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -1210,7 +900,7 @@ static bool GetSignTestData(HcfBlob *out, HcfPriKey *priKey) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); + HcfResult res = HcfSignCreate("ECC_BrainPoolP160r1|SHA224", &sign); if (res != HCF_SUCCESS) { return false; } @@ -1235,7 +925,7 @@ static void MemoryMockTestFunc(uint32_t mallocCount, HcfBlob *out, HcfPubKey *pu ResetRecordMallocNum(); SetMockMallocIndex(i); HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); if (res != HCF_SUCCESS) { continue; } @@ -1259,23 +949,13 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest037 StartRecordMallocNum(); HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -1294,8 +974,7 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest037 uint32_t mallocCount = GetMallocNum(); MemoryMockTestFunc(mallocCount, &out, keyPair->pubKey); EndRecordMallocNum(); - free(out.data); - HcfObjDestroy(generator); + HcfFree(out.data); HcfObjDestroy(keyPair); } @@ -1305,7 +984,7 @@ static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *out, HcfPubKey *p ResetOpensslCallNum(); SetOpensslCallMockIndex(i); HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); if (res != HCF_SUCCESS) { continue; } @@ -1328,23 +1007,13 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest038 { StartRecordOpensslCallNum(); HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = Constructbrainpool160r1KeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CurveName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); + res = GenerateBrainpoolP160r1KeyPair(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -1364,8 +1033,30 @@ HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest038 uint32_t mallocCount = GetOpensslCallNum(); OpensslMockTestFunc(mallocCount, &out, keyPair->pubKey); EndRecordOpensslCallNum(); - free(out.data); - HcfObjDestroy(generator); + HcfFree(out.data); HcfObjDestroy(keyPair); } + +HWTEST_F(CryptoBrainPoolNoLengthVerifyTest, CryptoBrainPoolNoLengthVerifyTest039, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + HcfResult res = HcfVerifyCreate("ECC_BrainPoolP160r1|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + int32_t returnInt = 0; + res = verify->setVerifySpecInt(verify, SM2_USER_ID_UINT8ARR, returnInt); + ASSERT_EQ(res, HCF_NOT_SUPPORT); + res = verify->getVerifySpecInt(verify, SM2_USER_ID_UINT8ARR, &returnInt); + ASSERT_EQ(res, HCF_NOT_SUPPORT); + HcfBlob returnBlob = { .data = nullptr, .len = 0}; + res = verify->setVerifySpecUint8Array(verify, SM2_USER_ID_UINT8ARR, returnBlob); + ASSERT_EQ(res, HCF_NOT_SUPPORT); + char *itemName = nullptr; + res = verify->getVerifySpecString(verify, SM2_USER_ID_UINT8ARR, &itemName); + ASSERT_EQ(res, HCF_NOT_SUPPORT); + + HcfObjDestroy(verify); } +} \ No newline at end of file diff --git a/test/unittest/src/crypto_dh_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_dh_asy_key_generator_by_spec_test.cpp index cc2b539..bab19b7 100644 --- a/test/unittest/src/crypto_dh_asy_key_generator_by_spec_test.cpp +++ b/test/unittest/src/crypto_dh_asy_key_generator_by_spec_test.cpp @@ -16,6 +16,7 @@ #include #include +#include "alg_25519_common_param_spec.h" #include "asy_key_generator.h" #include "blob.h" #include "dh_key_util.h" @@ -28,7 +29,6 @@ #include "dh_asy_key_generator_openssl.h" #include "detailed_dh_key_params.h" #include "alg_25519_asy_key_generator_openssl.h" -#include "detailed_alg_25519_key_params.h" #include "dh_common_param_spec_generator_openssl.h" #include "memory_mock.h" #include "openssl_adapter_mock.h" @@ -70,7 +70,6 @@ static string g_dh3072AlgoName = "DH_modp3072"; static string g_dh4096AlgoName = "DH_modp4096"; static string g_dh6144AlgoName = "DH_modp6144"; static string g_dh8192AlgoName = "DH_modp8192"; -static string g_ed25519AlgoName = "Ed25519"; static string g_dhAlgoName = "DH"; static string g_dhpubkeyformatName = "X.509"; @@ -82,14 +81,7 @@ HcfDhCommParamsSpec *g_dh3072CommSpec = nullptr; HcfDhCommParamsSpec *g_dh4096CommSpec = nullptr; HcfDhCommParamsSpec *g_dh6144CommSpec = nullptr; HcfDhCommParamsSpec *g_dh8192CommSpec = nullptr; - -HcfDhKeyPairParamsSpec g_dhKeyPairSpec; -HcfDhPriKeyParamsSpec g_dhPriKeySpec; -HcfDhPubKeyParamsSpec g_dhPubKeySpec; - -HcfAlg25519KeyPairParamsSpec g_ed25519KeyPairSpec; -HcfAlg25519PriKeyParamsSpec g_ed25519PriKeySpec; -HcfAlg25519PubKeyParamsSpec g_ed25519PubKeySpec; +HcfKeyPair *g_dhKeyPair = nullptr; void CryptoDHAsyKeyGeneratorBySpecTest::SetUp() {} void CryptoDHAsyKeyGeneratorBySpecTest::TearDown() {} @@ -103,6 +95,44 @@ HcfObjectBase g_obj = { .destroy = nullptr }; +static void DestroyTestDhPriKeySpec(HcfDhPriKeyParamsSpec *spec) +{ + if (spec == NULL) { + return; + } + if (spec->sk.data != NULL) { + (void)memset_s(spec->sk.data, spec->sk.len, 0, spec->sk.len); + HcfFree(spec->sk.data); + spec->sk.data = NULL; + } + HcfFree(spec); +} + +static void DestroyTestDhPubKeySpec(HcfDhPubKeyParamsSpec *spec) +{ + if (spec == NULL) { + return; + } + HcfFree(spec->pk.data); + spec->pk.data = NULL; + HcfFree(spec); +} + +static void DestroyTestDhKeyPairSpec(HcfDhKeyPairParamsSpec *spec) +{ + if (spec == NULL) { + return; + } + HcfFree(spec->pk.data); + spec->pk.data = NULL; + if (spec->sk.data != NULL) { + (void)memset_s(spec->sk.data, spec->sk.len, 0, spec->sk.len); + HcfFree(spec->sk.data); + spec->sk.data = NULL; + } + HcfFree(spec); +} + static HcfResult ConstructDHKeyCommParamsSpec(int32_t pLen, int32_t skLen, HcfDhCommParamsSpec **spec) { HcfDhCommParamsSpec *dhCommSpec = nullptr; @@ -114,51 +144,30 @@ static HcfResult ConstructDHKeyCommParamsSpec(int32_t pLen, int32_t skLen, HcfDh return HCF_SUCCESS; } -static HcfResult ConstructDHKeyPairParamsCommonSpec(const string &algoName, HcfDhCommParamsSpec *comSpec, - HcfAsyKeyParamsSpec **spec) +static HcfResult ConstructDhKeyPairBigInt(HcfKeyPair *keyPair, HcfDhKeyPairParamsSpec *dhKeyPairSpec) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return res; - } - HcfDhKeyPairParamsSpec *dhKeyPairSpec = &g_dhKeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - dhKeyPairSpec->base.base.algName = comSpec->base.algName; - dhKeyPairSpec->base.base.specType = HCF_COMMON_PARAMS_SPEC; - dhKeyPairSpec->base.g = comSpec->g; - dhKeyPairSpec->base.p = comSpec->p; - dhKeyPairSpec->base.length = comSpec->length; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_PK_BN, &retBigInt); + HcfBigInteger retBigInt = { .data = NULL, .len = 0 }; + HcfResult res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_PK_BN, &retBigInt); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); return res; } dhKeyPairSpec->pk.data = retBigInt.data; dhKeyPairSpec->pk.len = retBigInt.len; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, DH_SK_BN, &retBigInt); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); + HcfFree(dhKeyPairSpec->pk.data); + dhKeyPairSpec->pk.data = NULL; + dhKeyPairSpec->pk.len = 0; return res; } dhKeyPairSpec->sk.data = retBigInt.data; dhKeyPairSpec->sk.len = retBigInt.len; - *spec = (HcfAsyKeyParamsSpec *)dhKeyPairSpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); return HCF_SUCCESS; } -static HcfResult ConstructDHKeyPairParamsSpec(const string &algoName, HcfDhCommParamsSpec *comSpec, - HcfAsyKeyParamsSpec **spec) +static HcfResult ConstructDHKeyPairParamsCommonSpec(const std::string &algoName, + HcfDhCommParamsSpec *dhCommParamsSpec, HcfAsyKeyParamsSpec **spec) { HcfAsyKeyGenerator *generator = nullptr; HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); @@ -172,30 +181,68 @@ static HcfResult ConstructDHKeyPairParamsSpec(const string &algoName, HcfDhCommP HcfObjDestroy(generator); return res; } - HcfDhKeyPairParamsSpec *dhKeyPairSpec = &g_dhKeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - dhKeyPairSpec->base.base.algName = comSpec->base.algName; - dhKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - dhKeyPairSpec->base.g = comSpec->g; - dhKeyPairSpec->base.p = comSpec->p; - dhKeyPairSpec->base.length = comSpec->length; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_PK_BN, &retBigInt); + + HcfDhKeyPairParamsSpec *dhKeyPairSpec = + reinterpret_cast(HcfMalloc(sizeof(HcfDhKeyPairParamsSpec), 0)); + if (dhKeyPairSpec != nullptr) { + dhKeyPairSpec->base.base.algName = dhCommParamsSpec->base.algName; + dhKeyPairSpec->base.base.specType = HCF_COMMON_PARAMS_SPEC; + dhKeyPairSpec->base.p.data = dhCommParamsSpec->p.data; + dhKeyPairSpec->base.p.len = dhCommParamsSpec->p.len; + dhKeyPairSpec->base.g.data = dhCommParamsSpec->g.data; + dhKeyPairSpec->base.g.len = dhCommParamsSpec->g.len; + dhKeyPairSpec->base.length = dhCommParamsSpec->length; + res = ConstructDhKeyPairBigInt(keyPair, dhKeyPairSpec); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + HcfFree(dhKeyPairSpec); + return res; + } + *spec = reinterpret_cast(dhKeyPairSpec); + } + + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return HCF_SUCCESS; +} + +static HcfResult ConstructDHKeyPairParamsSpec(const std::string &algoName, + HcfDhCommParamsSpec *dhCommParamsSpec, HcfAsyKeyParamsSpec **spec) +{ + HcfAsyKeyGenerator *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); return res; } - dhKeyPairSpec->pk.data = retBigInt.data; - dhKeyPairSpec->pk.len = retBigInt.len; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, DH_SK_BN, &retBigInt); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); if (res != HCF_SUCCESS) { HcfObjDestroy(generator); - HcfObjDestroy(keyPair); return res; } - dhKeyPairSpec->sk.data = retBigInt.data; - dhKeyPairSpec->sk.len = retBigInt.len; - *spec = (HcfAsyKeyParamsSpec *)dhKeyPairSpec; + + HcfDhKeyPairParamsSpec *dhKeyPairSpec = + reinterpret_cast(HcfMalloc(sizeof(HcfDhKeyPairParamsSpec), 0)); + if (dhKeyPairSpec != nullptr) { + dhKeyPairSpec->base.base.algName = dhCommParamsSpec->base.algName; + dhKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + dhKeyPairSpec->base.p.data = dhCommParamsSpec->p.data; + dhKeyPairSpec->base.p.len = dhCommParamsSpec->p.len; + dhKeyPairSpec->base.g.data = dhCommParamsSpec->g.data; + dhKeyPairSpec->base.g.len = dhCommParamsSpec->g.len; + dhKeyPairSpec->base.length = dhCommParamsSpec->length; + res = ConstructDhKeyPairBigInt(keyPair, dhKeyPairSpec); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + HcfFree(dhKeyPairSpec); + return res; + } + *spec = reinterpret_cast(dhKeyPairSpec); + } + HcfObjDestroy(generator); HcfObjDestroy(keyPair); return HCF_SUCCESS; @@ -204,18 +251,26 @@ static HcfResult ConstructDHKeyPairParamsSpec(const string &algoName, HcfDhCommP static HcfResult ConstructDHPubKeyParamsSpec(const string &algoName, HcfDhCommParamsSpec *comSpec, HcfAsyKeyParamsSpec **spec) { + if (comSpec == nullptr) { + return HCF_INVALID_PARAMS; + } + HcfDhPubKeyParamsSpec *dhPubKeySpec = (HcfDhPubKeyParamsSpec*)HcfMalloc(sizeof(HcfDhPubKeyParamsSpec), 0); + if (dhPubKeySpec == nullptr) { + return HCF_ERR_MALLOC; + } HcfAsyKeyGenerator *generator = nullptr; HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); if (res != HCF_SUCCESS) { + HcfFree(dhPubKeySpec); return res; } HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, nullptr, &keyPair); if (res != HCF_SUCCESS) { HcfObjDestroy(generator); + HcfFree(dhPubKeySpec); return res; } - HcfDhPubKeyParamsSpec *dhPubKeySpec = &g_dhPubKeySpec; HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; dhPubKeySpec->base.base.algName = comSpec->base.algName; dhPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; @@ -226,12 +281,13 @@ static HcfResult ConstructDHPubKeyParamsSpec(const string &algoName, HcfDhCommPa if (res != HCF_SUCCESS) { HcfObjDestroy(generator); HcfObjDestroy(keyPair); + HcfFree(dhPubKeySpec); return res; } dhPubKeySpec->pk.data = retBigInt.data; dhPubKeySpec->pk.len = retBigInt.len; - *spec = (HcfAsyKeyParamsSpec *)dhPubKeySpec; + *spec = reinterpret_cast(dhPubKeySpec); HcfObjDestroy(generator); HcfObjDestroy(keyPair); return HCF_SUCCESS; @@ -240,9 +296,17 @@ static HcfResult ConstructDHPubKeyParamsSpec(const string &algoName, HcfDhCommPa static HcfResult ConstructDHPriKeyParamsSpec(const string &algoName, HcfDhCommParamsSpec *comSpec, HcfAsyKeyParamsSpec **spec) { + if (comSpec == nullptr) { + return HCF_INVALID_PARAMS; + } + HcfDhPriKeyParamsSpec *dhPriKeySpec = (HcfDhPriKeyParamsSpec*)HcfMalloc(sizeof(HcfDhPriKeyParamsSpec), 0); + if (dhPriKeySpec == nullptr) { + return HCF_ERR_MALLOC; + } HcfAsyKeyGenerator *generator = nullptr; HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); if (res != HCF_SUCCESS) { + HcfFree(dhPriKeySpec); return res; } @@ -250,9 +314,9 @@ static HcfResult ConstructDHPriKeyParamsSpec(const string &algoName, HcfDhCommPa res = generator->generateKeyPair(generator, nullptr, &keyPair); if (res != HCF_SUCCESS) { HcfObjDestroy(generator); + HcfFree(dhPriKeySpec); return res; } - HcfDhPriKeyParamsSpec *dhPriKeySpec = &g_dhPriKeySpec; HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; dhPriKeySpec->base.base.algName = comSpec->base.algName; dhPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; @@ -263,122 +327,46 @@ static HcfResult ConstructDHPriKeyParamsSpec(const string &algoName, HcfDhCommPa if (res != HCF_SUCCESS) { HcfObjDestroy(generator); HcfObjDestroy(keyPair); + HcfFree(dhPriKeySpec); return res; } dhPriKeySpec->sk.data = retBigInt.data; dhPriKeySpec->sk.len = retBigInt.len; - *spec = (HcfAsyKeyParamsSpec *)dhPriKeySpec; + *spec = reinterpret_cast(dhPriKeySpec); HcfObjDestroy(generator); HcfObjDestroy(keyPair); return HCF_SUCCESS; } -static HcfResult ConstructEd25519KeyPairParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) +static HcfResult HcfDhKeyUtilCreateTest(const int pLen, const int skLen) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return res; - } - HcfAlg25519KeyPairParamsSpec *ed25519KeyPairSpec = &g_ed25519KeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - ed25519KeyPairSpec->base.algName = g_ed25519AlgoName.data(); - ed25519KeyPairSpec->base.specType = HCF_KEY_PAIR_SPEC; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - ed25519KeyPairSpec->pk.data = retBigInt.data; - ed25519KeyPairSpec->pk.len = retBigInt.len; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; + HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; + HcfResult res = HcfDhKeyUtilCreate(pLen, skLen, &returnCommonParamSpec); + if (res == HCF_SUCCESS) { + FreeDhCommParamsSpec(returnCommonParamSpec); } - ed25519KeyPairSpec->sk.data = retBigInt.data; - ed25519KeyPairSpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)ed25519KeyPairSpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; + return res; } -static HcfResult ConstructEd25519PubKeyParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) +static HcfResult generateKeyPairTest(HcfKeyPair **keyPair) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); return res; } - - HcfAlg25519PubKeyParamsSpec *ed25519PubKeySpec = &g_ed25519PubKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - ed25519PubKeySpec->base.algName = g_ed25519AlgoName.data(); - ed25519PubKeySpec->base.specType = HCF_PUBLIC_KEY_SPEC; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); + HcfAsyKeyGeneratorBySpec *returnObj = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); return res; } - ed25519PubKeySpec->pk.data = retBigInt.data; - ed25519PubKeySpec->pk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)ed25519PubKeySpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; -} - -static HcfResult ConstructEd25519PriKeyParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return HCF_INVALID_PARAMS; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return HCF_INVALID_PARAMS; - } - - HcfAlg25519PriKeyParamsSpec *ed25519PriKeySpec = &g_ed25519PriKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - ed25519PriKeySpec->base.algName = g_ed25519AlgoName.data(); - ed25519PriKeySpec->base.specType = HCF_PRIVATE_KEY_SPEC; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); + res = returnObj->generateKeyPair(returnObj, keyPair); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); return res; } - ed25519PriKeySpec->sk.data = retBigInt.data; - ed25519PriKeySpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)ed25519PriKeySpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - + HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); return HCF_SUCCESS; } @@ -396,6 +384,7 @@ void CryptoDHAsyKeyGeneratorBySpecTest::SetUpTestCase() ASSERT_EQ(res, HCF_SUCCESS); res = ConstructDHKeyCommParamsSpec(PLEN_DH8192, SKLEN_DH1024, &g_dh8192CommSpec); ASSERT_EQ(res, HCF_SUCCESS); + res = generateKeyPairTest(&g_dhKeyPair); } void CryptoDHAsyKeyGeneratorBySpecTest::TearDownTestCase() @@ -406,60 +395,43 @@ void CryptoDHAsyKeyGeneratorBySpecTest::TearDownTestCase() FreeDhCommParamsSpec(g_dh4096CommSpec); FreeDhCommParamsSpec(g_dh6144CommSpec); FreeDhCommParamsSpec(g_dh8192CommSpec); + HcfObjDestroy(g_dhKeyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest001_1, TestSize.Level0) { - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH2048, SKLEN_DH1024, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH2048, SKLEN_DH1024); ASSERT_EQ(res, HCF_SUCCESS); - - FreeDhCommParamsSpec(returnCommonParamSpec); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest001_2, TestSize.Level0) { - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH3072, SKLEN_DH1024, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH3072, SKLEN_DH1024); ASSERT_EQ(res, HCF_SUCCESS); - - FreeDhCommParamsSpec(returnCommonParamSpec); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest001_3, TestSize.Level0) { - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH4096, SKLEN_DH1024, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH4096, SKLEN_DH1024); ASSERT_EQ(res, HCF_SUCCESS); - - FreeDhCommParamsSpec(returnCommonParamSpec); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest001_4, TestSize.Level0) { - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH6144, SKLEN_DH1024, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH6144, SKLEN_DH1024); ASSERT_EQ(res, HCF_SUCCESS); - - FreeDhCommParamsSpec(returnCommonParamSpec); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest001_5, TestSize.Level0) { - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH8192, SKLEN_DH1024, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH8192, SKLEN_DH1024); ASSERT_EQ(res, HCF_SUCCESS); - - FreeDhCommParamsSpec(returnCommonParamSpec); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest001_6, TestSize.Level0) { - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH8192, SKLEN_EQZERO, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH8192, SKLEN_EQZERO); ASSERT_EQ(res, HCF_SUCCESS); - - FreeDhCommParamsSpec(returnCommonParamSpec); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002_1, TestSize.Level0) @@ -475,6 +447,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002 ASSERT_NE(returnObj, nullptr); HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002_2, TestSize.Level0) @@ -490,6 +463,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002 ASSERT_NE(returnObj, nullptr); HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002_3, TestSize.Level0) @@ -505,6 +479,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002 ASSERT_NE(returnObj, nullptr); HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002_4, TestSize.Level0) @@ -520,6 +495,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002 ASSERT_NE(returnObj, nullptr); HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002_5, TestSize.Level0) @@ -535,6 +511,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002 ASSERT_NE(returnObj, nullptr); HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002_6, TestSize.Level0) @@ -550,6 +527,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest002 ASSERT_NE(returnObj, nullptr); HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest003, TestSize.Level0) @@ -568,6 +546,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest003 ASSERT_NE(className, NULL); HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest004, TestSize.Level0) @@ -583,6 +562,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest004 ASSERT_NE(returnObj, nullptr); returnObj->base.destroy(&(returnObj->base)); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest005, TestSize.Level0) @@ -601,250 +581,108 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest005 ASSERT_EQ(algName, g_dhAlgoName); HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest006, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); + HcfResult res = generateKeyPairTest(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); - HcfObjDestroy(returnObj); HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest007, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->base.getClass(); + const char *className = g_dhKeyPair->base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(returnObj); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest008, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); + HcfResult res = generateKeyPairTest(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest009, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->pubKey->base.base.getClass(); + const char *className = g_dhKeyPair->pubKey->base.base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(returnObj); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest010, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); + HcfResult res = generateKeyPairTest(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); keyPair->pubKey = nullptr; - HcfObjDestroy(returnObj); HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest011, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algorithmName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + const char *algorithmName = g_dhKeyPair->pubKey->base.getAlgorithm(&(g_dhKeyPair->pubKey->base)); ASSERT_EQ(algorithmName, g_dhAlgoName); HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + HcfResult res = g_dhKeyPair->pubKey->base.getEncoded(&(g_dhKeyPair->pubKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); HcfFree(blob.data); - const char *formatName = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + const char *formatName = g_dhKeyPair->pubKey->base.getFormat(&(g_dhKeyPair->pubKey->base)); ASSERT_EQ(formatName, g_dhpubkeyformatName); - - HcfObjDestroy(returnObj); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest012, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->priKey->base.base.getClass(); + const char *className = g_dhKeyPair->priKey->base.base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest013, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); + HcfResult res = generateKeyPairTest(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); keyPair->priKey = nullptr; - HcfObjDestroy(returnObj); HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest014, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algorithmName = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + const char *algorithmName = g_dhKeyPair->priKey->base.getAlgorithm(&(g_dhKeyPair->priKey->base)); ASSERT_EQ(algorithmName, g_dhAlgoName); HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + HcfResult res = g_dhKeyPair->priKey->base.getEncoded(&(g_dhKeyPair->priKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); HcfFree(blob.data); - const char *formatName = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + const char *formatName = g_dhKeyPair->priKey->base.getFormat(&(g_dhKeyPair->priKey->base)); ASSERT_EQ(formatName, g_dhprikeyformatName); - - HcfObjDestroy(keyPair); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest015, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); + HcfResult res = generateKeyPairTest(&keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -856,7 +694,6 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest015 ASSERT_EQ(blob.len, 0); HcfFree(blob.data); HcfObjDestroy(keyPair); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest016, TestSize.Level0) @@ -899,6 +736,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest016 HcfObjDestroy(pubKey); HcfObjDestroy(returnObj); + DestroyTestDhPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest017, TestSize.Level0) @@ -941,6 +779,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest017 HcfObjDestroy(priKey); HcfObjDestroy(returnObj); + DestroyTestDhPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest018, TestSize.Level0) @@ -970,7 +809,6 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest019 HcfAsyKeyGeneratorSpi *returnSpi = nullptr; HcfResult res = HcfAsyKeyGeneratorSpiDhCreate(¶ms, &returnSpi); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -986,6 +824,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest019 HcfObjDestroy(returnSpi); HcfObjDestroy(keyPair); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest020, TestSize.Level0) @@ -998,7 +837,6 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest020 HcfAsyKeyGeneratorSpi *returnSpi = nullptr; HcfResult res = HcfAsyKeyGeneratorSpiDhCreate(¶ms, &returnSpi); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -1014,6 +852,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest020 HcfObjDestroy(returnSpi); HcfObjDestroy(pubKey); + DestroyTestDhPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest021, TestSize.Level0) @@ -1026,7 +865,6 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest021 HcfAsyKeyGeneratorSpi *returnSpi = nullptr; HcfResult res = HcfAsyKeyGeneratorSpiDhCreate(¶ms, &returnSpi); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -1042,6 +880,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest021 HcfObjDestroy(returnSpi); HcfObjDestroy(priKey); + DestroyTestDhPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest022, TestSize.Level0) @@ -1063,6 +902,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest022 ASSERT_NE(algName2, g_dhAlgoName.data()); HcfObjDestroy(returnObj); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest023, TestSize.Level0) @@ -1088,183 +928,79 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest023 HcfObjDestroy(returnObj); HcfObjDestroy(keyPair); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest024, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algorithmName = keyPair->pubKey->base.getAlgorithm(nullptr); + const char *algorithmName = g_dhKeyPair->pubKey->base.getAlgorithm(nullptr); ASSERT_EQ(algorithmName, NULL); - const char *algorithmName1 = keyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); + const char *algorithmName1 = g_dhKeyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); ASSERT_EQ(algorithmName1, NULL); - HcfObjDestroy(keyPair); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest025, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(nullptr, &blob); + HcfResult res = g_dhKeyPair->pubKey->base.getEncoded(nullptr, &blob); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), nullptr); + res = g_dhKeyPair->pubKey->base.getEncoded(&(g_dhKeyPair->pubKey->base), nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); - res = keyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); + res = g_dhKeyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest026, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *formatName = keyPair->pubKey->base.getFormat(nullptr); + const char *formatName = g_dhKeyPair->pubKey->base.getFormat(nullptr); ASSERT_EQ(formatName, nullptr); - const char *formatName1 = keyPair->pubKey->base.getFormat((HcfKey *)&g_obj); + const char *formatName1 = g_dhKeyPair->pubKey->base.getFormat((HcfKey *)&g_obj); ASSERT_EQ(formatName1, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest027, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algorithmName = keyPair->priKey->base.getAlgorithm(nullptr); + const char *algorithmName = g_dhKeyPair->priKey->base.getAlgorithm(nullptr); ASSERT_EQ(algorithmName, NULL); - const char *algorithmName1 = keyPair->priKey->base.getAlgorithm((HcfKey *)&g_obj); + const char *algorithmName1 = g_dhKeyPair->priKey->base.getAlgorithm((HcfKey *)&g_obj); ASSERT_EQ(algorithmName1, NULL); - - HcfObjDestroy(keyPair); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest028, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(nullptr, &blob); + HcfResult res = g_dhKeyPair->priKey->base.getEncoded(nullptr, &blob); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), nullptr); + res = g_dhKeyPair->priKey->base.getEncoded(&(g_dhKeyPair->priKey->base), nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); - res = keyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); + res = g_dhKeyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest029, TestSize.Level0) { - HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructDHKeyPairParamsSpec(g_dh1536AlgoName, g_dh1536CommSpec, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *formatName = keyPair->priKey->base.getFormat(nullptr); + const char *formatName = g_dhKeyPair->priKey->base.getFormat(nullptr); ASSERT_EQ(formatName, nullptr); - const char *formatName1 = keyPair->priKey->base.getFormat((HcfKey *)&g_obj); + const char *formatName1 = g_dhKeyPair->priKey->base.getFormat((HcfKey *)&g_obj); ASSERT_EQ(formatName1, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(returnObj); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest030, TestSize.Level0) @@ -1321,6 +1057,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest030 HcfObjDestroy(pubKey); HcfObjDestroy(returnObj); + DestroyTestDhPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest031, TestSize.Level0) @@ -1377,6 +1114,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest031 HcfObjDestroy(priKey); HcfObjDestroy(returnObj); + DestroyTestDhPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest032, TestSize.Level0) @@ -1413,6 +1151,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest033 HcfObjDestroy(returnObj); HcfObjDestroy(keyPair); + DestroyTestDhPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest034, TestSize.Level0) @@ -1439,6 +1178,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest034 HcfObjDestroy(returnObj); HcfObjDestroy(keyPair); + DestroyTestDhPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest035, TestSize.Level0) @@ -1451,7 +1191,6 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest035 HcfAsyKeyGeneratorSpi *returnSpi = nullptr; HcfResult res = HcfAsyKeyGeneratorSpiDhCreate(¶ms, &returnSpi); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -1467,6 +1206,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest035 HcfObjDestroy(returnSpi); HcfObjDestroy(keyPair); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest036, TestSize.Level0) @@ -1498,7 +1238,6 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest037 HcfAsyKeyGeneratorSpi *returnSpi = nullptr; HcfResult res = HcfAsyKeyGeneratorSpiDhCreate(¶ms, &returnSpi); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -1516,7 +1255,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest037 ASSERT_EQ(keyPair, nullptr); HcfAsyKeyParamsSpec *paramSpec1 = nullptr; - res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec1); + res = ConstructAlg25519KeyPairParamsSpec("Ed25519", true, ¶mSpec1); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec1, nullptr); @@ -1528,6 +1267,8 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest037 HcfObjDestroy(returnSpi); HcfObjDestroy(keyPair); HcfObjDestroy(keyPair1); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec1)); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest038, TestSize.Level0) @@ -1540,7 +1281,6 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest038 HcfAsyKeyGeneratorSpi *returnSpi = nullptr; HcfResult res = HcfAsyKeyGeneratorSpiDhCreate(¶ms, &returnSpi); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -1558,7 +1298,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest038 ASSERT_EQ(pubKey, nullptr); HcfAsyKeyParamsSpec *paramSpec1 = nullptr; - res = ConstructEd25519PubKeyParamsSpec(g_ed25519AlgoName, ¶mSpec1); + res = ConstructAlg25519PubKeyParamsSpec("Ed25519", true, ¶mSpec1); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec1, nullptr); @@ -1570,6 +1310,8 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest038 HcfObjDestroy(returnSpi); HcfObjDestroy(pubKey); HcfObjDestroy(pubKey1); + DestroyTestDhPubKeySpec(reinterpret_cast(paramSpec)); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec1)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest039, TestSize.Level0) @@ -1582,7 +1324,6 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest039 HcfAsyKeyGeneratorSpi *returnSpi = nullptr; HcfResult res = HcfAsyKeyGeneratorSpiDhCreate(¶ms, &returnSpi); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -1600,7 +1341,7 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest039 ASSERT_EQ(priKey, nullptr); HcfAsyKeyParamsSpec *paramSpec1 = nullptr; - res = ConstructEd25519PriKeyParamsSpec(g_ed25519AlgoName, ¶mSpec1); + res = ConstructAlg25519PriKeyParamsSpec("Ed25519", true, ¶mSpec1); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec1, nullptr); @@ -1612,6 +1353,8 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest039 HcfObjDestroy(returnSpi); HcfObjDestroy(priKey); HcfObjDestroy(priKey1); + DestroyTestDhPriKeySpec(reinterpret_cast(paramSpec)); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec1)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest040, TestSize.Level0) @@ -1672,33 +1415,30 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest041 OpensslMockTestFunc(mallocCount, paramSpec); EndRecordOpensslCallNum(); + DestroyTestDhKeyPairSpec(reinterpret_cast(paramSpec)); } -static void OpensslMockTestFunc1(uint32_t mallocCount, HcfDhCommParamsSpec *returnCommonParamSpec) +static void OpensslMockTestFunc1(uint32_t mallocCount) { for (uint32_t i = 0; i < mallocCount; i++) { ResetOpensslCallNum(); SetOpensslCallMockIndex(i); - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH4096, SKLEN_DH1024, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH4096, SKLEN_DH1024); if (res != HCF_SUCCESS) { continue; } - FreeDhCommParamsSpec(returnCommonParamSpec); } } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest042, TestSize.Level0) { StartRecordOpensslCallNum(); - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH4096, SKLEN_DH1024, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH4096, SKLEN_DH1024); ASSERT_EQ(res, HCF_SUCCESS); - FreeDhCommParamsSpec(returnCommonParamSpec); - uint32_t mallocCount = GetOpensslCallNum(); - OpensslMockTestFunc1(mallocCount, returnCommonParamSpec); + OpensslMockTestFunc1(mallocCount); EndRecordOpensslCallNum(); } @@ -1715,24 +1455,19 @@ static void OpensslMockTestFunc2(uint32_t mallocCount) ResetOpensslCallNum(); SetOpensslCallMockIndex(i); - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH512, SKLEN_DH128, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH512, SKLEN_DH128); if (res != HCF_SUCCESS) { continue; } - FreeDhCommParamsSpec(returnCommonParamSpec); } } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest044, TestSize.Level0) { StartRecordOpensslCallNum(); - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH512, SKLEN_DH128, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH512, SKLEN_DH128); ASSERT_EQ(res, HCF_SUCCESS); - FreeDhCommParamsSpec(returnCommonParamSpec); - uint32_t mallocCount = GetOpensslCallNum(); OpensslMockTestFunc2(mallocCount); @@ -1741,24 +1476,20 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest044 HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest045, TestSize.Level0) { - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH2048, SKLEN_DH223, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH2048, SKLEN_DH223); ASSERT_EQ(res, HCF_ERR_MALLOC); - res = HcfDhKeyUtilCreate(PLEN_DH3072, SKLEN_DH255, &returnCommonParamSpec); + res = HcfDhKeyUtilCreateTest(PLEN_DH3072, SKLEN_DH255); ASSERT_EQ(res, HCF_ERR_MALLOC); - res = HcfDhKeyUtilCreate(PLEN_DH4096, SKLEN_DH303, &returnCommonParamSpec); + res = HcfDhKeyUtilCreateTest(PLEN_DH4096, SKLEN_DH303); ASSERT_EQ(res, HCF_ERR_MALLOC); - res = HcfDhKeyUtilCreate(PLEN_DH6144, SKLEN_DH351, &returnCommonParamSpec); + res = HcfDhKeyUtilCreateTest(PLEN_DH6144, SKLEN_DH351); ASSERT_EQ(res, HCF_ERR_MALLOC); - res = HcfDhKeyUtilCreate(PLEN_DH8192, SKLEN_DH399, &returnCommonParamSpec); + res = HcfDhKeyUtilCreateTest(PLEN_DH8192, SKLEN_DH399); ASSERT_EQ(res, HCF_ERR_MALLOC); - - FreeDhCommParamsSpec(returnCommonParamSpec); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest046, TestSize.Level0) @@ -1798,17 +1529,15 @@ HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest046 HcfObjDestroy(generator); HcfObjDestroy(priKey); HcfObjDestroy(keyPair); + DestroyTestDhPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoDHAsyKeyGeneratorBySpecTest, CryptoDHAsyKeyGeneratorBySpecTest047, TestSize.Level0) { - HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; - HcfResult res = HcfDhKeyUtilCreate(PLEN_DH10001, SKLEN_EQZERO, &returnCommonParamSpec); + HcfResult res = HcfDhKeyUtilCreateTest(PLEN_DH10001, SKLEN_EQZERO); ASSERT_EQ(res, HCF_ERR_MALLOC); - res = HcfDhKeyUtilCreate(PLEN_DH511, SKLEN_EQZERO, &returnCommonParamSpec); + res = HcfDhKeyUtilCreateTest(PLEN_DH511, SKLEN_EQZERO); ASSERT_EQ(res, HCF_ERR_MALLOC); - - FreeDhCommParamsSpec(returnCommonParamSpec); } } \ No newline at end of file diff --git a/test/unittest/src/crypto_dh_asy_key_generator_test.cpp b/test/unittest/src/crypto_dh_asy_key_generator_test.cpp index ccabd20..31b9eeb 100644 --- a/test/unittest/src/crypto_dh_asy_key_generator_test.cpp +++ b/test/unittest/src/crypto_dh_asy_key_generator_test.cpp @@ -56,6 +56,8 @@ static string g_dhprikeyformatName = "PKCS#8"; constexpr int BIT8 = 8; constexpr int BIT4 = 4; constexpr int BIT2 = 2; +HcfAsyKeyGenerator *g_dh1536Generator = nullptr; +HcfKeyPair *g_dh1536KeyPair = nullptr; static const char *GetMockClass(void) { @@ -300,32 +302,23 @@ string g_ffdhe_8192_p = static HcfResult DH1536KeyBlob(HcfBlob * priblob, HcfBlob *pubblob) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - if (res != HCF_SUCCESS) { - return res; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_dh1536Generator->generateKeyPair(g_dh1536Generator, nullptr, &keyPair); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); return res; } res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &g_mockDH1536PriKeyBlob); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); HcfObjDestroy(keyPair); return res; } res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &g_mockDH1536PubKeyBlob); if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); + HcfObjDestroy(g_dh1536Generator); HcfObjDestroy(keyPair); return res; } - HcfObjDestroy(generator); HcfObjDestroy(keyPair); return HCF_SUCCESS; } @@ -362,9 +355,25 @@ static HcfResult ECC_BrainPool160r1KeyBlob(HcfBlob * priblob, HcfBlob *pubblob) return HCF_SUCCESS; } +static HcfResult HcfAsyKeyGeneratorCreateTest(const char *algName) +{ + HcfAsyKeyGenerator *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorCreate(algName, &generator); + if (res == HCF_SUCCESS) { + HcfObjDestroy(generator); + } + return res; +} + void CryptoDHAsyKeyGeneratorTest::SetUpTestCase() { - HcfResult res = DH1536KeyBlob(&g_mockDH1536PriKeyBlob, &g_mockDH1536PubKeyBlob); + HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &g_dh1536Generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(g_dh1536Generator, nullptr); + res = g_dh1536Generator->generateKeyPair(g_dh1536Generator, nullptr, &g_dh1536KeyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(g_dh1536KeyPair, nullptr); + res = DH1536KeyBlob(&g_mockDH1536PriKeyBlob, &g_mockDH1536PubKeyBlob); ASSERT_EQ(res, HCF_SUCCESS); res = ECC_BrainPool160r1KeyBlob(&g_mockECC_BrainPool160r1PriKeyBlob, &g_mockECC_BrainPool160r1PubKeyBlob); ASSERT_EQ(res, HCF_SUCCESS); @@ -372,127 +381,74 @@ void CryptoDHAsyKeyGeneratorTest::SetUpTestCase() HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_1, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_modp1536"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_2, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp2048", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_modp2048"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_3, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp3072", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_modp3072"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_4, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp4096", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_modp4096"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_5, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp6144", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_modp6144"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_6, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp8192", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_modp8192"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_7, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe2048", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_ffdhe2048"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_8, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe3072", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_ffdhe3072"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_9, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe4096", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_ffdhe4096"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_10, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe6144", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_ffdhe6144"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest001_11, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe8192", &generator); + HcfResult res = HcfAsyKeyGeneratorCreateTest("DH_ffdhe8192"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest002, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *className = generator->base.getClass(); - - ASSERT_EQ(res, HCF_SUCCESS); + const char *className = g_dh1536Generator->base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest003, TestSize.Level0) @@ -507,98 +463,46 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest003, TestSize.L HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest004, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *algoName = generator->getAlgoName(generator); - - ASSERT_EQ(res, HCF_SUCCESS); + const char *algoName = g_dh1536Generator->getAlgoName(g_dh1536Generator); ASSERT_EQ(algoName, g_dh1536AlgoName); - - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest005, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = g_dh1536Generator->generateKeyPair(g_dh1536Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest006, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->base.getClass(); + const char *className = g_dh1536KeyPair->base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest007, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = g_dh1536Generator->generateKeyPair(g_dh1536Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest008, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->pubKey->base.base.getClass(); + const char *className = g_dh1536KeyPair->pubKey->base.base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest009, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_dh1536Generator->generateKeyPair(g_dh1536Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -606,64 +510,33 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest009, TestSize.L keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); keyPair->pubKey = nullptr; HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest010, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algorithmName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + const char *algorithmName = g_dh1536KeyPair->pubKey->base.getAlgorithm(&(g_dh1536KeyPair->pubKey->base)); ASSERT_EQ(algorithmName, g_dhAlgoName); HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + HcfResult res = g_dh1536KeyPair->pubKey->base.getEncoded(&(g_dh1536KeyPair->pubKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); HcfFree(blob.data); - const char *formatName = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + const char *formatName = g_dh1536KeyPair->pubKey->base.getFormat(&(g_dh1536KeyPair->pubKey->base)); ASSERT_EQ(formatName, g_dhpubkeyformatName); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest011, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->priKey->base.base.getClass(); + const char *className = g_dh1536KeyPair->priKey->base.base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest012, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_dh1536Generator->generateKeyPair(g_dh1536Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -671,45 +544,27 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest012, TestSize.L keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); keyPair->priKey = nullptr; HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest013, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algorithmName = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + const char *algorithmName = g_dh1536KeyPair->priKey->base.getAlgorithm(&(g_dh1536KeyPair->priKey->base)); ASSERT_EQ(algorithmName, g_dhAlgoName); HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + HcfResult res = g_dh1536KeyPair->priKey->base.getEncoded(&(g_dh1536KeyPair->priKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); HcfFree(blob.data); - const char *formatName = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + const char *formatName = g_dh1536KeyPair->priKey->base.getFormat(&(g_dh1536KeyPair->priKey->base)); ASSERT_EQ(formatName, g_dhprikeyformatName); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest014, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = g_dh1536Generator->generateKeyPair(g_dh1536Generator, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -722,94 +577,56 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest014, TestSize.L ASSERT_EQ(blob.len, 0); HcfFree(blob.data); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest015, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); - res = generator->convertKey(generator, nullptr, nullptr, &g_mockDH1536PriKeyBlob, &keyPair); + res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, nullptr, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, nullptr, &keyPair); + res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, &g_mockDH1536PubKeyBlob, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest016, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->base.getClass(); + const char *className = g_dh1536KeyPair->base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest017, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest018, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->pubKey->base.base.getClass(); + const char *className = g_dh1536KeyPair->pubKey->base.base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest019, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -817,64 +634,34 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest019, TestSize.L keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); keyPair->pubKey = nullptr; HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest020, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algorithmName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + const char *algorithmName = g_dh1536KeyPair->pubKey->base.getAlgorithm(&(g_dh1536KeyPair->pubKey->base)); ASSERT_EQ(algorithmName, g_dhAlgoName); HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + HcfResult res = g_dh1536KeyPair->pubKey->base.getEncoded(&(g_dh1536KeyPair->pubKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); HcfFree(blob.data); - const char *formatName = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + const char *formatName = g_dh1536KeyPair->pubKey->base.getFormat(&(g_dh1536KeyPair->pubKey->base)); ASSERT_EQ(formatName, g_dhpubkeyformatName); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest021, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->priKey->base.base.getClass(); + const char *className = g_dh1536KeyPair->priKey->base.base.getClass(); ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest022, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -882,50 +669,33 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest022, TestSize.L keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); keyPair->priKey = nullptr; HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest023, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algorithmName = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + const char *algorithmName = g_dh1536KeyPair->priKey->base.getAlgorithm(&(g_dh1536KeyPair->priKey->base)); ASSERT_EQ(algorithmName, g_dhAlgoName); HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + HcfResult res = g_dh1536KeyPair->priKey->base.getEncoded(&(g_dh1536KeyPair->priKey->base), &blob); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); HcfFree(blob.data); - const char *formatName = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + const char *formatName = g_dh1536KeyPair->priKey->base.getFormat(&(g_dh1536KeyPair->priKey->base)); ASSERT_EQ(formatName, g_dhprikeyformatName); int32_t returnInt = 0; - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, DH_L_NUM, &returnInt); + res = g_dh1536KeyPair->priKey->getAsyKeySpecInt(g_dh1536KeyPair->priKey, DH_L_NUM, &returnInt); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_EQ(returnInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest024, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -938,7 +708,6 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest024, TestSize.L ASSERT_EQ(blob.len, 0); HcfFree(blob.data); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } static void MemoryMallocTestFunc(uint32_t mallocCount) @@ -1118,19 +887,11 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest026, TestSize.L HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest027, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *algoName1 = generator->getAlgoName(nullptr); - ASSERT_EQ(algoName1, NULL); - - const char *algoName2 = generator->getAlgoName((HcfAsyKeyGenerator *)&g_obj); - ASSERT_EQ(algoName2, NULL); + const char *algoName1 = g_dh1536Generator->getAlgoName(nullptr); + ASSERT_EQ(algoName1, nullptr); - HcfObjDestroy(generator); + const char *algoName2 = g_dh1536Generator->getAlgoName((HcfAsyKeyGenerator *)&g_obj); + ASSERT_EQ(algoName2, nullptr); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest028, TestSize.Level0) @@ -1158,171 +919,102 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest029, TestSize.L HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest030, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(nullptr, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(nullptr, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, NULL); + ASSERT_EQ(keyPair, nullptr); - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, nullptr); + res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); - res = generator->convertKey((HcfAsyKeyGenerator *)&g_obj, nullptr, &g_mockDH1536PubKeyBlob, + res = g_dh1536Generator->convertKey((HcfAsyKeyGenerator *)&g_obj, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, NULL); + ASSERT_EQ(keyPair, nullptr); - res = generator->convertKey(generator, nullptr, nullptr, nullptr, &keyPair); + res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, nullptr, nullptr, &keyPair); ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, NULL); + ASSERT_EQ(keyPair, nullptr); - res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, + res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_ERR_CRYPTO_OPERATION); - ASSERT_EQ(keyPair, NULL); + ASSERT_EQ(keyPair, nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest031, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); + const char *algorithmName = g_dh1536KeyPair->pubKey->base.getAlgorithm(nullptr); + ASSERT_EQ(algorithmName, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algorithmName = keyPair->pubKey->base.getAlgorithm(nullptr); - ASSERT_EQ(algorithmName, NULL); - - const char *algorithmName1 = keyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); - ASSERT_EQ(algorithmName1, NULL); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + const char *algorithmName1 = g_dh1536KeyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); + ASSERT_EQ(algorithmName1, nullptr); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest032, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(nullptr, &blob); + HcfResult res = g_dh1536KeyPair->pubKey->base.getEncoded(nullptr, &blob); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), nullptr); + res = g_dh1536KeyPair->pubKey->base.getEncoded(&(g_dh1536KeyPair->pubKey->base), nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); - res = keyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); + res = g_dh1536KeyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest033, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *formatName = keyPair->pubKey->base.getFormat(nullptr); + const char *formatName = g_dh1536KeyPair->pubKey->base.getFormat(nullptr); ASSERT_EQ(formatName, nullptr); - const char *formatName1 = keyPair->pubKey->base.getFormat((HcfKey *)&g_obj); + const char *formatName1 = g_dh1536KeyPair->pubKey->base.getFormat((HcfKey *)&g_obj); ASSERT_EQ(formatName1, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest034, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); + const char *algorithmName = g_dh1536KeyPair->priKey->base.getAlgorithm(nullptr); + ASSERT_EQ(algorithmName, nullptr); - const char *algorithmName = keyPair->priKey->base.getAlgorithm(nullptr); - ASSERT_EQ(algorithmName, NULL); - - const char *algorithmName1 = keyPair->priKey->base.getAlgorithm((HcfKey *)&g_obj); - ASSERT_EQ(algorithmName1, NULL); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); + const char *algorithmName1 = g_dh1536KeyPair->priKey->base.getAlgorithm((HcfKey *)&g_obj); + ASSERT_EQ(algorithmName1, nullptr); } -HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest035, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - +HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest035, TestSize.Level0) +{ HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(nullptr, &blob); + HcfResult res = g_dh1536KeyPair->priKey->base.getEncoded(nullptr, &blob); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), nullptr); + res = g_dh1536KeyPair->priKey->base.getEncoded(&(g_dh1536KeyPair->priKey->base), nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); - res = keyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); + res = g_dh1536KeyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest036, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -1334,17 +1026,13 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest036, TestSize.L ASSERT_EQ(formatName1, nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest037, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -1357,17 +1045,13 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest037, TestSize.L ASSERT_NE(blob.len, 0); HcfFree(blob.data); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest038, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -1380,75 +1064,58 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest038, TestSize.L ASSERT_NE(blob.len, 0); HcfFree(blob.data); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest039, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest040, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest041, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest042, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest043, TestSize.Level0) @@ -1520,36 +1187,28 @@ HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest045, TestSize.L HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest046, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(nullptr); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest047, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); + HcfResult res = g_dh1536Generator->convertKey(g_dh1536Generator, nullptr, + &g_mockDH1536PubKeyBlob, &g_mockDH1536PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&g_obj); HcfObjDestroy(keyPair); - HcfObjDestroy(generator); } static char *ByteToHexString(unsigned char *byteArray, int byteArrayLen) @@ -1603,300 +1262,111 @@ static char *ByteToHexString(unsigned char *byteArray, int byteArrayLen) return reversedString; } -HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest048, TestSize.Level0) +static HcfResult DhPrimeValueCompareWithOpenssl(const char *algName, string OpensslPrime) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp1536", &generator); - ASSERT_EQ(res, HCF_SUCCESS); + HcfResult res = HcfAsyKeyGeneratorCreate(algName, &generator); + if (res != HCF_SUCCESS) { + return res; + } HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generator); + return res; + } HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); - ASSERT_EQ(res, HCF_SUCCESS); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return res; + } char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_modp_1536_p.data()); - EXPECT_EQ(flag, 0); + if (hexString == nullptr) { + HcfFree(returnBigInteger.data); + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return HCF_INVALID_PARAMS; + } + int32_t flag = strcmp(hexString, OpensslPrime.data()); + if (flag) { + res = HCF_INVALID_PARAMS; + } HcfFree(hexString); HcfFree(returnBigInteger.data); HcfObjDestroy(generator); HcfObjDestroy(keyPair); + return res; } -HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest049, TestSize.Level0) +HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest048, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp2048", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_modp1536", g_modp_1536_p); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); +} - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); +HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest049, TestSize.Level0) +{ + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_modp2048", g_modp_2048_p); ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_modp_2048_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest050, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp3072", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_modp3072", g_modp_3072_p); ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_modp_3072_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest051, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp4096", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_modp4096", g_modp_4096_p); ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_modp_4096_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest052, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp6144", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_modp6144", g_modp_6144_p); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); - ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_modp_6144_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest053, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_modp8192", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_modp8192", g_modp_8192_p); ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_modp_8192_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest054, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe2048", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_ffdhe2048", g_ffdhe_2048_p); ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_ffdhe_2048_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest055, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe3072", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_ffdhe3072", g_ffdhe_3072_p); ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_ffdhe_3072_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest056, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe4096", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_ffdhe4096", g_ffdhe_4096_p); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); - ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_ffdhe_4096_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest057, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe6144", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_ffdhe6144", g_ffdhe_6144_p); ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_ffdhe_6144_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } HWTEST_F(CryptoDHAsyKeyGeneratorTest, CryptoDHAsyKeyGeneratorTest058, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("DH_ffdhe8192", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, DH_P_BN, &returnBigInteger); + HcfResult res = DhPrimeValueCompareWithOpenssl("DH_ffdhe8192", g_ffdhe_8192_p); ASSERT_EQ(res, HCF_SUCCESS); - - char *hexString = ByteToHexString(returnBigInteger.data, returnBigInteger.len); - ASSERT_NE(hexString, nullptr); - int32_t flag = strcmp(hexString, g_ffdhe_8192_p.data()); - EXPECT_EQ(flag, 0); - - HcfFree(hexString); - HcfFree(returnBigInteger.data); - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); } } diff --git a/test/unittest/src/crypto_dh_key_agreement_test.cpp b/test/unittest/src/crypto_dh_key_agreement_test.cpp index 4eff5a8..55c8547 100644 --- a/test/unittest/src/crypto_dh_key_agreement_test.cpp +++ b/test/unittest/src/crypto_dh_key_agreement_test.cpp @@ -34,6 +34,12 @@ using namespace std; using namespace testing::ext; namespace { +constexpr int SKLEN_DH128 = 128; +constexpr int SKLEN_DH512 = 512; +constexpr int SKLEN_DH1024 = 1024; +constexpr int PLEN_DH512 = 512; +constexpr int PLEN_DH2048 = 2048; + class CryptoDHKeyAgreementTest : public testing::Test { public: static void SetUpTestCase(); @@ -66,6 +72,68 @@ static HcfObjectBase g_obj = { .destroy = nullptr }; +static HcfResult HcfKeyAgreementCreateTest(const char *algName) +{ + HcfKeyAgreement *keyAgreement = nullptr; + HcfResult res = HcfKeyAgreementCreate(algName, &keyAgreement); + if (res == HCF_SUCCESS) { + HcfObjDestroy(keyAgreement); + } + return res; +} + +static HcfResult ExchangekeyAgreementWithDiffSkLen(const int pLen, const int skLen, const int size) +{ + HcfResult res = HCF_ERR_CRYPTO_OPERATION; + HcfDhCommParamsSpec *paramSpec = nullptr; + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfKeyPair *keyPair = nullptr; + HcfDhCommParamsSpec *paramSpec1 = nullptr; + HcfAsyKeyGeneratorBySpec *generator1 = nullptr; + HcfKeyPair *keyPair1 = nullptr; + HcfBlob out = { .data = nullptr, .len = 0 }; + HcfKeyAgreement *keyAgreement = nullptr; + do { + if (HcfDhKeyUtilCreate(pLen, skLen, ¶mSpec) != HCF_SUCCESS) { + break; + } + if (HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(paramSpec), &generator) + != HCF_SUCCESS) { + break; + } + if (generator->generateKeyPair(generator, &keyPair) != HCF_SUCCESS) { + break; + } + if (HcfDhKeyUtilCreate(pLen, size, ¶mSpec1) != HCF_SUCCESS) { + break; + } + if (HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(paramSpec1), &generator1) + != HCF_SUCCESS) { + break; + } + if (generator1->generateKeyPair(generator1, &keyPair1) != HCF_SUCCESS) { + break; + } + if (HcfKeyAgreementCreate("DH", &keyAgreement) != HCF_SUCCESS) { + break; + } + if (keyAgreement->generateSecret(keyAgreement, keyPair->priKey, keyPair1->pubKey, &out) != HCF_SUCCESS) { + break; + } + if (keyAgreement->generateSecret(keyAgreement, keyPair1->priKey, keyPair->pubKey, &out) != HCF_SUCCESS) { + break; + } + res = HCF_SUCCESS; + } while (0); + HcfFree(out.data); + HcfObjDestroy(keyAgreement); + HcfObjDestroy(generator); + HcfObjDestroy(generator1); + HcfObjDestroy(keyPair); + HcfObjDestroy(keyPair1); + return res; +} + void CryptoDHKeyAgreementTest::SetUpTestCase() { HcfAsyKeyGenerator *generator = nullptr; @@ -117,112 +185,68 @@ void CryptoDHKeyAgreementTest::TearDownTestCase() HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_1, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_modp1536", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_modp1536"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_2, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_modp2048", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_modp2048"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_3, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_modp3072", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_modp3072"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_4, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_modp4096", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_modp4096"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_5, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_modp6144", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_modp6144"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_6, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_modp8192", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_modp8192"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_7, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_ffdhe2048", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_ffdhe2048"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_8, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_ffdhe3072", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_ffdhe3072"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_9, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_ffdhe4096", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_ffdhe4096"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_10, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_ffdhe6144", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_ffdhe6144"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest001_11, TestSize.Level0) { - HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("DH_ffdhe8192", &keyAgreement); - + HcfResult res = HcfKeyAgreementCreateTest("DH_ffdhe8192"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); - HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest002, TestSize.Level0) @@ -548,4 +572,136 @@ HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest016, TestSize.Level0) HcfFree(outBlob1.data); HcfFree(outBlob2.data); } + +HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest017, TestSize.Level0) +{ + HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; + HcfResult res = HcfDhKeyUtilCreate(PLEN_DH512, SKLEN_DH128, &returnCommonParamSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(returnCommonParamSpec), &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *dh512KeyPair = nullptr; + res = generator->generateKeyPair(generator, &dh512KeyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(dh512KeyPair, nullptr); + + HcfKeyAgreement *keyAgreement = nullptr; + res = HcfKeyAgreementCreate("DH", &keyAgreement); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyAgreement, nullptr); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = keyAgreement->generateSecret(keyAgreement, dh512KeyPair->priKey, dh512KeyPair->pubKey, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, 0); + + HcfObjDestroy(keyAgreement); + HcfObjDestroy(generator); + HcfObjDestroy(dh512KeyPair); + HcfFree(out.data); +} + +HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest018, TestSize.Level0) +{ + HcfResult res = ExchangekeyAgreementWithDiffSkLen(PLEN_DH512, SKLEN_DH128, 0); + ASSERT_EQ(res, HCF_ERR_CRYPTO_OPERATION); +} + +HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest019, TestSize.Level0) +{ + HcfDhCommParamsSpec *returnCommonParamSpec = nullptr; + HcfResult res = HcfDhKeyUtilCreate(PLEN_DH2048, 0, &returnCommonParamSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(returnCommonParamSpec), &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *dh2048KeyPair = nullptr; + res = generator->generateKeyPair(generator, &dh2048KeyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(dh2048KeyPair, nullptr); + + HcfKeyAgreement *keyAgreement = nullptr; + res = HcfKeyAgreementCreate("DH", &keyAgreement); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyAgreement, nullptr); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = keyAgreement->generateSecret(keyAgreement, dh2048KeyPair->priKey, dh2048KeyPair->pubKey, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, 0); + + HcfFree(out.data); + HcfObjDestroy(keyAgreement); + HcfObjDestroy(generator); + HcfObjDestroy(dh2048KeyPair); +} + +HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest020, TestSize.Level0) +{ + HcfResult res = ExchangekeyAgreementWithDiffSkLen(PLEN_DH2048, SKLEN_DH1024, SKLEN_DH512); + ASSERT_EQ(res, HCF_SUCCESS); +} + +HWTEST_F(CryptoDHKeyAgreementTest, CryptoDHKeyAgreementTest021, TestSize.Level0) +{ + HcfDhCommParamsSpec *paramSpec = nullptr; + HcfResult res = HcfDhKeyUtilCreate(PLEN_DH512, 0, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(paramSpec), &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *dh512KeyPair = nullptr; + res = generator->generateKeyPair(generator, &dh512KeyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(dh512KeyPair, nullptr); + + paramSpec->length = SKLEN_DH128; + HcfAsyKeyGeneratorBySpec *generator1 = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(paramSpec), &generator1); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator1, nullptr); + + HcfKeyPair *dh512KeyPair1 = nullptr; + res = generator1->generateKeyPair(generator1, &dh512KeyPair1); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(dh512KeyPair1, nullptr); + + HcfKeyAgreement *keyAgreement = nullptr; + res = HcfKeyAgreementCreate("DH", &keyAgreement); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyAgreement, nullptr); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = keyAgreement->generateSecret(keyAgreement, dh512KeyPair->priKey, dh512KeyPair1->pubKey, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, 0); + + HcfBlob out1 = { .data = nullptr, .len = 0 }; + res = keyAgreement->generateSecret(keyAgreement, dh512KeyPair1->priKey, dh512KeyPair->pubKey, &out1); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out1.data, nullptr); + ASSERT_NE(out1.len, 0); + + HcfFree(out.data); + HcfFree(out1.data); + HcfObjDestroy(keyAgreement); + HcfObjDestroy(generator); + HcfObjDestroy(generator1); + HcfObjDestroy(dh512KeyPair); + HcfObjDestroy(dh512KeyPair1); +} } diff --git a/test/unittest/src/crypto_ecc_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_ecc_asy_key_generator_by_spec_test.cpp deleted file mode 100644 index 516e559..0000000 --- a/test/unittest/src/crypto_ecc_asy_key_generator_by_spec_test.cpp +++ /dev/null @@ -1,8583 +0,0 @@ -/* - * Copyright (C) 2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include "securec.h" - -#include "asy_key_generator.h" -#include "detailed_ecc_key_params.h" -#include "ecc_asy_key_generator_openssl.h" -#include "ecc_openssl_common.h" -#include "ecc_openssl_common_param_spec.h" -#include "ecc_common.h" -#include "blob.h" -#include "memory_mock.h" -#include "openssl_adapter_mock.h" -#include "openssl_class.h" -#include "openssl_common.h" -#include "params_parser.h" - -using namespace std; -using namespace testing::ext; - -namespace { -class CryptoEccAsyKeyGeneratorBySpecTest : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); - void SetUp(); - void TearDown(); -}; - -void CryptoEccAsyKeyGeneratorBySpecTest::SetUpTestCase() {} -void CryptoEccAsyKeyGeneratorBySpecTest::TearDownTestCase() {} -void CryptoEccAsyKeyGeneratorBySpecTest::SetUp() {} -void CryptoEccAsyKeyGeneratorBySpecTest::TearDown() {} - -const int ECC224_PUB_KEY_LEN = 80; -const int ECC224_PRI_KEY_LEN = 44; -constexpr int32_t NID_SECP192R1_LEN = 24; -static unsigned char g_ecc192CorrectBigP[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF -}; - -static unsigned char g_ecc192CorrectBigA[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC -}; - -static unsigned char g_ecc192CorrectBigB[] = { - 0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C, 0x80, 0xE7, 0x0F, 0xA7, 0xE9, 0xAB, - 0x72, 0x24, 0x30, 0x49, 0xFE, 0xB8, 0xDE, 0xEC, 0xC1, 0x46, 0xB9, 0xB1 -}; - -static unsigned char g_ecc192CorrectBigGX[] = { - 0x18, 0x8D, 0xA8, 0x0E, 0xB0, 0x30, 0x90, 0xF6, 0x7C, 0xBF, 0x20, 0xEB, - 0x43, 0xA1, 0x88, 0x00, 0xF4, 0xFF, 0x0A, 0xFD, 0x82, 0xFF, 0x10, 0x12 -}; - -static unsigned char g_ecc192CorrectBigGY[] = { - 0x07, 0x19, 0x2b, 0x95, 0xff, 0xc8, 0xda, 0x78, 0x63, 0x10, 0x11, 0xed, - 0x6b, 0x24, 0xcd, 0xd5, 0x73, 0xf9, 0x77, 0xa1, 0x1e, 0x79, 0x48, 0x11 -}; - -static unsigned char g_ecc192CorrectBigN[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B, 0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31 -}; - -static unsigned char g_ecc192CorrectLittleP[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -static unsigned char g_ecc192CorrectLittleA[] = { - 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -static unsigned char g_ecc192CorrectLittleB[] = { - 0xb1, 0xb9, 0x46, 0xc1, 0xec, 0xde, 0xb8, 0xfe, 0x49, 0x30, 0x24, 0x72, - 0xab, 0xe9, 0xa7, 0x0f, 0xe7, 0x80, 0x9c, 0xe5, 0x19, 0x05, 0x21, 0x64 -}; - -static unsigned char g_ecc192CorrectLittleGX[] = { - 0x12, 0x10, 0xff, 0x82, 0xfd, 0x0a, 0xff, 0xf4, 0x00, 0x88, 0xa1, 0x43, - 0xeb, 0x20, 0xbf, 0x7c, 0xf6, 0x90, 0x30, 0xb0, 0x0e, 0xa8, 0x8d, 0x18 -}; - -static unsigned char g_ecc192CorrectLittleGY[] = { - 0x11, 0x48, 0x79, 0x1e, 0xa1, 0x77, 0xf9, 0x73, 0xd5, 0xcd, 0x24, 0x6b, - 0xed, 0x11, 0x10, 0x63, 0x78, 0xda, 0xc8, 0xff, 0x95, 0x2b, 0x19, 0x07 -}; - -static unsigned char g_ecc192CorrectLittleN[] = { - 0x31, 0x28, 0xd2, 0xb4, 0xb1, 0xc9, 0x6b, 0x14, 0x36, 0xf8, 0xde, 0x99, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -uint8_t g_mockEcc224PubKeyBlobData[ECC224_PUB_KEY_LEN] = { 48, 78, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, - 6, 5, 43, 129, 4, 0, 33, 3, 58, 0, 4, 252, 171, 11, 115, 79, 252, 109, 120, 46, 97, 131, 145, 207, 141, 146, - 235, 133, 37, 218, 180, 8, 149, 47, 244, 137, 238, 207, 95, 153, 65, 250, 32, 77, 184, 249, 181, 172, 192, 2, - 99, 194, 170, 25, 44, 255, 87, 246, 42, 133, 83, 66, 197, 97, 95, 12, 84 }; - -uint8_t g_mockEcc224PriKeyBlobData[ECC224_PRI_KEY_LEN] = { 48, 42, 2, 1, 1, 4, 28, 250, 86, 6, 147, 222, 43, - 252, 139, 90, 139, 5, 33, 184, 230, 26, 68, 94, 57, 145, 229, 146, 49, 221, 119, 206, 32, 198, 19, 160, 7, 6, - 5, 43, 129, 4, 0, 33 }; - -HcfBlob g_mockEcc224PubKeyBlob = { - .data = g_mockEcc224PubKeyBlobData, - .len = ECC224_PUB_KEY_LEN -}; - -HcfBlob g_mockEcc224PriKeyBlob = { - .data = g_mockEcc224PriKeyBlobData, - .len = ECC224_PRI_KEY_LEN -}; - -static const char *GetMockClass(void) -{ - return "HcfSymKeyGenerator"; -} - -HcfObjectBase g_obj = { - .getClass = GetMockClass, - .destroy = nullptr -}; - -static const bool IS_BIG_ENDIAN = IsBigEndian(); - -static string g_eccAlgName = "ECC"; -static string g_eccFieldType = "Fp"; -static int32_t g_ecc192CorrectH = 1; -static int32_t g_ecc224CorrectH = 1; -static int32_t g_ecc256CorrectH = 1; -static int32_t g_ecc384CorrectH = 1; -static int32_t g_ecc521CorrectH = 1; - -HcfEccCommParamsSpec g_ecc192CommSpec; -HcfEccCommParamsSpec g_ecc224CommSpec; -HcfEccPubKeyParamsSpec g_ecc224PubKeySpec; -HcfEccPriKeyParamsSpec g_ecc224PriKeySpec; -HcfEccKeyPairParamsSpec g_ecc224KeyPairSpec; -HcfEccCommParamsSpec g_ecc256CommSpec; -HcfEccPubKeyParamsSpec g_ecc256PubKeySpec; -HcfEccPriKeyParamsSpec g_ecc256PriKeySpec; -HcfEccKeyPairParamsSpec g_ecc256KeyPairSpec; -HcfEccCommParamsSpec g_ecc384CommSpec; -HcfEccPubKeyParamsSpec g_ecc384PubKeySpec; -HcfEccPriKeyParamsSpec g_ecc384PriKeySpec; -HcfEccKeyPairParamsSpec g_ecc384KeyPairSpec; -HcfEccCommParamsSpec g_ecc521CommSpec; -HcfEccPubKeyParamsSpec g_ecc521PubKeySpec; -HcfEccPriKeyParamsSpec g_ecc521PriKeySpec; -HcfEccKeyPairParamsSpec g_ecc521KeyPairSpec; -HcfECFieldFp g_fieldFp; - -static HcfResult ConstructEcc192CommParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = &g_ecc192CommSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); - eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - eccCommSpec->field = tmpField; - eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigP : g_ecc192CorrectLittleP); - ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_SECP192R1_LEN; - eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigA : g_ecc192CorrectLittleA); - eccCommSpec->a.len = NID_SECP192R1_LEN; - eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigB : g_ecc192CorrectLittleB); - eccCommSpec->b.len = NID_SECP192R1_LEN; - eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigGX : g_ecc192CorrectLittleGX); - eccCommSpec->g.x.len = NID_SECP192R1_LEN; - eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigGY : g_ecc192CorrectLittleGY); - eccCommSpec->g.y.len = NID_SECP192R1_LEN; - eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigN : g_ecc192CorrectLittleN); - eccCommSpec->n.len = NID_SECP192R1_LEN; - eccCommSpec->h = g_ecc192CorrectH; - - *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc224CommParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = &g_ecc224CommSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); - eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - eccCommSpec->field = tmpField; - eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); - ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp224r1_len; - eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); - eccCommSpec->a.len = NID_secp224r1_len; - eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); - eccCommSpec->b.len = NID_secp224r1_len; - eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); - eccCommSpec->g.x.len = NID_secp224r1_len; - eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); - eccCommSpec->g.y.len = NID_secp224r1_len; - eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); - eccCommSpec->n.len = NID_secp224r1_len; - eccCommSpec->h = g_ecc224CorrectH; - - *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc224PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc224PubKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; - eccPubKeySpec->base.field = tmpField; - eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_secp224r1_len; - eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); - eccPubKeySpec->base.a.len = NID_secp224r1_len; - eccPubKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); - eccPubKeySpec->base.b.len = NID_secp224r1_len; - eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); - eccPubKeySpec->base.g.x.len = NID_secp224r1_len; - eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); - eccPubKeySpec->base.g.y.len = NID_secp224r1_len; - eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); - eccPubKeySpec->base.n.len = NID_secp224r1_len; - eccPubKeySpec->base.h = g_ecc224CorrectH; - eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkX : g_ecc224CorrectLittlePkX); - eccPubKeySpec->pk.x.len = NID_secp224r1_len; - eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkY : g_ecc224CorrectLittlePkY); - eccPubKeySpec->pk.y.len = NID_secp224r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc224PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc224PriKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; - eccPriKeySpec->base.field = tmpField; - eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_secp224r1_len; - eccPriKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); - eccPriKeySpec->base.a.len = NID_secp224r1_len; - eccPriKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); - eccPriKeySpec->base.b.len = NID_secp224r1_len; - eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); - eccPriKeySpec->base.g.x.len = NID_secp224r1_len; - eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); - eccPriKeySpec->base.g.y.len = NID_secp224r1_len; - eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); - eccPriKeySpec->base.n.len = NID_secp224r1_len; - eccPriKeySpec->base.h = g_ecc224CorrectH; - eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigSk : g_ecc224CorrectLittleSk); - eccPriKeySpec->sk.len = NID_secp224r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc224KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc224KeyPairSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = tmpField; - eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp224r1_len; - eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); - eccKeyPairSpec->base.a.len = NID_secp224r1_len; - eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); - eccKeyPairSpec->base.b.len = NID_secp224r1_len; - eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); - eccKeyPairSpec->base.g.x.len = NID_secp224r1_len; - eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); - eccKeyPairSpec->base.g.y.len = NID_secp224r1_len; - eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); - eccKeyPairSpec->base.n.len = NID_secp224r1_len; - eccKeyPairSpec->base.h = g_ecc224CorrectH; - eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkX : g_ecc224CorrectLittlePkX); - eccKeyPairSpec->pk.x.len = NID_secp224r1_len; - eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkY : g_ecc224CorrectLittlePkY); - eccKeyPairSpec->pk.y.len = NID_secp224r1_len; - eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigSk : g_ecc224CorrectLittleSk); - eccKeyPairSpec->sk.len = NID_secp224r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc256CommParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = &g_ecc256CommSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); - eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - eccCommSpec->field = tmpField; - eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); - ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_X9_62_prime256v1_len; - eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); - eccCommSpec->a.len = NID_X9_62_prime256v1_len; - eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); - eccCommSpec->b.len = NID_X9_62_prime256v1_len; - eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); - eccCommSpec->g.x.len = NID_X9_62_prime256v1_len; - eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); - eccCommSpec->g.y.len = NID_X9_62_prime256v1_len; - eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); - eccCommSpec->n.len = NID_X9_62_prime256v1_len; - eccCommSpec->h = g_ecc256CorrectH; - - *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc256PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc256PubKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; - eccPubKeySpec->base.field = tmpField; - eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_X9_62_prime256v1_len; - eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); - eccPubKeySpec->base.a.len = NID_X9_62_prime256v1_len; - eccPubKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); - eccPubKeySpec->base.b.len = NID_X9_62_prime256v1_len; - eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); - eccPubKeySpec->base.g.x.len = NID_X9_62_prime256v1_len; - eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); - eccPubKeySpec->base.g.y.len = NID_X9_62_prime256v1_len; - eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); - eccPubKeySpec->base.n.len = NID_X9_62_prime256v1_len; - eccPubKeySpec->base.h = g_ecc256CorrectH; - eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkX : g_ecc256CorrectLittlePkX); - eccPubKeySpec->pk.x.len = NID_X9_62_prime256v1_len; - eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkY : g_ecc256CorrectLittlePkY); - eccPubKeySpec->pk.y.len = NID_X9_62_prime256v1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc256PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc256PriKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; - eccPriKeySpec->base.field = tmpField; - eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_X9_62_prime256v1_len; - eccPriKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); - eccPriKeySpec->base.a.len = NID_X9_62_prime256v1_len; - eccPriKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); - eccPriKeySpec->base.b.len = NID_X9_62_prime256v1_len; - eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); - eccPriKeySpec->base.g.x.len = NID_X9_62_prime256v1_len; - eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); - eccPriKeySpec->base.g.y.len = NID_X9_62_prime256v1_len; - eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); - eccPriKeySpec->base.n.len = NID_X9_62_prime256v1_len; - eccPriKeySpec->base.h = g_ecc256CorrectH; - eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigSk : g_ecc256CorrectLittleSk); - eccPriKeySpec->sk.len = NID_X9_62_prime256v1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc256KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc256KeyPairSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = tmpField; - eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_X9_62_prime256v1_len; - eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); - eccKeyPairSpec->base.a.len = NID_X9_62_prime256v1_len; - eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); - eccKeyPairSpec->base.b.len = NID_X9_62_prime256v1_len; - eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); - eccKeyPairSpec->base.g.x.len = NID_X9_62_prime256v1_len; - eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); - eccKeyPairSpec->base.g.y.len = NID_X9_62_prime256v1_len; - eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); - eccKeyPairSpec->base.n.len = NID_X9_62_prime256v1_len; - eccKeyPairSpec->base.h = g_ecc256CorrectH; - eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkX : g_ecc256CorrectLittlePkX); - eccKeyPairSpec->pk.x.len = NID_X9_62_prime256v1_len; - eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkY : g_ecc256CorrectLittlePkY); - eccKeyPairSpec->pk.y.len = NID_X9_62_prime256v1_len; - eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigSk : g_ecc256CorrectLittleSk); - eccKeyPairSpec->sk.len = NID_X9_62_prime256v1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc384CommParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = &g_ecc384CommSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); - eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - eccCommSpec->field = tmpField; - eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); - ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp384r1_len; - eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); - eccCommSpec->a.len = NID_secp384r1_len; - eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); - eccCommSpec->b.len = NID_secp384r1_len; - eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); - eccCommSpec->g.x.len = NID_secp384r1_len; - eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); - eccCommSpec->g.y.len = NID_secp384r1_len; - eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); - eccCommSpec->n.len = NID_secp384r1_len; - eccCommSpec->h = g_ecc384CorrectH; - - *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc384PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc384PubKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; - eccPubKeySpec->base.field = tmpField; - eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_secp384r1_len; - eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); - eccPubKeySpec->base.a.len = NID_secp384r1_len; - eccPubKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); - eccPubKeySpec->base.b.len = NID_secp384r1_len; - eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); - eccPubKeySpec->base.g.x.len = NID_secp384r1_len; - eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); - eccPubKeySpec->base.g.y.len = NID_secp384r1_len; - eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); - eccPubKeySpec->base.n.len = NID_secp384r1_len; - eccPubKeySpec->base.h = g_ecc384CorrectH; - eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkX : g_ecc384CorrectLittlePkX); - eccPubKeySpec->pk.x.len = NID_secp384r1_len; - eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkY : g_ecc384CorrectLittlePkY); - eccPubKeySpec->pk.y.len = NID_secp384r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc384PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc384PriKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; - eccPriKeySpec->base.field = tmpField; - eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_secp384r1_len; - eccPriKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); - eccPriKeySpec->base.a.len = NID_secp384r1_len; - eccPriKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); - eccPriKeySpec->base.b.len = NID_secp384r1_len; - eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); - eccPriKeySpec->base.g.x.len = NID_secp384r1_len; - eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); - eccPriKeySpec->base.g.y.len = NID_secp384r1_len; - eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); - eccPriKeySpec->base.n.len = NID_secp384r1_len; - eccPriKeySpec->base.h = g_ecc384CorrectH; - eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigSk : g_ecc384CorrectLittleSk); - eccPriKeySpec->sk.len = NID_secp384r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc384KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc384KeyPairSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = tmpField; - eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp384r1_len; - eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); - eccKeyPairSpec->base.a.len = NID_secp384r1_len; - eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); - eccKeyPairSpec->base.b.len = NID_secp384r1_len; - eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); - eccKeyPairSpec->base.g.x.len = NID_secp384r1_len; - eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); - eccKeyPairSpec->base.g.y.len = NID_secp384r1_len; - eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); - eccKeyPairSpec->base.n.len = NID_secp384r1_len; - eccKeyPairSpec->base.h = g_ecc384CorrectH; - eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkX : g_ecc384CorrectLittlePkX); - eccKeyPairSpec->pk.x.len = NID_secp384r1_len; - eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkY : g_ecc384CorrectLittlePkY); - eccKeyPairSpec->pk.y.len = NID_secp384r1_len; - eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigSk : g_ecc384CorrectLittleSk); - eccKeyPairSpec->sk.len = NID_secp384r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc521CommParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = &g_ecc521CommSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); - eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - eccCommSpec->field = tmpField; - eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); - ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp521r1_len; - eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); - eccCommSpec->a.len = NID_secp521r1_len; - eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); - eccCommSpec->b.len = NID_secp521r1_len; - eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); - eccCommSpec->g.x.len = NID_secp521r1_len; - eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); - eccCommSpec->g.y.len = NID_secp521r1_len; - eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); - eccCommSpec->n.len = NID_secp521r1_len; - eccCommSpec->h = g_ecc521CorrectH; - - *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc521PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc521PubKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; - eccPubKeySpec->base.field = tmpField; - eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_secp521r1_len; - eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); - eccPubKeySpec->base.a.len = NID_secp521r1_len; - eccPubKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); - eccPubKeySpec->base.b.len = NID_secp521r1_len; - eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); - eccPubKeySpec->base.g.x.len = NID_secp521r1_len; - eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); - eccPubKeySpec->base.g.y.len = NID_secp521r1_len; - eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); - eccPubKeySpec->base.n.len = NID_secp521r1_len; - eccPubKeySpec->base.h = g_ecc521CorrectH; - eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkX : g_ecc521CorrectLittlePkX); - eccPubKeySpec->pk.x.len = NID_secp521r1_len; - eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkY : g_ecc521CorrectLittlePkY); - eccPubKeySpec->pk.y.len = NID_secp521r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc521PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc521PriKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; - eccPriKeySpec->base.field = tmpField; - eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_secp521r1_len; - eccPriKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); - eccPriKeySpec->base.a.len = NID_secp521r1_len; - eccPriKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); - eccPriKeySpec->base.b.len = NID_secp521r1_len; - eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); - eccPriKeySpec->base.g.x.len = NID_secp521r1_len; - eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); - eccPriKeySpec->base.g.y.len = NID_secp521r1_len; - eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); - eccPriKeySpec->base.n.len = NID_secp521r1_len; - eccPriKeySpec->base.h = g_ecc521CorrectH; - eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigSk : g_ecc521CorrectLittleSk); - eccPriKeySpec->sk.len = NID_secp521r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc521KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc521KeyPairSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = tmpField; - eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp521r1_len; - eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); - eccKeyPairSpec->base.a.len = NID_secp521r1_len; - eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); - eccKeyPairSpec->base.b.len = NID_secp521r1_len; - eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); - eccKeyPairSpec->base.g.x.len = NID_secp521r1_len; - eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); - eccKeyPairSpec->base.g.y.len = NID_secp521r1_len; - eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); - eccKeyPairSpec->base.n.len = NID_secp521r1_len; - eccKeyPairSpec->base.h = g_ecc521CorrectH; - eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkX : g_ecc521CorrectLittlePkX); - eccKeyPairSpec->pk.x.len = NID_secp521r1_len; - eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkY : g_ecc521CorrectLittlePkY); - eccKeyPairSpec->pk.y.len = NID_secp521r1_len; - eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigSk : g_ecc521CorrectLittleSk); - eccKeyPairSpec->sk.len = NID_secp521r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc224ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = &g_ecc224CommSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); - eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - eccCommSpec->field = tmpField; - eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); - ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp224r1_len; - eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); - eccCommSpec->a.len = NID_secp224r1_len; - eccCommSpec->b.data = nullptr; - eccCommSpec->b.len = 0; - eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); - eccCommSpec->g.x.len = NID_secp224r1_len; - eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); - eccCommSpec->g.y.len = NID_secp224r1_len; - eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); - eccCommSpec->n.len = NID_secp224r1_len; - eccCommSpec->h = g_ecc224CorrectH; - - *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc256ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = &g_ecc256CommSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); - eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - eccCommSpec->field = tmpField; - eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); - ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_X9_62_prime256v1_len; - eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); - eccCommSpec->a.len = NID_X9_62_prime256v1_len; - eccCommSpec->b.data = 0; - eccCommSpec->b.len = 0; - eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); - eccCommSpec->g.x.len = NID_X9_62_prime256v1_len; - eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); - eccCommSpec->g.y.len = NID_X9_62_prime256v1_len; - eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); - eccCommSpec->n.len = NID_X9_62_prime256v1_len; - eccCommSpec->h = g_ecc256CorrectH; - - *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc384ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = &g_ecc384CommSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); - eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - eccCommSpec->field = tmpField; - eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); - ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp384r1_len; - eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); - eccCommSpec->a.len = NID_secp384r1_len; - eccCommSpec->b.data = nullptr; - eccCommSpec->b.len = 0; - eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); - eccCommSpec->g.x.len = NID_secp384r1_len; - eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); - eccCommSpec->g.y.len = NID_secp384r1_len; - eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); - eccCommSpec->n.len = NID_secp384r1_len; - eccCommSpec->h = g_ecc384CorrectH; - - *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc521ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = &g_ecc521CommSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); - eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - eccCommSpec->field = tmpField; - eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); - ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp521r1_len; - eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); - eccCommSpec->a.len = NID_secp521r1_len; - eccCommSpec->b.data = nullptr; - eccCommSpec->b.len = 0; - eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); - eccCommSpec->g.x.len = NID_secp521r1_len; - eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); - eccCommSpec->g.y.len = NID_secp521r1_len; - eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); - eccCommSpec->n.len = NID_secp521r1_len; - eccCommSpec->h = g_ecc521CorrectH; - - *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc384ErrKeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc384KeyPairSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = tmpField; - eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp384r1_len; - eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); - eccKeyPairSpec->base.a.len = NID_secp384r1_len; - eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); - eccKeyPairSpec->base.g.x.len = NID_secp384r1_len; - eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); - eccKeyPairSpec->base.g.y.len = NID_secp384r1_len; - eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); - eccKeyPairSpec->base.n.len = NID_secp384r1_len; - eccKeyPairSpec->base.h = g_ecc384CorrectH; - eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkX : g_ecc384CorrectLittlePkX); - eccKeyPairSpec->pk.x.len = NID_secp384r1_len; - eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkY : g_ecc384CorrectLittlePkY); - eccKeyPairSpec->pk.y.len = NID_secp384r1_len; - eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigSk : g_ecc384CorrectLittleSk); - eccKeyPairSpec->sk.len = NID_secp384r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc521ErrKeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc521KeyPairSpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = tmpField; - eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp521r1_len; - eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); - eccKeyPairSpec->base.a.len = NID_secp521r1_len; - eccKeyPairSpec->base.b.data = nullptr; - eccKeyPairSpec->base.b.len = 0; - eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); - eccKeyPairSpec->base.g.x.len = NID_secp521r1_len; - eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); - eccKeyPairSpec->base.g.y.len = NID_secp521r1_len; - eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); - eccKeyPairSpec->base.n.len = NID_secp521r1_len; - eccKeyPairSpec->base.h = g_ecc521CorrectH; - eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkX : g_ecc521CorrectLittlePkX); - eccKeyPairSpec->pk.x.len = NID_secp521r1_len; - eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkY : g_ecc521CorrectLittlePkY); - eccKeyPairSpec->pk.y.len = NID_secp521r1_len; - eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigSk : g_ecc521CorrectLittleSk); - eccKeyPairSpec->sk.len = NID_secp521r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc224ErrPubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc224PubKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; - eccPubKeySpec->base.field = tmpField; - eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_secp224r1_len; - eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); - eccPubKeySpec->base.a.len = NID_secp224r1_len; - eccPubKeySpec->base.b.data = nullptr; - eccPubKeySpec->base.b.len = 0; - eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); - eccPubKeySpec->base.g.x.len = NID_secp224r1_len; - eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); - eccPubKeySpec->base.g.y.len = NID_secp224r1_len; - eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); - eccPubKeySpec->base.n.len = NID_secp224r1_len; - eccPubKeySpec->base.h = g_ecc224CorrectH; - eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkX : g_ecc224CorrectLittlePkX); - eccPubKeySpec->pk.x.len = NID_secp224r1_len; - eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkY : g_ecc224CorrectLittlePkY); - eccPubKeySpec->pk.y.len = NID_secp224r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructEcc224ErrPriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) -{ - HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc224PriKeySpec; - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; - eccPriKeySpec->base.field = tmpField; - eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = - (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_secp224r1_len; - eccPriKeySpec->base.a.data = nullptr; - eccPriKeySpec->base.a.len = 0; - eccPriKeySpec->base.b.data = nullptr; - eccPriKeySpec->base.b.len = 0; - eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); - eccPriKeySpec->base.g.x.len = NID_secp224r1_len; - eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); - eccPriKeySpec->base.g.y.len = NID_secp224r1_len; - eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); - eccPriKeySpec->base.n.len = NID_secp224r1_len; - eccPriKeySpec->base.h = g_ecc224CorrectH; - eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigSk : g_ecc224CorrectLittleSk); - eccPriKeySpec->sk.len = NID_secp224r1_len; - - *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; - return HCF_SUCCESS; -} - -/** - * @tc.name: CryptoEccAsyKeyGeneratorBySpecTest.CryptoEccAsyKeyGeneratorBySpecTest001 - * @tc.desc: Verify that the creation of the ECC224 key pair generator is normal. - * @tc.type: FUNC - * @tc.require: I5QWEI - */ -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -/** - * @tc.name: CryptoEccAsyKeyGeneratorBySpecTest.CryptoEccAsyKeyGeneratorBySpecTest001 - * @tc.desc: Verify that the creation of the ECC256 key pair generator is normal. - * @tc.type: FUNC - * @tc.require: I5QWEI - */ -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -/** - * @tc.name: CryptoEccAsyKeyGeneratorBySpecTest.CryptoEccAsyKeyGeneratorBySpecTest001 - * @tc.desc: Verify that the creation of the ECC384 key pair generator is normal. - * @tc.type: FUNC - * @tc.require: I5QWEI - */ -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_9, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_10, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_11, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_12, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -/** - * @tc.name: CryptoEccAsyKeyGeneratorBySpecTest.CryptoEccAsyKeyGeneratorBySpecTest001 - * @tc.desc: Verify that the creation of the ECC521 key pair generator is normal. - * @tc.type: FUNC - * @tc.require: I5QWEI - */ -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_13, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_14, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_15, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_16, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -// 192 -> 不在4条曲线中的fp曲线 -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_17, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc192CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - - HcfObjDestroy(generator); -} - -// for test:Generator的异常用例 -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest002, TestSize.Level0) -{ - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(nullptr, &generator); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(generator, nullptr); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest003, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); -} - -// for test:generator函数指针测试(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest101, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *className = generator->base.getClass(); - ASSERT_NE(className, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest102_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - generator->base.destroy((HcfObjectBase *)generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest102_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - generator->base.destroy((HcfObjectBase *)generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest102_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - generator->base.destroy((HcfObjectBase *)generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest102_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - generator->base.destroy((HcfObjectBase *)generator); -} - -// for test:generator函数指针测试(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest103, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - generator->base.destroy(nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest104, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - generator->base.destroy(&g_obj); - - HcfObjDestroy(generator); -} - -// for test:generator函数指针测试(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest105, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *algName = generator->getAlgName(generator); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(generator); -} - -// for test:generator函数指针测试(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest106, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *algName = generator->getAlgName(nullptr); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest107, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - const char *algName = generator->getAlgName((HcfAsyKeyGeneratorBySpec *)&g_obj); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(generator); -} - -// for test:测试keyPair生成函数(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:测试keyPair生成函数(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest202, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(nullptr, &keyPair); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest203, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair((HcfAsyKeyGeneratorBySpec *)&g_obj, &keyPair); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest204, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - res = generator->generateKeyPair(generator, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->base.getClass(); - - ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - const char *className = pubKey->base.base.getClass(); - - ASSERT_NE(className, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *className = priKey->base.base.getClass(); - - ASSERT_NE(className, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->base.getClass(); - - ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - const char *className = pubKey->base.base.getClass(); - - ASSERT_NE(className, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *className = priKey->base.base.getClass(); - - ASSERT_NE(className, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->base.destroy((HcfObjectBase *)(&(keyPair->base))); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - pubKey->base.base.destroy((HcfObjectBase *)(&(pubKey->base.base))); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - priKey->base.base.destroy((HcfObjectBase *)(&(priKey->base.base))); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->base.destroy((HcfObjectBase *)(&(keyPair->base))); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - pubKey->base.base.destroy((HcfObjectBase *)(&(pubKey->base.base))); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - priKey->base.base.destroy((HcfObjectBase *)(&(priKey->base.base))); - - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest303, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->base.destroy(nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest304, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->base.destroy(&g_obj); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest305_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->pubKey->base.base.getClass(); - ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest305_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *className = keyPair->pubKey->base.base.getClass(); - ASSERT_NE(className, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest305_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy((HcfObjectBase *)(&(keyPair->pubKey->base.base))); - keyPair->pubKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest305_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy((HcfObjectBase *)(&(keyPair->pubKey->base.base))); - keyPair->pubKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest306, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy(nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest307, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy(&g_obj); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - - ASSERT_NE(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - const char *format = pubKey->base.getFormat(&(pubKey->base)); - - ASSERT_NE(format, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *format = priKey->base.getFormat(&(priKey->base)); - - ASSERT_NE(format, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - - ASSERT_NE(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - const char *format = pubKey->base.getFormat(&(pubKey->base)); - - ASSERT_NE(format, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *format = priKey->base.getFormat(&(priKey->base)); - - ASSERT_NE(format, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest309, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat(nullptr); - - ASSERT_EQ(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest310, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->pubKey->base.getFormat((HcfKey *)&g_obj); - - ASSERT_EQ(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - const char *algName = pubKey->base.getAlgorithm(&(pubKey->base)); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *algName = priKey->base.getAlgorithm(&(priKey->base)); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - const char *algName = pubKey->base.getAlgorithm(&(pubKey->base)); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *algName = priKey->base.getAlgorithm(&(priKey->base)); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest312, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm(nullptr); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest313, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_9, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_10, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_11, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_12, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_13, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_14, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_15, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_16, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_17, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_18, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_19, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_20, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_21, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_22, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_23, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest314_24, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest315, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(nullptr, &blob); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(blob.data, nullptr); - ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest316, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(blob.data, nullptr); - ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest317, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest318_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->priKey->clearMem(keyPair->priKey); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest318_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - priKey->clearMem(priKey); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest318_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->priKey->clearMem(keyPair->priKey); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest318_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - priKey->clearMem(priKey); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest319, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->priKey->clearMem(nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest320, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->priKey->clearMem((HcfPriKey *)&g_obj); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest321_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->priKey->base.base.getClass(); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest321_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->priKey->base.base.getClass(); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest322_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy((HcfObjectBase *)(&(keyPair->priKey->base.base))); - keyPair->priKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest322_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy((HcfObjectBase *)(&(keyPair->priKey->base.base))); - keyPair->priKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest323, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy(nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest324, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy(&g_obj); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest325_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat(&keyPair->priKey->base); - - ASSERT_NE(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest325_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat(&keyPair->priKey->base); - - ASSERT_NE(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest326, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat(nullptr); - - ASSERT_EQ(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest327, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *format = keyPair->priKey->base.getFormat((HcfKey *)&g_obj); - - ASSERT_EQ(format, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest328_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->priKey->base.getAlgorithm(&keyPair->priKey->base); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest328_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->priKey->base.getAlgorithm(&keyPair->priKey->base); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(异常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest329, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->priKey->base.getAlgorithm(nullptr); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest330, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - const char *algName = keyPair->priKey->base.getAlgorithm((HcfKey *)&g_obj); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:测试keyPair的函数指针(正常) -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest331_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest331_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest331_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest331_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest331_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest331_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest331_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest331_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest332, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(nullptr, &blob); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(blob.data, nullptr); - ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest333, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(blob.data, nullptr); - ASSERT_EQ(blob.len, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest334, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_FP_P_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest401_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest401_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest401_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest401_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest401_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest401_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest401_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest401_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:ECC_A_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest402_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest402_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest402_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest402_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest402_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest402_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest402_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest402_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:ECC_B_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest403_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest403_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest403_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest403_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest403_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest403_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest403_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest403_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:ECC_G_X_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest404_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest404_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest404_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest404_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest404_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest404_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest404_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest404_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:ECC_G_Y_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest405_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest405_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest405_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest405_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest405_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest405_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest405_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest405_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:ECC_N_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest406_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest406_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest406_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest406_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest406_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest406_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest406_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest406_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:ECC_H_INT -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest407_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest407_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest407_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = pubKey->getAsyKeySpecInt(pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest407_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = priKey->getAsyKeySpecInt(priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest407_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest407_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest407_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = pubKey->getAsyKeySpecInt(pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest407_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = priKey->getAsyKeySpecInt(priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:ECC_FIELD_SIZE_INT -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest408_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest408_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest408_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = pubKey->getAsyKeySpecInt(pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest408_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = priKey->getAsyKeySpecInt(priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest408_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest408_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest408_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = pubKey->getAsyKeySpecInt(pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest408_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = priKey->getAsyKeySpecInt(priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:ECC_FIELD_TYPE_STR -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest409_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest409_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest409_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = pubKey->getAsyKeySpecString(pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest409_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = priKey->getAsyKeySpecString(priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest409_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest409_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest409_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = pubKey->getAsyKeySpecString(pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest409_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = priKey->getAsyKeySpecString(priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// for test:ECC_CURVE_NAME_STR -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = pubKey->getAsyKeySpecString(pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = priKey->getAsyKeySpecString(priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_7, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = pubKey->getAsyKeySpecString(pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_8, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = priKey->getAsyKeySpecString(priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// 192 has no curve name -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_9, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc192CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(retStr, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// 256 -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_10, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = priKey->getAsyKeySpecString(priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// 384 -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_11, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = priKey->getAsyKeySpecString(priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// 521 -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest410_12, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = priKey->getAsyKeySpecString(priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} -// for test:ECC_PK_X_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest411_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_X_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest411_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_X_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest411_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_X_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest411_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_X_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// for test:ECC_PK_Y_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest412_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_Y_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest412_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_Y_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest412_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_Y_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest412_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_Y_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// for test:ECC_SK_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest413_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_SK_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest413_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_SK_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest413_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_SK_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest413_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_SK_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// get spec exception test -// get string -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest414_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - res = keyPair->priKey->getAsyKeySpecString(nullptr, item, nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest414_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *ret = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - res = keyPair->priKey->getAsyKeySpecString(reinterpret_cast(&g_obj), item, &ret); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(ret, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest414_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest414_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *ret = nullptr; - AsyKeySpecItem item = ECC_A_BN; - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &ret); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(ret, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// get int -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest415_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - res = keyPair->priKey->getAsyKeySpecInt(nullptr, ECC_H_INT, nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest415_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int ret = 0; - AsyKeySpecItem item = ECC_H_INT; - res = keyPair->priKey->getAsyKeySpecInt(reinterpret_cast(&g_obj), item, &ret); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(ret, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest415_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - AsyKeySpecItem item = ECC_H_INT; - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest415_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int ret = 0; - AsyKeySpecItem item = ECC_A_BN; - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &ret); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(ret, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// get Big Int -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest416_1, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_SK_BN; - - res = priKey->getAsyKeySpecBigInteger(nullptr, item, &retBigInt); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(retBigInt.data, nullptr); - ASSERT_EQ(retBigInt.len, 0); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest416_2, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - AsyKeySpecItem item = ECC_SK_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest416_3, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_SK_BN; - - res = priKey->getAsyKeySpecBigInteger(reinterpret_cast(&g_obj), item, &retBigInt); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(retBigInt.data, nullptr); - ASSERT_EQ(retBigInt.len, 0); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest416_4, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_H_INT; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(retBigInt.data, nullptr); - ASSERT_EQ(retBigInt.len, 0); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest416_5, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_X_BN; - - res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(retBigInt.data, nullptr); - ASSERT_EQ(retBigInt.len, 0); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest416_6, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_SK_BN; - - res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(retBigInt.data, nullptr); - ASSERT_EQ(retBigInt.len, 0); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} -// for test:测试Convert功能(新增的BySpec无此convert函数,但是需要测试旧版convert后密钥Key的get方法,因此先保留此部分,后续改动) -// for test:测试convertKey以后的函数指针功能 -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest501, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest502, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_FP_P_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_A_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest503, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest504, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_A_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_B_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest505, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest506, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_B_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_G_X_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest507, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest508, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_X_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_G_Y_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest509, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest510, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_G_Y_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_N_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest511, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest512, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_N_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_H_INT -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest513, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest514, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_H_INT; - - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_FIELD_SIZE_INT -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest515, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest516, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_FIELD_TYPE_STR -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest517, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest518, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_CURVE_NAME_STR -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest519, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest520, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_PK_X_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest521, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_X_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_PK_Y_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest522, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_PK_Y_BN; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:ECC_SK_BN -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest523, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - AsyKeySpecItem item = ECC_SK_BN; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retBigInt.data, nullptr); - ASSERT_NE(retBigInt.len, 0); - - free(retBigInt.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// for test:generateKey after convertKey -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest524, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - HcfKeyPair *keyPair = nullptr; - res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); - ASSERT_EQ(res, HCF_SUCCESS); - HcfBlob priKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); - ASSERT_EQ(res, HCF_SUCCESS); - HcfAsyKeyGenerator *generator = nullptr; - res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outKeyPair, nullptr); - HcfBlob outPubKeyBlob = { .data = nullptr, .len = 0 }; - res = outKeyPair->pubKey->base.getEncoded(&(outKeyPair->pubKey->base), &outPubKeyBlob); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outPubKeyBlob.data, nullptr); - ASSERT_NE(outPubKeyBlob.len, 0); - HcfBlob outPriKeyBlob = { .data = nullptr, .len = 0 }; - res = outKeyPair->priKey->base.getEncoded(&(outKeyPair->priKey->base), &outPriKeyBlob); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outPriKeyBlob.data, nullptr); - ASSERT_NE(outPriKeyBlob.len, 0); - free(pubKeyBlob.data); - free(priKeyBlob.data); - free(outPubKeyBlob.data); - free(outPriKeyBlob.data); - HcfObjDestroy(outKeyPair); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorBySpec); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest525, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - - HcfKeyPair *keyPair = nullptr; - res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKeyBlob.data, nullptr); - ASSERT_NE(pubKeyBlob.len, 0); - - HcfAsyKeyGenerator *generator = nullptr; - res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(generator, nullptr, &pubKeyBlob, nullptr, &outKeyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outKeyPair, nullptr); - ASSERT_NE(outKeyPair->pubKey, nullptr); - ASSERT_EQ(outKeyPair->priKey, nullptr); - - HcfBlob outPubKeyBlob = { .data = nullptr, .len = 0 }; - res = outKeyPair->pubKey->base.getEncoded(&(outKeyPair->pubKey->base), &outPubKeyBlob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outPubKeyBlob.data, nullptr); - ASSERT_NE(outPubKeyBlob.len, 0); - - free(pubKeyBlob.data); - free(outPubKeyBlob.data); - HcfObjDestroy(outKeyPair); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorBySpec); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest526, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - - HcfKeyPair *keyPair = nullptr; - res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob priKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKeyBlob.data, nullptr); - ASSERT_NE(priKeyBlob.len, 0); - - HcfAsyKeyGenerator *generator = nullptr; - res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(generator, nullptr, nullptr, &priKeyBlob, &outKeyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outKeyPair, nullptr); - ASSERT_EQ(outKeyPair->pubKey, nullptr); - ASSERT_NE(outKeyPair->priKey, nullptr); - - HcfBlob outPriKeyBlob = { .data = nullptr, .len = 0 }; - res = outKeyPair->priKey->base.getEncoded(&(outKeyPair->priKey->base), &outPriKeyBlob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outPriKeyBlob.data, nullptr); - ASSERT_NE(outPriKeyBlob.len, 0); - - free(priKeyBlob.data); - free(outPriKeyBlob.data); - HcfObjDestroy(outKeyPair); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorBySpec); -} - -// for test:测试ecc的spi类 -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest601, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = 0, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest602, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = HCF_ALG_MODE_NONE, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(spiObj, nullptr); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest603, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = 0, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc224CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest604, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = 0, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc224PubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfPubKey *pubKey = nullptr; - res = spiObj->engineGeneratePubKeyBySpec(spiObj, paramSpec, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest605, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = 0, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc224PriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfPriKey *priKey = nullptr; - res = spiObj->engineGeneratePriKeyBySpec(spiObj, paramSpec, &priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest606, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = 0, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc224KeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest607, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = 0, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(nullptr); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest608, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = 0, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(&g_obj); - - HcfObjDestroy(spiObj); -} - -static HcfResult ConstructEcc521KeyPairParamsSpecByGet(HcfEccKeyPairParamsSpec *eccKeyPairSpec, - HcfBigInteger *params, int h) -{ - HcfECField *tmpField = (HcfECField *)(&g_fieldFp); - - eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = tmpField; - eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = params[0].data; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = params[0].len; - eccKeyPairSpec->base.a.data = params[1].data; - eccKeyPairSpec->base.a.len = params[1].len; - eccKeyPairSpec->base.b.data = params[2].data; - eccKeyPairSpec->base.b.len = params[2].len; - eccKeyPairSpec->base.g.x.data = params[3].data; - eccKeyPairSpec->base.g.x.len = params[3].len; - eccKeyPairSpec->base.g.y.data = params[4].data; - eccKeyPairSpec->base.g.y.len = params[4].len; - - eccKeyPairSpec->base.n.data = params[5].data; - eccKeyPairSpec->base.n.len = params[5].len; - eccKeyPairSpec->base.h = h; - eccKeyPairSpec->pk.x.data = params[6].data; - eccKeyPairSpec->pk.x.len = params[6].len; - eccKeyPairSpec->pk.y.data = params[7].data; - eccKeyPairSpec->pk.y.len = params[7].len; - - eccKeyPairSpec->sk.data = params[8].data; - eccKeyPairSpec->sk.len = params[8].len; - return HCF_SUCCESS; -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest609, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC521", &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - HcfPriKey *priKey = keyPair->priKey; - HcfPubKey *pubKey = keyPair->pubKey; - HcfBigInteger retFp = { .data = nullptr, .len = 0 }; - HcfBigInteger retA = { .data = nullptr, .len = 0 }; - HcfBigInteger retB = { .data = nullptr, .len = 0 }; - HcfBigInteger retGX = { .data = nullptr, .len = 0 }; - HcfBigInteger retGY = { .data = nullptr, .len = 0 }; - HcfBigInteger retN = { .data = nullptr, .len = 0 }; - HcfBigInteger retSk = { .data = nullptr, .len = 0 }; - HcfBigInteger retPkX = { .data = nullptr, .len = 0 }; - HcfBigInteger retPkY = { .data = nullptr, .len = 0 }; - int retH = 0; - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_FP_P_BN, &retFp); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_A_BN, &retA); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_B_BN, &retB); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_G_X_BN, &retGX); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_G_Y_BN, &retGY); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_N_BN, &retN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, ECC_PK_X_BN, &retPkX); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, ECC_PK_Y_BN, &retPkY); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_SK_BN, &retSk); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecInt(pubKey, ECC_H_INT, &retH); - EXPECT_EQ(res, HCF_SUCCESS); - HcfBigInteger params[9]; - params[0].data = retFp.data; - params[0].len = retFp.len; - params[1].data = retA.data; - params[1].len = retA.len; - params[2].data = retB.data; - params[2].len = retB.len; - params[3].data = retGX.data; - params[3].len = retGX.len; - params[4].data = retGY.data; - params[4].len = retGY.len; - params[5].data = retN.data; - params[5].len = retN.len; - params[6].data = retPkX.data; - params[6].len = retPkX.len; - params[7].data = retPkY.data; - params[7].len = retPkY.len; - params[8].data = retSk.data; - params[8].len = retSk.len; - - HcfEccKeyPairParamsSpec eccKeyPairSpec = {}; - res = ConstructEcc521KeyPairParamsSpecByGet(&eccKeyPairSpec, params, retH); - HcfAsyKeyGeneratorBySpec *generatorSpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&eccKeyPairSpec), &generatorSpec); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorSpec, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorSpec->generateKeyPair(generatorSpec, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupKeyPair, nullptr); - - HcfOpensslEccPubKey *eccPubKey = reinterpret_cast(dupKeyPair->pubKey); - int32_t curveId = eccPubKey->curveId; - EXPECT_EQ(curveId, NID_secp521r1) << "the curId is " << NID_secp521r1; - for (HcfBigInteger tmp: params) { - if (tmp.data != nullptr) { - free(tmp.data); - } - } - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorSpec); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest610, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = HCF_ALG_ECC_224, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc224ErrCommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest611, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = HCF_ALG_ECC_521, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc521ErrKeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest612, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = HCF_ALG_ECC_224, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc224ErrPubKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfPubKey *keyPair = nullptr; - res = spiObj->engineGeneratePubKeyBySpec(spiObj, paramSpec, &keyPair); - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest613, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = HCF_ALG_ECC_224, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc224ErrPriKeyParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfPriKey *keyPair = nullptr; - res = spiObj->engineGeneratePriKeyBySpec(spiObj, paramSpec, &keyPair); - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest614, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = HCF_ALG_ECC_256, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc256ErrCommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest615, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = HCF_ALG_ECC_384, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc384ErrCommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest616, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = HCF_ALG_ECC_521, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc521ErrCommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest617, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_ECC, - .bits = HCF_ALG_ECC_521, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEcc384ErrKeyPairParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} -} diff --git a/test/unittest/src/crypto_ecc_asy_key_generator_test.cpp b/test/unittest/src/crypto_ecc_asy_key_generator_test.cpp index a8a1cca..48a7b78 100644 --- a/test/unittest/src/crypto_ecc_asy_key_generator_test.cpp +++ b/test/unittest/src/crypto_ecc_asy_key_generator_test.cpp @@ -19,6 +19,7 @@ #include "asy_key_generator.h" #include "ecc_asy_key_generator_openssl.h" #include "blob.h" +#include "memory.h" #include "memory_mock.h" #include "openssl_adapter_mock.h" #include "params_parser.h" @@ -716,7 +717,7 @@ HWTEST_F(CryptoEccAsyKeyGeneratorTest, CryptoEccAsyKeyGeneratorTest315, TestSize ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1039,7 +1040,7 @@ HWTEST_F(CryptoEccAsyKeyGeneratorTest, CryptoEccAsyKeyGeneratorTest332, TestSize ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1524,7 +1525,7 @@ HWTEST_F(CryptoEccAsyKeyGeneratorTest, CryptoEccAsyKeyGeneratorTest515, TestSize ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1847,7 +1848,7 @@ HWTEST_F(CryptoEccAsyKeyGeneratorTest, CryptoEccAsyKeyGeneratorTest532, TestSize ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1957,10 +1958,10 @@ HWTEST_F(CryptoEccAsyKeyGeneratorTest, CryptoEccAsyKeyGeneratorTest536, TestSize ASSERT_NE(outPriKeyBlob.data, nullptr); ASSERT_NE(outPriKeyBlob.len, 0); - free(pubKeyBlob.data); - free(priKeyBlob.data); - free(outPubKeyBlob.data); - free(outPriKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); + HcfFree(outPubKeyBlob.data); + HcfFree(outPriKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1999,8 +2000,8 @@ HWTEST_F(CryptoEccAsyKeyGeneratorTest, CryptoEccAsyKeyGeneratorTest537, TestSize ASSERT_NE(outPubKeyBlob.data, nullptr); ASSERT_NE(outPubKeyBlob.len, 0); - free(pubKeyBlob.data); - free(outPubKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(outPubKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -2039,8 +2040,8 @@ HWTEST_F(CryptoEccAsyKeyGeneratorTest, CryptoEccAsyKeyGeneratorTest538, TestSize ASSERT_NE(outPriKeyBlob.data, nullptr); ASSERT_NE(outPriKeyBlob.len, 0); - free(priKeyBlob.data); - free(outPriKeyBlob.data); + HcfFree(priKeyBlob.data); + HcfFree(outPriKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -2195,15 +2196,15 @@ static void MemoryMallocTestFunc(uint32_t mallocCount) }; res = tmpKeyPair->priKey->base.getEncoded(&(tmpKeyPair->priKey->base), &tmpPriKeyBlob); if (res != HCF_SUCCESS) { - free(tmpPubKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); continue; } HcfKeyPair *tmpOutKeyPair = nullptr; res = tmpGenerator->convertKey(tmpGenerator, nullptr, &tmpPubKeyBlob, &tmpPriKeyBlob, &tmpOutKeyPair); - free(tmpPubKeyBlob.data); - free(tmpPriKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); + HcfFree(tmpPriKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); if (res == HCF_SUCCESS) { @@ -2241,8 +2242,8 @@ HWTEST_F(CryptoEccAsyKeyGeneratorTest, CryptoEccAsyKeyGeneratorTest701, TestSize HcfKeyPair *outKeyPair = nullptr; res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); - free(pubKeyBlob.data); - free(priKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -2285,15 +2286,15 @@ static void OpensslMockTestFunc(uint32_t mallocCount) }; res = tmpKeyPair->priKey->base.getEncoded(&(tmpKeyPair->priKey->base), &tmpPriKeyBlob); if (res != HCF_SUCCESS) { - free(tmpPubKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); continue; } HcfKeyPair *tmpOutKeyPair = nullptr; res = tmpGenerator->convertKey(tmpGenerator, nullptr, &tmpPubKeyBlob, &tmpPriKeyBlob, &tmpOutKeyPair); - free(tmpPubKeyBlob.data); - free(tmpPriKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); + HcfFree(tmpPriKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); if (res == HCF_SUCCESS) { @@ -2331,8 +2332,8 @@ HWTEST_F(CryptoEccAsyKeyGeneratorTest, CryptoEccAsyKeyGeneratorTest702, TestSize HcfKeyPair *outKeyPair = nullptr; res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); - free(pubKeyBlob.data); - free(priKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); diff --git a/test/unittest/src/crypto_ecc_key_agreement_by_spec_test.cpp b/test/unittest/src/crypto_ecc_key_agreement_by_spec_test.cpp index 6eb5b82..6ec738b 100644 --- a/test/unittest/src/crypto_ecc_key_agreement_by_spec_test.cpp +++ b/test/unittest/src/crypto_ecc_key_agreement_by_spec_test.cpp @@ -23,6 +23,7 @@ #include "ecc_common.h" #include "ecdh_openssl.h" #include "key_agreement.h" +#include "memory.h" #include "memory_mock.h" #include "openssl_adapter_mock.h" #include "openssl_common.h" @@ -436,7 +437,7 @@ HWTEST_F(CryptoEccKeyAgreementBySpecTest, CryptoEccKeyAgreementBySpecTest701, Te ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyAgreement); } @@ -455,7 +456,7 @@ HWTEST_F(CryptoEccKeyAgreementBySpecTest, CryptoEccKeyAgreementBySpecTest702, Te ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyAgreement); } @@ -474,7 +475,7 @@ HWTEST_F(CryptoEccKeyAgreementBySpecTest, CryptoEccKeyAgreementBySpecTest703, Te ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyAgreement); } @@ -493,7 +494,7 @@ HWTEST_F(CryptoEccKeyAgreementBySpecTest, CryptoEccKeyAgreementBySpecTest704, Te ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyAgreement); } @@ -728,7 +729,7 @@ HWTEST_F(CryptoEccKeyAgreementBySpecTest, CryptoEccKeyAgreementBySpecTest901, Te } HcfObjDestroy(keyAgreement); - free(out.data); + HcfFree(out.data); } EndRecordMallocNum(); } @@ -773,7 +774,7 @@ HWTEST_F(CryptoEccKeyAgreementBySpecTest, CryptoEccKeyAgreementBySpecTest902, Te } HcfObjDestroy(keyAgreement); - free(out.data); + HcfFree(out.data); } EndRecordOpensslCallNum(); } diff --git a/test/unittest/src/crypto_ecc_key_agreement_test.cpp b/test/unittest/src/crypto_ecc_key_agreement_test.cpp index 20a3836..5f9a8e1 100644 --- a/test/unittest/src/crypto_ecc_key_agreement_test.cpp +++ b/test/unittest/src/crypto_ecc_key_agreement_test.cpp @@ -19,6 +19,7 @@ #include "asy_key_generator.h" #include "ecdh_openssl.h" #include "key_agreement.h" +#include "memory.h" #include "memory_mock.h" #include "openssl_adapter_mock.h" #include "params_parser.h" @@ -316,7 +317,7 @@ HWTEST_F(CryptoEccKeyAgreementTest, CryptoEccKeyAgreementTest201, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyAgreement); } @@ -335,7 +336,7 @@ HWTEST_F(CryptoEccKeyAgreementTest, CryptoEccKeyAgreementTest202, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyAgreement); } @@ -354,7 +355,7 @@ HWTEST_F(CryptoEccKeyAgreementTest, CryptoEccKeyAgreementTest203, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyAgreement); } @@ -373,7 +374,7 @@ HWTEST_F(CryptoEccKeyAgreementTest, CryptoEccKeyAgreementTest204, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyAgreement); } @@ -672,7 +673,7 @@ HWTEST_F(CryptoEccKeyAgreementTest, CryptoEccKeyAgreementTest401, TestSize.Level } HcfObjDestroy(keyAgreement); - free(out.data); + HcfFree(out.data); } EndRecordMallocNum(); } @@ -717,7 +718,7 @@ HWTEST_F(CryptoEccKeyAgreementTest, CryptoEccKeyAgreementTest402, TestSize.Level } HcfObjDestroy(keyAgreement); - free(out.data); + HcfFree(out.data); } EndRecordOpensslCallNum(); } diff --git a/test/unittest/src/crypto_ecc_key_util_test.cpp b/test/unittest/src/crypto_ecc_key_util_test.cpp index 20dedfa..efed76c 100644 --- a/test/unittest/src/crypto_ecc_key_util_test.cpp +++ b/test/unittest/src/crypto_ecc_key_util_test.cpp @@ -17,8 +17,8 @@ #include #include "asy_key_generator.h" +#include "ecc_common_param_spec.h" #include "blob.h" -#include "detailed_ecc_key_params.h" #include "ecc_key_util.h" #include "ecc_openssl_common.h" #include "ecc_openssl_common_param_spec.h" @@ -39,8 +39,8 @@ using namespace testing::ext; namespace { class CryptoEccKeyUtilTest : public testing::Test { public: - static void SetUpTestCase(); - static void TearDownTestCase(); + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; void SetUp(); void TearDown(); }; @@ -75,10 +75,6 @@ HcfEccCommParamsSpec *g_brainpool384t1CommSpec = nullptr; HcfEccCommParamsSpec *g_brainpool512r1CommSpec = nullptr; HcfEccCommParamsSpec *g_brainpool512t1CommSpec = nullptr; -HcfEccKeyPairParamsSpec g_brainpoolKeyPairSpec; -HcfEccPriKeyParamsSpec g_brainpool160r1PriKeySpec; -HcfEccPubKeyParamsSpec g_brainpool160r1PubKeySpec; - void CryptoEccKeyUtilTest::SetUp() {} void CryptoEccKeyUtilTest::TearDown() {} @@ -95,186 +91,13 @@ static const char *GetMockClass(void) HcfObjectBase g_obj = { .getClass = GetMockClass, - .destroy = nullptr}; - - -static HcfResult ConstructEccBrainPoolKeyPairCommParamsSpec(const string &algoName, HcfEccCommParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = nullptr; - HcfEccKeyUtilCreate(algoName.c_str(), &eccCommSpec); - - *spec = eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructbrainpoolKeyPairParamsSpec(const string &algoName, - HcfEccCommParamsSpec *brainpoolCommSpec, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_brainpoolKeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccKeyPairSpec->base.base.algName = brainpoolCommSpec->base.algName; - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = brainpoolCommSpec->field; - eccKeyPairSpec->base.field->fieldType = brainpoolCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = ((HcfECFieldFp *)(brainpoolCommSpec->field))->p.data; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = ((HcfECFieldFp *)(brainpoolCommSpec->field))->p.len; - eccKeyPairSpec->base.a.data = brainpoolCommSpec->a.data; - eccKeyPairSpec->base.a.len = brainpoolCommSpec->a.len; - eccKeyPairSpec->base.b.data = brainpoolCommSpec->b.data; - eccKeyPairSpec->base.b.len = brainpoolCommSpec->b.len; - eccKeyPairSpec->base.g.x.data = brainpoolCommSpec->g.x.data; - eccKeyPairSpec->base.g.x.len = brainpoolCommSpec->g.x.len; - eccKeyPairSpec->base.g.y.data = brainpoolCommSpec->g.y.data; - eccKeyPairSpec->base.g.y.len = brainpoolCommSpec->g.y.len; - eccKeyPairSpec->base.n.data = brainpoolCommSpec->n.data; - eccKeyPairSpec->base.n.len = brainpoolCommSpec->n.len; - eccKeyPairSpec->base.h = brainpoolCommSpec->h; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); - eccKeyPairSpec->pk.x.data = retBigInt.data; - eccKeyPairSpec->pk.x.len = retBigInt.len; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); - eccKeyPairSpec->pk.y.data =retBigInt.data; - eccKeyPairSpec->pk.y.len = retBigInt.len; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); - eccKeyPairSpec->sk.data = retBigInt.data; - eccKeyPairSpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - HcfObjDestroy(generator); - return HCF_SUCCESS; -} - -static HcfResult Constructbrainpool160r1PubKeyParamsSpec(const string &algoName, - HcfEccCommParamsSpec *brainpoolCommSpec, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_brainpool160r1PubKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccPubKeySpec->base.base.algName = brainpoolCommSpec->base.algName; - eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; - eccPubKeySpec->base.field = brainpoolCommSpec->field; - eccPubKeySpec->base.field->fieldType = brainpoolCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = ((HcfECFieldFp *)(brainpoolCommSpec->field))->p.data; - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = ((HcfECFieldFp *)(brainpoolCommSpec->field))->p.len; - eccPubKeySpec->base.a.data = brainpoolCommSpec->a.data; - eccPubKeySpec->base.a.len = brainpoolCommSpec->a.len; - eccPubKeySpec->base.b.data = brainpoolCommSpec->b.data; - eccPubKeySpec->base.b.len = brainpoolCommSpec->b.len; - eccPubKeySpec->base.g.x.data = brainpoolCommSpec->g.x.data; - eccPubKeySpec->base.g.x.len = brainpoolCommSpec->g.x.len; - eccPubKeySpec->base.g.y.data = brainpoolCommSpec->g.y.data; - eccPubKeySpec->base.g.y.len = brainpoolCommSpec->g.y.len; - eccPubKeySpec->base.n.data = brainpoolCommSpec->n.data; - eccPubKeySpec->base.n.len = brainpoolCommSpec->n.len; - eccPubKeySpec->base.h = brainpoolCommSpec->h; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); - eccPubKeySpec->pk.x.data = retBigInt.data; - eccPubKeySpec->pk.x.len = retBigInt.len; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); - eccPubKeySpec->pk.y.data =retBigInt.data; - eccPubKeySpec->pk.y.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; - HcfObjDestroy(generator); - return HCF_SUCCESS; -} - -static HcfResult Constructbrainpool160r1PriKeyParamsSpec(const string &algoName, - HcfEccCommParamsSpec *brainpoolCommSpec, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_brainpool160r1PriKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccPriKeySpec->base.base.algName = brainpoolCommSpec->base.algName; - eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; - eccPriKeySpec->base.field = brainpoolCommSpec->field; - eccPriKeySpec->base.field->fieldType = brainpoolCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = ((HcfECFieldFp *)(brainpoolCommSpec->field))->p.data; - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = ((HcfECFieldFp *)(brainpoolCommSpec->field))->p.len; - eccPriKeySpec->base.a.data = brainpoolCommSpec->a.data; - eccPriKeySpec->base.a.len = brainpoolCommSpec->a.len; - eccPriKeySpec->base.b.data = brainpoolCommSpec->b.data; - eccPriKeySpec->base.b.len = brainpoolCommSpec->b.len; - eccPriKeySpec->base.g.x.data = brainpoolCommSpec->g.x.data; - eccPriKeySpec->base.g.x.len = brainpoolCommSpec->g.x.len; - eccPriKeySpec->base.g.y.data = brainpoolCommSpec->g.y.data; - eccPriKeySpec->base.g.y.len = brainpoolCommSpec->g.y.len; - eccPriKeySpec->base.n.data = brainpoolCommSpec->n.data; - eccPriKeySpec->base.n.len = brainpoolCommSpec->n.len; - eccPriKeySpec->base.h = brainpoolCommSpec->h; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); - eccPriKeySpec->sk.data = retBigInt.data; - eccPriKeySpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; - HcfObjDestroy(generator); - - return HCF_SUCCESS; -} - -void CryptoEccKeyUtilTest::SetUpTestCase() -{ - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP160t1", &g_brainpool160t1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP192r1", &g_brainpool192r1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP192t1", &g_brainpool192t1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP224r1", &g_brainpool224r1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP224t1", &g_brainpool224t1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP256r1", &g_brainpool256r1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP256t1", &g_brainpool256t1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP320r1", &g_brainpool320r1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP320t1", &g_brainpool320t1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP384r1", &g_brainpool384r1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP384t1", &g_brainpool384t1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP512r1", &g_brainpool512r1CommSpec); - ConstructEccBrainPoolKeyPairCommParamsSpec("NID_brainpoolP512t1", &g_brainpool512t1CommSpec); -} - -void CryptoEccKeyUtilTest::TearDownTestCase() -{ - FreeEccCommParamsSpec(g_brainpool160r1CommSpec); - FreeEccCommParamsSpec(g_brainpool160t1CommSpec); - FreeEccCommParamsSpec(g_brainpool192r1CommSpec); - FreeEccCommParamsSpec(g_brainpool192t1CommSpec); - FreeEccCommParamsSpec(g_brainpool224r1CommSpec); - FreeEccCommParamsSpec(g_brainpool224t1CommSpec); - FreeEccCommParamsSpec(g_brainpool256r1CommSpec); - FreeEccCommParamsSpec(g_brainpool256t1CommSpec); - FreeEccCommParamsSpec(g_brainpool320r1CommSpec); - FreeEccCommParamsSpec(g_brainpool320t1CommSpec); - FreeEccCommParamsSpec(g_brainpool384r1CommSpec); - FreeEccCommParamsSpec(g_brainpool384t1CommSpec); - FreeEccCommParamsSpec(g_brainpool512r1CommSpec); - FreeEccCommParamsSpec(g_brainpool512t1CommSpec); -} + .destroy = nullptr +}; HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_1, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP160r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP160r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -284,7 +107,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_1, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_2, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP160t1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP160t1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -294,7 +117,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_2, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_3, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP192r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP192r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -304,7 +127,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_3, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_4, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP192t1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP192t1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -314,7 +137,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_4, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_5, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP224r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP224r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -324,7 +147,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_5, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_6, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP224t1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP224t1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -334,7 +157,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_6, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_7, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP256r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP256r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -344,7 +167,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_7, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_8, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP256t1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP256t1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -354,7 +177,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_8, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_9, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP320r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP320r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -364,7 +187,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_9, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_10, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP320t1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP320t1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -374,7 +197,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_10, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_11, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP384r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP384r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -384,7 +207,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_11, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_12, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP384t1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP384t1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -394,7 +217,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_12, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_13, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP512r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP512r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -404,7 +227,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_13, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_14, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP512t1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP512t1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -414,7 +237,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_14, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_15, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_secp224r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_secp224r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -424,7 +247,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_15, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_16, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_X9_62_prime256v1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_X9_62_prime256v1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -434,7 +257,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_16, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_17, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_secp384r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_secp384r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -444,7 +267,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_17, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_18, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_secp521r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_secp521r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -454,7 +277,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_18, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_19, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("NID_sm2", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_sm2", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); @@ -464,7 +287,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest001_19, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest002, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate(nullptr, &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate(nullptr, &returnCommonParamSpec); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(returnCommonParamSpec, nullptr); @@ -473,14 +296,14 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest002, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest003, TestSize.Level0) { - int32_t res = HcfEccKeyUtilCreate("ECC_BrainPoolP160r1", nullptr); + HcfResult res = HcfEccKeyUtilCreate("ECC_BrainPoolP160r1", nullptr); ASSERT_NE(res, HCF_SUCCESS); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest004, TestSize.Level0) { HcfEccCommParamsSpec *returnCommonParamSpec; - int32_t res = HcfEccKeyUtilCreate("BrainPoolP999", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("BrainPoolP999", &returnCommonParamSpec); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(returnCommonParamSpec, nullptr); @@ -489,8 +312,11 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest004, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest005, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -504,12 +330,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest005, TestSize.Level0) ASSERT_NE(classname, nullptr); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest006, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -519,14 +349,17 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest006, TestSize.Level0) ASSERT_NE(returnObj, nullptr); returnObj->base.destroy(&g_obj); - HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest007, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -537,14 +370,17 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest007, TestSize.Level0) const char *algName = returnObj->getAlgName(returnObj); ASSERT_NE(algName, nullptr); - HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest008, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -559,12 +395,17 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest008, TestSize.Level0) ASSERT_NE(returnKeyPair, nullptr); HcfObjDestroy(returnObj); + HcfObjDestroy(returnKeyPair); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest009, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -582,12 +423,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest009, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest010, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -603,12 +448,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest010, TestSize.Level0) returnKeyPair->base.destroy(&(returnKeyPair->base)); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest011, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -625,12 +474,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest011, TestSize.Level0) returnKeyPair->base.destroy(nullptr); HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest012, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -647,12 +500,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest012, TestSize.Level0) returnKeyPair->base.destroy(&g_obj); HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest013, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -670,12 +527,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest013, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest014, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -693,12 +554,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest014, TestSize.Level0) returnKeyPair->pubKey = nullptr; HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest015, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -716,12 +581,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest015, TestSize.Level0) returnKeyPair->pubKey = nullptr; HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest016, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -738,12 +607,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest016, TestSize.Level0) returnKeyPair->pubKey->base.base.destroy(&g_obj); HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest017, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -761,12 +634,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest017, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest018, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -784,12 +661,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest018, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest019, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -807,12 +688,17 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest019, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + HcfBlobDataFree(&pubKeyBlob); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest020, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -829,12 +715,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest020, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest021, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -851,12 +741,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest021, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest022, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -873,12 +767,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest022, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest023, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -896,12 +794,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest023, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest024, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -919,12 +821,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest024, TestSize.Level0) returnKeyPair->priKey = nullptr; HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest025, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -942,12 +848,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest025, TestSize.Level0) returnKeyPair->priKey = nullptr; HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest026, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -965,12 +875,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest026, TestSize.Level0) returnKeyPair->priKey = nullptr; HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest027, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -988,12 +902,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest027, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest028, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1011,12 +929,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest028, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest029, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1034,12 +956,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest029, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + HcfBlobDataFree(&priKeyBlob); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest030, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PubKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPubKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1056,12 +982,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest030, TestSize.Level0) HcfObjDestroy(returnPubKey); HcfObjDestroy(returnObj); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest031, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PubKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPubKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1078,12 +1007,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest031, TestSize.Level0) returnPubKey->base.base.destroy(&(returnPubKey->base.base)); HcfObjDestroy(returnObj); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest032, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PubKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPubKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1101,12 +1033,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest032, TestSize.Level0) HcfObjDestroy(returnPubKey); HcfObjDestroy(returnObj); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest033, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PubKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPubKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1124,12 +1059,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest033, TestSize.Level0) HcfObjDestroy(returnPubKey); HcfObjDestroy(returnObj); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest034, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PubKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPubKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1150,12 +1088,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest034, TestSize.Level0) HcfFree(blob.data); HcfObjDestroy(returnPubKey); HcfObjDestroy(returnObj); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest035, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PriKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPriKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1172,12 +1113,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest035, TestSize.Level0) HcfObjDestroy(returnPriKey); HcfObjDestroy(returnObj); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest036, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PriKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPriKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1194,12 +1138,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest036, TestSize.Level0) returnPriKey->base.base.destroy(&(returnPriKey->base.base)); HcfObjDestroy(returnObj); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest037, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PriKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPriKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1217,12 +1164,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest037, TestSize.Level0) HcfObjDestroy(returnPriKey); HcfObjDestroy(returnObj); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest038, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PriKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPriKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1241,12 +1191,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest038, TestSize.Level0) HcfObjDestroy(returnPriKey); HcfObjDestroy(returnObj); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_1, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1288,12 +1242,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_1, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_2, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160t1", &g_brainpool160t1CommSpec); + ASSERT_NE(g_brainpool160t1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160t1AlgName, g_brainpool160t1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool160t1AlgName.c_str(), + g_brainpool160t1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1327,12 +1285,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_2, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_3, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP192r1", &g_brainpool192r1CommSpec); + ASSERT_NE(g_brainpool192r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool192r1AlgName, g_brainpool192r1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool192r1AlgName.c_str(), + g_brainpool192r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1366,12 +1328,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_3, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_4, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP192t1", &g_brainpool192t1CommSpec); + ASSERT_NE(g_brainpool192t1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool192t1AlgName, g_brainpool192t1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool192t1AlgName.c_str(), + g_brainpool192t1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1406,12 +1372,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_4, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_5, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP224r1", &g_brainpool224r1CommSpec); + ASSERT_NE(g_brainpool224r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool224r1AlgName, g_brainpool224r1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool224r1AlgName.c_str(), + g_brainpool224r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1445,12 +1415,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_5, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_6, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP224t1", &g_brainpool224t1CommSpec); + ASSERT_NE(g_brainpool224t1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool224t1AlgName, g_brainpool224t1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool224t1AlgName.c_str(), + g_brainpool224t1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1484,12 +1458,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_6, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_7, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP256r1", &g_brainpool256r1CommSpec); + ASSERT_NE(g_brainpool256r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool256r1AlgName, g_brainpool256r1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool256r1AlgName.c_str(), + g_brainpool256r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1522,12 +1500,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_7, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_8, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP256t1", &g_brainpool256t1CommSpec); + ASSERT_NE(g_brainpool256t1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool256t1AlgName, g_brainpool256t1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool256t1AlgName.c_str(), + g_brainpool256t1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1561,12 +1543,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_8, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_9, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP320r1", &g_brainpool320r1CommSpec); + ASSERT_NE(g_brainpool320r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool320r1AlgName, g_brainpool320r1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool320r1AlgName.c_str(), + g_brainpool320r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1600,12 +1586,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_9, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_10, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP320t1", &g_brainpool320t1CommSpec); + ASSERT_NE(g_brainpool320t1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool320t1AlgName, g_brainpool320t1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool320t1AlgName.c_str(), + g_brainpool320t1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1639,12 +1629,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_10, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_11, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP384r1", &g_brainpool384r1CommSpec); + ASSERT_NE(g_brainpool384r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool384r1AlgName, g_brainpool384r1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool384r1AlgName.c_str(), + g_brainpool384r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1678,12 +1672,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_11, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_12, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP384t1", &g_brainpool384t1CommSpec); + ASSERT_NE(g_brainpool384t1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool384t1AlgName, g_brainpool384t1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool384t1AlgName.c_str(), + g_brainpool384t1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1717,12 +1715,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_12, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_13, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP512r1", &g_brainpool512r1CommSpec); + ASSERT_NE(g_brainpool512r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool512r1AlgName, g_brainpool512r1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool512r1AlgName.c_str(), + g_brainpool512r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1756,12 +1758,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_13, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_14, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP512t1", &g_brainpool512t1CommSpec); + ASSERT_NE(g_brainpool512t1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool512t1AlgName, g_brainpool512t1CommSpec, ¶mSpec); + int32_t res = ConstructEccKeyPairParamsSpec(g_brainpool512t1AlgName.c_str(), + g_brainpool512t1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1794,12 +1800,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest039_14, TestSize.Level0) HcfObjDestroy(returnObj); HcfObjDestroy(sign); HcfObjDestroy(verify); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest040, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1815,12 +1825,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest040, TestSize.Level0) HcfObjDestroy(returnKeyPair); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest041, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PubKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPubKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1837,12 +1850,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest041, TestSize.Level0) HcfObjDestroy(returnPubKey); HcfObjDestroy(returnObj); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest042, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PriKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPriKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1859,12 +1875,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest042, TestSize.Level0) HcfObjDestroy(returnPriKey); HcfObjDestroy(returnObj); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest043, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PriKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPriKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1881,12 +1900,16 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest043, TestSize.Level0) HcfObjDestroy(returnPriKey); HcfObjDestroy(returnObj); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest044, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructbrainpoolKeyPairParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName.c_str(), + g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1902,12 +1925,15 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest044, TestSize.Level0) HcfObjDestroy(returnPriKey); HcfObjDestroy(returnObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest045, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_brainpool160r1CommSpec); + ASSERT_NE(g_brainpool160r1CommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = Constructbrainpool160r1PriKeyParamsSpec(g_brainpool160r1AlgName, g_brainpool160r1CommSpec, + HcfResult res = ConstructEccPriKeyParamsSpec(g_brainpool160r1AlgName.c_str(), g_brainpool160r1CommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1924,6 +1950,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest045, TestSize.Level0) HcfObjDestroy(returnPriKey); HcfObjDestroy(returnObj); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest046, TestSize.Level0) @@ -1934,7 +1961,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest046, TestSize.Level0) .primes = HCF_OPENSSL_PRIMES_2 }; HcfEccCommParamsSpecSpi *returnCommonParamSpec = nullptr; - int32_t res = HcfECCCommonParamSpecCreate(¶ms, &returnCommonParamSpec); + HcfResult res = HcfECCCommonParamSpecCreate(¶ms, &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); } @@ -1942,7 +1969,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest046, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest047, TestSize.Level0) { HcfEccCommParamsSpecSpi *returnCommonParamSpec = nullptr; - int32_t res = HcfECCCommonParamSpecCreate(nullptr, &returnCommonParamSpec); + HcfResult res = HcfECCCommonParamSpecCreate(nullptr, &returnCommonParamSpec); ASSERT_NE(res, HCF_SUCCESS); } @@ -1953,7 +1980,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest048, TestSize.Level0) .bits = HCF_ALG_ECC_BP160R1, .primes = HCF_OPENSSL_PRIMES_2 }; - int32_t res = HcfECCCommonParamSpecCreate(¶ms, nullptr); + HcfResult res = HcfECCCommonParamSpecCreate(¶ms, nullptr); ASSERT_NE(res, HCF_SUCCESS); } @@ -1965,7 +1992,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest049, TestSize.Level0) .primes = HCF_OPENSSL_PRIMES_2 }; HcfEccCommParamsSpecSpi *returnCommonParamSpec = nullptr; - int32_t res = HcfECCCommonParamSpecCreate(&obj, &returnCommonParamSpec); + HcfResult res = HcfECCCommonParamSpecCreate(&obj, &returnCommonParamSpec); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(returnCommonParamSpec, nullptr); @@ -1980,7 +2007,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest050, TestSize.Level0) .primes = HCF_OPENSSL_PRIMES_2 }; HcfEccCommParamsSpecSpi *returnCommonParamSpec = nullptr; - int32_t res = HcfECCCommonParamSpecCreate(&obj, &returnCommonParamSpec); + HcfResult res = HcfECCCommonParamSpecCreate(&obj, &returnCommonParamSpec); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(returnCommonParamSpec, nullptr); @@ -1989,7 +2016,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest050, TestSize.Level0) HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest051, TestSize.Level0) { - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP160r1", nullptr); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP160r1", nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); } @@ -1999,7 +2026,7 @@ static void OpensslMockTestFunc(uint32_t mallocCount, HcfEccCommParamsSpec *retu ResetOpensslCallNum(); SetOpensslCallMockIndex(i); - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP160r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP160r1", &returnCommonParamSpec); if (res != HCF_SUCCESS) { continue; } @@ -2012,7 +2039,7 @@ HWTEST_F(CryptoEccKeyUtilTest, CryptoEccKeyUtilTest052, TestSize.Level0) { StartRecordOpensslCallNum(); HcfEccCommParamsSpec *returnCommonParamSpec = NULL; - int32_t res = HcfEccKeyUtilCreate("NID_brainpoolP160r1", &returnCommonParamSpec); + HcfResult res = HcfEccKeyUtilCreate("NID_brainpoolP160r1", &returnCommonParamSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnCommonParamSpec, nullptr); diff --git a/test/unittest/src/crypto_ed25519_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_ed25519_asy_key_generator_by_spec_test.cpp index d87d4cf..75fd60a 100644 --- a/test/unittest/src/crypto_ed25519_asy_key_generator_by_spec_test.cpp +++ b/test/unittest/src/crypto_ed25519_asy_key_generator_by_spec_test.cpp @@ -16,7 +16,7 @@ #include #include -#include "asy_key_generator.h" +#include "alg_25519_common_param_spec.h" #include "blob.h" #include "ecdsa_openssl.h" #include "memory.h" @@ -25,7 +25,6 @@ #include "asy_key_params.h" #include "params_parser.h" #include "alg_25519_asy_key_generator_openssl.h" -#include "detailed_alg_25519_key_params.h" #include "memory_mock.h" #include "openssl_adapter_mock.h" @@ -35,8 +34,8 @@ using namespace testing::ext; namespace { class CryptoEd25519AsyKeyGeneratorBySpecTest : public testing::Test { public: - static void SetUpTestCase(); - static void TearDownTestCase(); + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; void SetUp(); void TearDown(); }; @@ -45,14 +44,8 @@ static string g_ed25519AlgoName = "Ed25519"; static string g_pubkeyformatName = "X.509"; static string g_prikeyformatName = "PKCS#8"; -HcfAlg25519KeyPairParamsSpec g_ed25519KeyPairSpec; -HcfAlg25519PriKeyParamsSpec g_ed25519PriKeySpec; -HcfAlg25519PubKeyParamsSpec g_ed25519PubKeySpec; - void CryptoEd25519AsyKeyGeneratorBySpecTest::SetUp() {} void CryptoEd25519AsyKeyGeneratorBySpecTest::TearDown() {} -void CryptoEd25519AsyKeyGeneratorBySpecTest::SetUpTestCase() {} -void CryptoEd25519AsyKeyGeneratorBySpecTest::TearDownTestCase() {} static const char *g_mockMessage = "hello world"; static HcfBlob g_mockInput = { @@ -69,214 +62,92 @@ HcfObjectBase g_obj = { .destroy = nullptr }; -static HcfResult ConstructEd25519KeyPairParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return res; - } - HcfAlg25519KeyPairParamsSpec *ed25519KeyPairSpec = &g_ed25519KeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - ed25519KeyPairSpec->base.algName = g_ed25519AlgoName.data(); - ed25519KeyPairSpec->base.specType = HCF_KEY_PAIR_SPEC; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - ed25519KeyPairSpec->pk.data = retBigInt.data; - ed25519KeyPairSpec->pk.len = retBigInt.len; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - ed25519KeyPairSpec->sk.data = retBigInt.data; - ed25519KeyPairSpec->sk.len = retBigInt.len; - *spec = (HcfAsyKeyParamsSpec *)ed25519KeyPairSpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; -} - -static HcfResult ConstructEd25519PubKeyParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - return res; - } - HcfAlg25519PubKeyParamsSpec *ed25519PubKeySpec = &g_ed25519PubKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - ed25519PubKeySpec->base.algName = g_ed25519AlgoName.data(); - ed25519PubKeySpec->base.specType = HCF_PUBLIC_KEY_SPEC; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_PK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - ed25519PubKeySpec->pk.data = retBigInt.data; - ed25519PubKeySpec->pk.len = retBigInt.len; - *spec = (HcfAsyKeyParamsSpec *)ed25519PubKeySpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; -} - -static HcfResult ConstructEd25519PriKeyParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return res; - } - - HcfAlg25519PriKeyParamsSpec *ed25519PriKeySpec = &g_ed25519PriKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - ed25519PriKeySpec->base.algName = g_ed25519AlgoName.data(); - ed25519PriKeySpec->base.specType = HCF_PRIVATE_KEY_SPEC; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_SK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - ed25519PriKeySpec->sk.data = retBigInt.data; - ed25519PriKeySpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)ed25519PriKeySpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; -} - HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest001_1, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); + HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest001_2, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519PubKeyParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreatePubKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); + HcfObjDestroy(returnObj); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest001_3, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519PriKeyParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreatePriKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); + HcfObjDestroy(returnObj); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest002, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); const char *className = returnObj->base.getClass(); ASSERT_NE(className, NULL); ASSERT_NE(returnObj, nullptr); + HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest003, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); returnObj->base.destroy(&g_obj); - HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest004, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); const char *algoName = returnObj->getAlgName(returnObj); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_EQ(algoName, g_ed25519AlgoName); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest005, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -286,19 +157,16 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest006, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -311,19 +179,17 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest007, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -332,21 +198,17 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest008, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -358,19 +220,17 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest009, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -381,19 +241,16 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS keyPair->pubKey = nullptr; HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest010, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -414,19 +271,17 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest011, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -438,19 +293,16 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest012, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -461,19 +313,17 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS keyPair->priKey = nullptr; HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest013, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -494,19 +344,16 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest014, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -522,29 +369,22 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest015, TestSize.Level0) { HcfAsyKeyParamsSpec *pubparamSpec = nullptr; - HcfResult res = ConstructEd25519PubKeyParamsSpec(g_ed25519AlgoName, &pubparamSpec); + HcfAsyKeyGeneratorBySpec *returnpubObj = nullptr; + HcfResult res = TestCreatePubKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + &pubparamSpec, &returnpubObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubparamSpec, nullptr); HcfAsyKeyParamsSpec *priparamSpec = nullptr; - res = ConstructEd25519PriKeyParamsSpec(g_ed25519AlgoName, &priparamSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priparamSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnpriObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(priparamSpec, &returnpriObj); + res = TestCreatePriKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + &priparamSpec, &returnpriObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnpriObj, nullptr); - - HcfAsyKeyGeneratorBySpec *returnpubObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(pubparamSpec, &returnpubObj); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnpubObj, nullptr); HcfPubKey *pubKey = nullptr; res = returnpubObj->generatePubKey(returnpubObj, &pubKey); @@ -571,19 +411,17 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(priKey); HcfObjDestroy(returnpubObj); HcfObjDestroy(returnpriObj); + DestroyAlg25519PubKeySpec(reinterpret_cast(pubparamSpec)); + DestroyAlg25519PriKeySpec(reinterpret_cast(priparamSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest016, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519KeyPairParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -617,6 +455,7 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(verify); HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest017, TestSize.Level0) @@ -650,7 +489,7 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS ASSERT_NE(returnSpi, nullptr); HcfAsyKeyParamsSpec *paramsSpec = nullptr; - res = ConstructEd25519KeyPairParamsSpec("Ed25519", ¶msSpec); + res = ConstructAlg25519KeyPairParamsSpec(g_ed25519AlgoName.c_str(), true, ¶msSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -661,6 +500,7 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(returnSpi); HcfObjDestroy(keyPair); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramsSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest019, TestSize.Level0) @@ -678,7 +518,7 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS ASSERT_NE(returnSpi, nullptr); HcfAsyKeyParamsSpec *paramsSpec = nullptr; - res = ConstructEd25519PubKeyParamsSpec("Ed25519", ¶msSpec); + res = ConstructAlg25519PubKeyParamsSpec(g_ed25519AlgoName.c_str(), true, ¶msSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -689,6 +529,7 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(returnSpi); HcfObjDestroy(pubKey); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramsSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest020, TestSize.Level0) @@ -706,7 +547,7 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS ASSERT_NE(returnSpi, nullptr); HcfAsyKeyParamsSpec *paramsSpec = nullptr; - res = ConstructEd25519PriKeyParamsSpec("Ed25519", ¶msSpec); + res = ConstructAlg25519PriKeyParamsSpec(g_ed25519AlgoName.c_str(), true, ¶msSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -717,19 +558,16 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(returnSpi); HcfObjDestroy(priKey); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramsSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest021, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519PubKeyParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreatePubKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfPriKey *priKey = nullptr; res = returnObj->generatePriKey(returnObj, &priKey); @@ -744,19 +582,17 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(returnObj); HcfObjDestroy(priKey); HcfObjDestroy(keyPair); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest022, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519PriKeyParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + + HcfResult res = TestCreatePriKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -771,6 +607,7 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(returnObj); HcfObjDestroy(keyPair); HcfObjDestroy(pubKey); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest023, TestSize.Level0) @@ -792,14 +629,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS ASSERT_NE(blob1.len, 0); HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEd25519PubKeyParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + res = TestCreatePubKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfPubKey *pubKey = nullptr; res = returnObj->generatePubKey(returnObj, &pubKey); @@ -820,6 +653,7 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(returnObj); HcfObjDestroy(pubKey); HcfObjDestroy(keyPair); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest024, TestSize.Level0) @@ -841,14 +675,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS ASSERT_NE(blob1.len, 0); HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructEd25519PriKeyParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + + res = TestCreatePriKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfPriKey *priKey = nullptr; res = returnObj->generatePriKey(returnObj, &priKey); @@ -869,19 +700,16 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(returnObj); HcfObjDestroy(priKey); HcfObjDestroy(keyPair); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest025, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519PriKeyParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreatePriKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfPriKey *priKey = nullptr; res = returnObj->generatePriKey(returnObj, &priKey); @@ -905,19 +733,17 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(returnObj); HcfObjDestroy(priKey); HcfObjDestroy(keyPair); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorBySpecTest026, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructEd25519PubKeyParamsSpec(g_ed25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + + HcfResult res = TestCreatePubKeyParamsSpecAndGeneratorBySpec(g_ed25519AlgoName.c_str(), true, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfPubKey *pubKey = nullptr; res = returnObj->generatePubKey(returnObj, &pubKey); @@ -940,5 +766,6 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorBySpecTest, CryptoEd25519AsyKeyGeneratorByS HcfObjDestroy(returnObj); HcfObjDestroy(pubKey); HcfObjDestroy(keyPair); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec)); } } \ No newline at end of file diff --git a/test/unittest/src/crypto_ed25519_asy_key_generator_test.cpp b/test/unittest/src/crypto_ed25519_asy_key_generator_test.cpp index a3f7e66..dacba27 100644 --- a/test/unittest/src/crypto_ed25519_asy_key_generator_test.cpp +++ b/test/unittest/src/crypto_ed25519_asy_key_generator_test.cpp @@ -16,7 +16,7 @@ #include #include "securec.h" -#include "asy_key_generator.h" +#include "alg_25519_common_param_spec.h" #include "blob.h" #include "params_parser.h" #include "key_pair.h" @@ -155,10 +155,8 @@ void CryptoEd25519AsyKeyGeneratorTest::SetUpTestCase() HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest001, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - + HcfResult res = TestHcfAsyKeyGeneratorCreate(g_ed25519AlgoName.c_str(), &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); HcfObjDestroy(generator); } @@ -179,10 +177,8 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest002, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest003, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - + HcfResult res = TestHcfAsyKeyGeneratorCreate(g_ed25519AlgoName.c_str(), &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); generator->base.destroy((HcfObjectBase *)generator); } @@ -203,14 +199,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest004, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest005, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -219,14 +210,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest005, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest006, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->base.getClass(); ASSERT_NE(className, nullptr); @@ -238,14 +225,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest006, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest007, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&(keyPair->base)); @@ -255,14 +237,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest007, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest008, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->pubKey->base.base.getClass(); ASSERT_NE(className, nullptr); @@ -274,14 +252,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest008, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest009, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); keyPair->pubKey = nullptr; @@ -293,14 +266,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest009, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest010, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); ASSERT_EQ(algorithmName, g_ed25519AlgoName); @@ -327,14 +296,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest010, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest011, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->priKey->base.base.getClass(); ASSERT_NE(className, nullptr); @@ -346,14 +310,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest011, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest012, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); keyPair->priKey = nullptr; @@ -364,14 +324,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest012, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest013, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); ASSERT_EQ(algorithmName, g_ed25519AlgoName); @@ -398,14 +353,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest013, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest014, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem(keyPair->priKey); HcfBlob blob = { .data = nullptr, .len = 0 }; @@ -421,21 +372,16 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest014, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest015, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - res = generator->convertKey(generator, nullptr, nullptr, &g_mockEd25519PriKeyBlob, &keyPair); + res = TestGenerateConvertKey(generator, nullptr, &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, nullptr, &keyPair); + res = TestGenerateConvertKey(generator, &g_mockEd25519PubKeyBlob, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -444,14 +390,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest015, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest016, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->base.getClass(); ASSERT_NE(className, nullptr); @@ -463,14 +406,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest016, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest017, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&(keyPair->base)); @@ -480,14 +419,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest017, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest018, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->pubKey->base.base.getClass(); ASSERT_NE(className, nullptr); @@ -499,14 +435,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest018, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest019, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); keyPair->pubKey = nullptr; @@ -518,14 +450,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest019, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest020, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); ASSERT_EQ(algorithmName, g_ed25519AlgoName); @@ -552,14 +481,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest020, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest021, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->priKey->base.base.getClass(); ASSERT_NE(className, nullptr); @@ -571,14 +496,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest021, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest022, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); keyPair->priKey = nullptr; @@ -589,14 +511,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest022, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest023, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); ASSERT_EQ(algorithmName, g_ed25519AlgoName); @@ -623,14 +541,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest023, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest024, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem(keyPair->priKey); HcfBlob blob = { .data = nullptr, .len = 0 }; @@ -786,13 +701,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest026, { StartRecordOpensslCallNum(); HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); @@ -885,37 +796,29 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest030, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest031, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(nullptr, nullptr, &keyPair); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, nullptr); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); - res = generator->generateKeyPair((HcfAsyKeyGenerator *)&g_obj, nullptr, &keyPair); + HcfKeyPair *failKeyPair = nullptr; + res = generator->generateKeyPair((HcfAsyKeyGenerator *)&g_obj, nullptr, &failKeyPair); ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, nullptr); + ASSERT_EQ(failKeyPair, nullptr); res = generator->generateKeyPair(generator, nullptr, nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, nullptr); HcfObjDestroy(keyPair); + HcfObjDestroy(failKeyPair); HcfObjDestroy(generator); } HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest032, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->pubKey->base.getAlgorithm(nullptr); ASSERT_EQ(algorithmName, NULL); @@ -930,14 +833,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest032, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest033, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->base.getEncoded(nullptr, &blob); @@ -961,14 +859,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest033, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest034, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *formatName = keyPair->pubKey->base.getFormat(nullptr); ASSERT_EQ(formatName, nullptr); @@ -983,14 +877,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest034, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest035, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBigInteger returnBigInteger = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ED25519_SK_BN, nullptr); @@ -1017,14 +906,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest035, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest036, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->priKey->base.getAlgorithm(nullptr); ASSERT_EQ(algorithmName, NULL); @@ -1039,14 +923,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest036, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest037, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->priKey->base.getEncoded(nullptr, &blob); @@ -1070,14 +950,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest037, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest038, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *formatName = formatName = keyPair->priKey->base.getFormat(nullptr); ASSERT_EQ(formatName, nullptr); @@ -1092,14 +969,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest038, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest039, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ED25519_PK_BN, nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); @@ -1122,52 +995,48 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest039, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest040, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(nullptr, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, NULL); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); + HcfKeyPair *failKeyPair = nullptr; res = generator->convertKey((HcfAsyKeyGenerator *)&g_obj, nullptr, &g_mockEd25519PubKeyBlob, - &g_mockEd25519PriKeyBlob, &keyPair); + &g_mockEd25519PriKeyBlob, &failKeyPair); ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, NULL); + ASSERT_EQ(failKeyPair, nullptr); - res = generator->convertKey(generator, nullptr, nullptr, nullptr, &keyPair); + res = generator->convertKey(generator, nullptr, nullptr, nullptr, &failKeyPair); ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyPair, NULL); + ASSERT_EQ(failKeyPair, nullptr); res = generator->convertKey(generator, nullptr, &g_mockECC_BrainPool160r1PubKeyBlob, - &g_mockECC_BrainPool160r1PriKeyBlob, &keyPair); + &g_mockECC_BrainPool160r1PriKeyBlob, &failKeyPair); ASSERT_EQ(res, HCF_ERR_CRYPTO_OPERATION); - ASSERT_EQ(keyPair, NULL); + ASSERT_EQ(failKeyPair, nullptr); HcfObjDestroy(keyPair); + HcfObjDestroy(failKeyPair); HcfObjDestroy(generator); } HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest041, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->pubKey->base.getAlgorithm(nullptr); - ASSERT_EQ(algorithmName, NULL); + ASSERT_EQ(algorithmName, nullptr); const char *algorithmName1 = keyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); - ASSERT_EQ(algorithmName1, NULL); + ASSERT_EQ(algorithmName1, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1177,14 +1046,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest041, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest042, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->base.getEncoded(nullptr, &blob); @@ -1207,14 +1072,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest042, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest043, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *formatName = formatName = keyPair->pubKey->base.getFormat(nullptr); ASSERT_EQ(formatName, nullptr); @@ -1229,14 +1091,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest043, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest044, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->priKey->base.getAlgorithm(nullptr); ASSERT_EQ(algorithmName, NULL); @@ -1251,14 +1109,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest044, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest045, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->priKey->base.getEncoded(nullptr, &blob); @@ -1282,14 +1137,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest045, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest046, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *formatName = formatName = keyPair->priKey->base.getFormat(nullptr); ASSERT_EQ(formatName, nullptr); @@ -1304,14 +1155,11 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest046, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest047, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem(nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; @@ -1327,14 +1175,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest047, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest048, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockEd25519PubKeyBlob, &g_mockEd25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_ed25519AlgoName.c_str(), &generator, &g_mockEd25519PubKeyBlob, + &g_mockEd25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem((HcfPriKey *)&g_obj); HcfBlob blob = { .data = nullptr, .len = 0 }; @@ -1350,14 +1194,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest048, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest049, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(nullptr); HcfObjDestroy(keyPair); @@ -1367,14 +1207,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest049, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest050, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&g_obj); HcfObjDestroy(keyPair); @@ -1384,14 +1219,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest050, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest051, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(nullptr); HcfObjDestroy(keyPair); @@ -1401,14 +1232,9 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest051, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest052, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("Ed25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(&g_obj); HcfObjDestroy(keyPair); @@ -1418,14 +1244,10 @@ HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest052, HWTEST_F(CryptoEd25519AsyKeyGeneratorTest, CryptoEd25519AsyKeyGeneratorTest053, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(g_ed25519AlgoName.c_str(), &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); + + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_ed25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfSign *sign = nullptr; res = HcfSignCreate("Ed25519", &sign); diff --git a/test/unittest/src/crypto_ed25519_sign_test.cpp b/test/unittest/src/crypto_ed25519_sign_test.cpp index a3d51e7..a63d9c7 100644 --- a/test/unittest/src/crypto_ed25519_sign_test.cpp +++ b/test/unittest/src/crypto_ed25519_sign_test.cpp @@ -464,7 +464,7 @@ HWTEST_F(CryptoEd25519SignTest, CryptoEd25519SignTest014, TestSize.Level0) ASSERT_EQ(ret, HCF_SUCCESS); ASSERT_NE(sign, nullptr); - int32_t returnInt = 1; + int32_t returnInt = 0; ret = sign->setSignSpecInt(sign, SM2_USER_ID_UINT8ARR, returnInt); ASSERT_EQ(ret, HCF_NOT_SUPPORT); ret = sign->getSignSpecInt(sign, SM2_USER_ID_UINT8ARR, &returnInt); @@ -475,6 +475,8 @@ HWTEST_F(CryptoEd25519SignTest, CryptoEd25519SignTest014, TestSize.Level0) char *itemName = nullptr; ret = sign->getSignSpecString(sign, SM2_USER_ID_UINT8ARR, &itemName); ASSERT_EQ(ret, HCF_NOT_SUPPORT); + + HcfObjDestroy(sign); } HWTEST_F(CryptoEd25519SignTest, CryptoEd25519SignTest015, TestSize.Level0) diff --git a/test/unittest/src/crypto_ed25519_verify_test.cpp b/test/unittest/src/crypto_ed25519_verify_test.cpp index 493921d..fdb261d 100644 --- a/test/unittest/src/crypto_ed25519_verify_test.cpp +++ b/test/unittest/src/crypto_ed25519_verify_test.cpp @@ -355,7 +355,7 @@ HWTEST_F(CryptoEd25519VerifyTest, CryptoEd25519VerifyTest013, TestSize.Level0) ASSERT_EQ(ret, HCF_SUCCESS); ASSERT_NE(verify, nullptr); - int32_t returnInt = 1; + int32_t returnInt = 0; ret = verify->setVerifySpecInt(verify, SM2_USER_ID_UINT8ARR, returnInt); ASSERT_EQ(ret, HCF_NOT_SUPPORT); ret = verify->getVerifySpecInt(verify, SM2_USER_ID_UINT8ARR, &returnInt); @@ -368,6 +368,8 @@ HWTEST_F(CryptoEd25519VerifyTest, CryptoEd25519VerifyTest013, TestSize.Level0) ASSERT_EQ(ret, HCF_NOT_SUPPORT); ret = verify->update(verify, &g_mockInput); ASSERT_EQ(ret, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); } HWTEST_F(CryptoEd25519VerifyTest, CryptoEd25519VerifyTest014, TestSize.Level0) diff --git a/test/unittest/src/crypto_pbkdf2_test.cpp b/test/unittest/src/crypto_pbkdf2_test.cpp index c34d397..8bedec8 100644 --- a/test/unittest/src/crypto_pbkdf2_test.cpp +++ b/test/unittest/src/crypto_pbkdf2_test.cpp @@ -1,470 +1,470 @@ -/* - * Copyright (C) 2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "pbkdf2_openssl.h" - -#include -#include "securec.h" - -#include "detailed_pbkdf2_params.h" -#include "kdf.h" -#include "log.h" -#include "memory.h" - -using namespace std; -using namespace testing::ext; - -namespace { -class CryptoPbkdf2Test : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); - void SetUp(); - void TearDown(); -}; - -void CryptoPbkdf2Test::SetUpTestCase() {} -void CryptoPbkdf2Test::TearDownTestCase() {} - -void CryptoPbkdf2Test::SetUp() // add init here, this will be called before test. -{ -} - -void CryptoPbkdf2Test::TearDown() // add destroy here, this will be called when test case done. -{ -} - -static const char *g_pbkdf2Name = "PBKDF2"; -static const char *g_errorName = "abcd"; -static const char *g_password = "123456"; -static const char *g_passwordEmpty = ""; -static const char *g_passwordLong = "12345678123456781234567812345678123456781234567812345678123456781234567812345678"; - -constexpr uint32_t OUT_PUT_MAX_LENGTH = 128; -constexpr uint32_t OUT_PUT_NORMAL_LENGTH = 32; -constexpr uint32_t SALT_NORMAL_LENGTH = 16; - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test1, TestSize.Level0) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), - .len = strlen(g_password)}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test2, TestSize.Level0) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = nullptr, .len = 0}; - HcfBlob password = {.data = nullptr, .len = 0}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test3, TestSize.Level0) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = nullptr, .len = 0}; - HcfBlob password = {.data = reinterpret_cast(const_cast(g_passwordEmpty)), - .len = strlen(g_passwordEmpty)}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test4, TestSize.Level0) -{ - // long password (long than md length) - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfBlob password = {.data = reinterpret_cast(const_cast(g_passwordLong)), - .len = strlen(g_passwordLong)}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test5, TestSize.Level0) -{ - // password not empty but zero length - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfBlob password = {.data = reinterpret_cast(const_cast(g_passwordLong)), - .len = 0}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test6, TestSize.Level0) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA1", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), - .len = strlen(g_password)}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test7, TestSize.Level0) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA384", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), - .len = strlen(g_password)}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test8, TestSize.Level0) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA512", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), - .len = strlen(g_password)}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test9, TestSize.Level0) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SM3", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), - .len = strlen(g_password)}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test10, TestSize.Level0) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA224", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), - .len = strlen(g_password)}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError1, TestSize.Level1) -{ - // params iter = 0 - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = nullptr, .len = 0}; - HcfPBKDF2ParamsSpec params = { - .base.algName = const_cast(g_pbkdf2Name), - .password = {.data = nullptr, .len = 0}, - .salt = salt, - .iterations = 0, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError2, TestSize.Level1) -{ - // params algName is error - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = nullptr, .len = 0}; - HcfBlob password = {.data = nullptr, .len = 0}; - HcfPBKDF2ParamsSpec params = { - .base.algName = const_cast(g_errorName), - .password = password, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError3, TestSize.Level1) -{ - // params algName is nullptr - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = nullptr, .len = 0}; - HcfPBKDF2ParamsSpec params = { - .base.algName = nullptr, - .password = {.data = nullptr, .len = 0}, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError4, TestSize.Level1) -{ - // output len is 0 and data is nullptr - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = nullptr, .len = 0}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = {.data = nullptr, .len = 0}, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError5, TestSize.Level1) -{ - // output data is nullptr - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = nullptr, .len = OUT_PUT_NORMAL_LENGTH}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = {.data = nullptr, .len = 0}, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError6, TestSize.Level1) -{ - // output len is 0 - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - uint8_t out[OUT_PUT_MAX_LENGTH] = {1, 1}; - HcfBlob output = {.data = out, .len = 0}; - HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; - HcfPBKDF2ParamsSpec params = { - .base.algName = g_pbkdf2Name, - .password = {.data = nullptr, .len = 0}, - .salt = salt, - .iterations = 10000, - .output = output, - }; - ret = generator->generateSecret(generator, &(params.base)); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError7, TestSize.Level1) -{ - // use basic params - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - HcfKdfParamsSpec params = { - .algName = g_pbkdf2Name, - }; - ret = generator->generateSecret(generator, ¶ms); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError8, TestSize.Level1) -{ - // use nullptr params - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); - EXPECT_EQ(ret, HCF_SUCCESS); - ret = generator->generateSecret(generator, nullptr); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError9, TestSize.Level1) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("PBKDF2|abcd", &generator); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError10, TestSize.Level1) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate("ABCD|SM3", &generator); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError11, TestSize.Level1) -{ - HcfKdf *generator = nullptr; - HcfResult ret = HcfKdfCreate(nullptr, &generator); - EXPECT_NE(ret, HCF_SUCCESS); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError12, TestSize.Level1) -{ - HcfResult ret = HcfKdfCreate(nullptr, nullptr); - EXPECT_NE(ret, HCF_SUCCESS); -} -} +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "pbkdf2_openssl.h" + +#include +#include "securec.h" + +#include "detailed_pbkdf2_params.h" +#include "kdf.h" +#include "log.h" +#include "memory.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoPbkdf2Test : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoPbkdf2Test::SetUpTestCase() {} +void CryptoPbkdf2Test::TearDownTestCase() {} + +void CryptoPbkdf2Test::SetUp() // add init here, this will be called before test. +{ +} + +void CryptoPbkdf2Test::TearDown() // add destroy here, this will be called when test case done. +{ +} + +static const char *g_pbkdf2Name = "PBKDF2"; +static const char *g_errorName = "abcd"; +static const char *g_password = "123456"; +static const char *g_passwordEmpty = ""; +static const char *g_passwordLong = "12345678123456781234567812345678123456781234567812345678123456781234567812345678"; + +constexpr uint32_t OUT_PUT_MAX_LENGTH = 128; +constexpr uint32_t OUT_PUT_NORMAL_LENGTH = 32; +constexpr uint32_t SALT_NORMAL_LENGTH = 16; + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test1, TestSize.Level0) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), + .len = strlen(g_password)}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test2, TestSize.Level0) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = nullptr, .len = 0}; + HcfBlob password = {.data = nullptr, .len = 0}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test3, TestSize.Level0) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = nullptr, .len = 0}; + HcfBlob password = {.data = reinterpret_cast(const_cast(g_passwordEmpty)), + .len = strlen(g_passwordEmpty)}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test4, TestSize.Level0) +{ + // long password (long than md length) + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfBlob password = {.data = reinterpret_cast(const_cast(g_passwordLong)), + .len = strlen(g_passwordLong)}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test5, TestSize.Level0) +{ + // password not empty but zero length + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfBlob password = {.data = reinterpret_cast(const_cast(g_passwordLong)), + .len = 0}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test6, TestSize.Level0) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA1", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), + .len = strlen(g_password)}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test7, TestSize.Level0) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA384", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), + .len = strlen(g_password)}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test8, TestSize.Level0) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA512", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), + .len = strlen(g_password)}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test9, TestSize.Level0) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SM3", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), + .len = strlen(g_password)}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2Test10, TestSize.Level0) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA224", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfBlob password = {.data = reinterpret_cast(const_cast(g_password)), + .len = strlen(g_password)}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError1, TestSize.Level1) +{ + // params iter = 0 + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = nullptr, .len = 0}; + HcfPBKDF2ParamsSpec params = { + .base.algName = const_cast(g_pbkdf2Name), + .password = {.data = nullptr, .len = 0}, + .salt = salt, + .iterations = 0, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError2, TestSize.Level1) +{ + // params algName is error + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = nullptr, .len = 0}; + HcfBlob password = {.data = nullptr, .len = 0}; + HcfPBKDF2ParamsSpec params = { + .base.algName = const_cast(g_errorName), + .password = password, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError3, TestSize.Level1) +{ + // params algName is nullptr + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; + HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = nullptr, .len = 0}; + HcfPBKDF2ParamsSpec params = { + .base.algName = nullptr, + .password = {.data = nullptr, .len = 0}, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError4, TestSize.Level1) +{ + // output len is 0 and data is nullptr + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob output = {.data = nullptr, .len = 0}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = {.data = nullptr, .len = 0}, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError5, TestSize.Level1) +{ + // output data is nullptr + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + HcfBlob output = {.data = nullptr, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = {.data = nullptr, .len = 0}, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError6, TestSize.Level1) +{ + // output len is 0 + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; + uint8_t out[OUT_PUT_MAX_LENGTH] = {1, 1}; + HcfBlob output = {.data = out, .len = 0}; + HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; + HcfPBKDF2ParamsSpec params = { + .base.algName = g_pbkdf2Name, + .password = {.data = nullptr, .len = 0}, + .salt = salt, + .iterations = 10000, + .output = output, + }; + ret = generator->generateSecret(generator, &(params.base)); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError7, TestSize.Level1) +{ + // use basic params + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + HcfKdfParamsSpec params = { + .algName = g_pbkdf2Name, + }; + ret = generator->generateSecret(generator, ¶ms); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError8, TestSize.Level1) +{ + // use nullptr params + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|SHA256", &generator); + EXPECT_EQ(ret, HCF_SUCCESS); + ret = generator->generateSecret(generator, nullptr); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError9, TestSize.Level1) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("PBKDF2|abcd", &generator); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError10, TestSize.Level1) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate("ABCD|SM3", &generator); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError11, TestSize.Level1) +{ + HcfKdf *generator = nullptr; + HcfResult ret = HcfKdfCreate(nullptr, &generator); + EXPECT_NE(ret, HCF_SUCCESS); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoPbkdf2Test, CryptoPbkdf2TestError12, TestSize.Level1) +{ + HcfResult ret = HcfKdfCreate(nullptr, nullptr); + EXPECT_NE(ret, HCF_SUCCESS); +} +} diff --git a/test/unittest/src/crypto_rsa1024_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_rsa1024_asy_key_generator_by_spec_test.cpp new file mode 100644 index 0000000..8812e4a --- /dev/null +++ b/test/unittest/src/crypto_rsa1024_asy_key_generator_by_spec_test.cpp @@ -0,0 +1,2075 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "asy_key_generator_spi.h" +#include "blob.h" +#include "detailed_rsa_key_params.h" +#include "memory.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "rsa_common_param_spec.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoRsa1024AsyKeyGeneratorBySpecTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoRsa1024AsyKeyGeneratorBySpecTest::SetUpTestCase() {} + +void CryptoRsa1024AsyKeyGeneratorBySpecTest::TearDownTestCase() {} + +void CryptoRsa1024AsyKeyGeneratorBySpecTest::SetUp() {} + +void CryptoRsa1024AsyKeyGeneratorBySpecTest::TearDown() {} + +// ============================= RSA 1024 testcase begin ============================= +// basic generator create test +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest271, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest272, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest273, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +// test generator by spec genrate key funciton not null +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest274, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfObjDestroy(generator); +} + +// test generator by spec get class string test +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest275, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecClass = generator->base.getClass(); + EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); + HcfObjDestroy(generator); +} + +// test generator by spec get getAlgName string test +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest276, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecAlgName = generator->getAlgName(generator); + EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); + HcfObjDestroy(generator); +} + +// test generator by spec basic destroy +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest277, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + generator->base.destroy(&(generator->base)); +} +// test correct spec and generate key pair, pri key, and pub key. +// pub spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest278, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest279, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest280, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// key pair spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest281, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest282, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest283, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check normal key function from key pairs of key pair spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest284, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *keyPairClassName = keyPair->base.getClass(); + EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest285, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->base.destroy(&(keyPair->base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest286, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkClassName = keyPair->pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest287, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); + keyPair->pubKey = nullptr; + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest288, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest289, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest290, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest291, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest292, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_1024_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest293, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *skClassName = keyPair->priKey->base.base.getClass(); + EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest294, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); + keyPair->priKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest295, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest296, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest297, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest298, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest299, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + + HcfFree(d.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check key functions of pub key from key pair spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest300, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest301, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest302, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest303, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest304, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest305, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest306, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_1024_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check key function of pri key generated by key pair spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest307, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkClassName = priKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest308, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + priKey->base.base.destroy(&(priKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest309, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *alg = priKey->base.getAlgorithm(&(priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest310, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest311, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkFormat = priKey->base.getFormat(&(priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest312, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest313, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + res = memcmp(d.data, dataD, RSA_1024_D_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(d.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check key functions of pub key from pub key spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest314, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest315, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest316, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest317, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest318, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest319, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest320, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_1024_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check encoded key pair's pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest321, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest322, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pub key spec and convert to pub key object +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest323, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest324, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_1024_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest325, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest326, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_1024_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest327, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pubKey spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest328, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_1024_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest329, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check invalid get key functions of key pair's pub key from key pair spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest330, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest331, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of key pair's pri key from key pair spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest332, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); + + keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest333, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); + + keyPair->priKey->clearMem(keyPair->priKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pub key from key pair spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest334, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest335, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pri key from key pair spec +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest336, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest337, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecString, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 1024 generate keyPair get all big int +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest338, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + // generator key type from generator's spec + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + HcfPriKey *priKey = keyPair->priKey; + HcfPubKey *pubKey = keyPair->pubKey; + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + HcfBigInteger returnD = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + // check the array data + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnPriN.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnD.data, dataD, RSA_1024_D_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_1024_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + + HcfFree(returnPubN.data); + HcfFree(returnPriN.data); + HcfFree(returnD.data); + HcfFree(returnE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 1024 generate pub key get +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest339, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_1024_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_1024_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + HcfFree(returnPubN.data); + HcfFree(returnE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate incorrect case: RSA 1024 generate common key spec (not support) +HWTEST_F(CryptoRsa1024AsyKeyGeneratorBySpecTest, CryptoRsa1024AsyKeyGeneratorBySpecTest340, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + + unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; + GenerateRsa1024CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + HcfObjDestroy(generator); +} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_rsa2048_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_rsa2048_asy_key_generator_by_spec_test.cpp new file mode 100644 index 0000000..780b37e --- /dev/null +++ b/test/unittest/src/crypto_rsa2048_asy_key_generator_by_spec_test.cpp @@ -0,0 +1,2074 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "asy_key_generator_spi.h" +#include "blob.h" +#include "detailed_rsa_key_params.h" +#include "memory.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "rsa_common_param_spec.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoRsa2048AsyKeyGeneratorBySpecTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoRsa2048AsyKeyGeneratorBySpecTest::SetUpTestCase() {} + +void CryptoRsa2048AsyKeyGeneratorBySpecTest::TearDownTestCase() {} + +void CryptoRsa2048AsyKeyGeneratorBySpecTest::SetUp() {} + +void CryptoRsa2048AsyKeyGeneratorBySpecTest::TearDown() {} + +// basic generator create test +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest001, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest003, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest004, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +// test generator by spec genrate key funciton not null +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest005, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfObjDestroy(generator); +} + +// test generator by spec get class string test +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest006, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecClass = generator->base.getClass(); + EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); + HcfObjDestroy(generator); +} + +// test generator by spec get getAlgName string test +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest007, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecAlgName = generator->getAlgName(generator); + EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); + HcfObjDestroy(generator); +} + +// test generator by spec basic destroy +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest008, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + generator->base.destroy(&(generator->base)); +} +// test correct spec and generate key pair, pri key, and pub key. +// pub spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest012, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest013, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest014, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// key pair spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest018, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest019, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest020, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check normal key function from key pairs of key pair spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest021, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *keyPairClassName = keyPair->base.getClass(); + EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest022, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->base.destroy(&(keyPair->base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest023, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkClassName = keyPair->pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest024, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); + keyPair->pubKey = nullptr; + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest025, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest026, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest027, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest028, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest029, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_2048_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest030, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *skClassName = keyPair->priKey->base.base.getClass(); + EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest031, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); + keyPair->priKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest032, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest033, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest034, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest035, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest036, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + + HcfFree(d.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check key functions of pub key from key pair spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest037, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest038, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest039, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest040, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest041, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest042, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest043, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_2048_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check key function of pri key generated by key pair spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest044, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkClassName = priKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest045, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + priKey->base.base.destroy(&(priKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest046, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *alg = priKey->base.getAlgorithm(&(priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest047, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest048, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkFormat = priKey->base.getFormat(&(priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest049, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest050, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + res = memcmp(d.data, dataD, RSA_2048_D_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(d.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check key functions of pub key from pub key spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest051, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest052, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest053, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest054, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest055, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest056, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest057, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_2048_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check encoded key pair's pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest058, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest059, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pub key spec and convert to pub key object +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest060, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest061, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_2048_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest062, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest063, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_2048_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest064, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pubKey spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest065, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_2048_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest066, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check invalid get key functions of key pair's pub key from key pair spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest067, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest068, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of key pair's pri key from key pair spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest069, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); + + keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest070, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); + + keyPair->priKey->clearMem(keyPair->priKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pub key from key pair spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest071, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest072, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pri key from key pair spec +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest073, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest074, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecString, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 2048 generate keyPair get all big int +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest100, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + // generator key type from generator's spec + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + HcfPriKey *priKey = keyPair->priKey; + HcfPubKey *pubKey = keyPair->pubKey; + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + HcfBigInteger returnD = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + // check the array data + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnPriN.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnD.data, dataD, RSA_2048_D_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_2048_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + + HcfFree(returnPubN.data); + HcfFree(returnPriN.data); + HcfFree(returnD.data); + HcfFree(returnE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 2048 generate pub key get +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest110, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_2048_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_2048_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + HcfFree(returnPubN.data); + HcfFree(returnE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate incorrect case: RSA 2048 generate common key spec (not support) +HWTEST_F(CryptoRsa2048AsyKeyGeneratorBySpecTest, CryptoRsa2048AsyKeyGeneratorBySpecTest130, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + HcfObjDestroy(generator); +} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_rsa3072_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_rsa3072_asy_key_generator_by_spec_test.cpp new file mode 100644 index 0000000..a52896e --- /dev/null +++ b/test/unittest/src/crypto_rsa3072_asy_key_generator_by_spec_test.cpp @@ -0,0 +1,2074 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "asy_key_generator_spi.h" +#include "blob.h" +#include "detailed_rsa_key_params.h" +#include "memory.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "rsa_common_param_spec.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoRsa3072AsyKeyGeneratorBySpecTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoRsa3072AsyKeyGeneratorBySpecTest::SetUpTestCase() {} + +void CryptoRsa3072AsyKeyGeneratorBySpecTest::TearDownTestCase() {} + +void CryptoRsa3072AsyKeyGeneratorBySpecTest::SetUp() {} + +void CryptoRsa3072AsyKeyGeneratorBySpecTest::TearDown() {} + +// basic generator create test +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest341, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest342, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest343, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +// test generator by spec genrate key funciton not null +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest344, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfObjDestroy(generator); +} + +// test generator by spec get class string test +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest345, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecClass = generator->base.getClass(); + EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); + HcfObjDestroy(generator); +} + +// test generator by spec get getAlgName string test +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest346, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecAlgName = generator->getAlgName(generator); + EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); + HcfObjDestroy(generator); +} + +// test generator by spec basic destroy +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest347, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + generator->base.destroy(&(generator->base)); +} +// test correct spec and generate key pair, pri key, and pub key. +// pub spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest348, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest349, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest350, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// key pair spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest351, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest352, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest353, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check normal key function from key pairs of key pair spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest354, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *keyPairClassName = keyPair->base.getClass(); + EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest355, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->base.destroy(&(keyPair->base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest356, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkClassName = keyPair->pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest357, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); + keyPair->pubKey = nullptr; + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest358, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest359, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest360, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest361, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest362, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_3072_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest363, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *skClassName = keyPair->priKey->base.base.getClass(); + EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest364, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); + keyPair->priKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest365, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest366, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest367, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest368, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest369, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + + HcfFree(d.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check key functions of pub key from key pair spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest370, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest371, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest372, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest373, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest374, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest375, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest376, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_3072_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check key function of pri key generated by key pair spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest377, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkClassName = priKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest378, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + priKey->base.base.destroy(&(priKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest379, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *alg = priKey->base.getAlgorithm(&(priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest380, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest381, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkFormat = priKey->base.getFormat(&(priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest382, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest383, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + res = memcmp(d.data, dataD, RSA_3072_D_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(d.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check key functions of pub key from pub key spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest384, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest385, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest386, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest387, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest388, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest389, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest390, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_3072_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check encoded key pair's pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest391, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest392, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pub key spec and convert to pub key object +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest393, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest394, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_3072_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest395, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest396, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_3072_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest397, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pubKey spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest398, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_3072_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest399, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check invalid get key functions of key pair's pub key from key pair spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest400, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest401, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of key pair's pri key from key pair spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest402, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); + + keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest403, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); + + keyPair->priKey->clearMem(keyPair->priKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pub key from key pair spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest404, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest405, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pri key from key pair spec +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest406, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest407, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecString, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 3072 generate keyPair get all big int +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest408, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + // generator key type from generator's spec + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + HcfPriKey *priKey = keyPair->priKey; + HcfPubKey *pubKey = keyPair->pubKey; + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + HcfBigInteger returnD = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + // check the array data + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnPriN.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnD.data, dataD, RSA_3072_D_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_3072_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + + HcfFree(returnPubN.data); + HcfFree(returnPriN.data); + HcfFree(returnD.data); + HcfFree(returnE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 3072 generate pub key get +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest409, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_3072_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_3072_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + HcfFree(returnPubN.data); + HcfFree(returnE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate incorrect case: RSA 3072 generate common key spec (not support) +HWTEST_F(CryptoRsa3072AsyKeyGeneratorBySpecTest, CryptoRsa3072AsyKeyGeneratorBySpecTest410, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + + unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; + GenerateRsa3072CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + HcfObjDestroy(generator); +} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_rsa4096_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_rsa4096_asy_key_generator_by_spec_test.cpp new file mode 100644 index 0000000..2923c34 --- /dev/null +++ b/test/unittest/src/crypto_rsa4096_asy_key_generator_by_spec_test.cpp @@ -0,0 +1,2074 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "asy_key_generator_spi.h" +#include "blob.h" +#include "detailed_rsa_key_params.h" +#include "memory.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "rsa_common_param_spec.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoRsa4096AsyKeyGeneratorBySpecTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoRsa4096AsyKeyGeneratorBySpecTest::SetUpTestCase() {} + +void CryptoRsa4096AsyKeyGeneratorBySpecTest::TearDownTestCase() {} + +void CryptoRsa4096AsyKeyGeneratorBySpecTest::SetUp() {} + +void CryptoRsa4096AsyKeyGeneratorBySpecTest::TearDown() {} + +// basic generator create test +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest411, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest412, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest413, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +// test generator by spec genrate key funciton not null +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest414, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfObjDestroy(generator); +} + +// test generator by spec get class string test +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest415, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecClass = generator->base.getClass(); + EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); + HcfObjDestroy(generator); +} + +// test generator by spec get getAlgName string test +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest416, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecAlgName = generator->getAlgName(generator); + EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); + HcfObjDestroy(generator); +} + +// test generator by spec basic destroy +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest417, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + generator->base.destroy(&(generator->base)); +} +// test correct spec and generate key pair, pri key, and pub key. +// pub spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest418, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest419, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest420, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// key pair spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest421, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest422, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest423, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check normal key function from key pairs of key pair spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest424, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *keyPairClassName = keyPair->base.getClass(); + EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest425, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->base.destroy(&(keyPair->base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest426, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkClassName = keyPair->pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest427, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); + keyPair->pubKey = nullptr; + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest428, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest429, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest430, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest431, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest432, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_4096_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest433, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *skClassName = keyPair->priKey->base.base.getClass(); + EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest434, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); + keyPair->priKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest435, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest436, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest437, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest438, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest439, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + + HcfFree(d.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check key functions of pub key from key pair spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest440, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest441, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest442, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest443, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest444, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest445, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest446, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_4096_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check key function of pri key generated by key pair spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest447, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkClassName = priKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest448, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + priKey->base.base.destroy(&(priKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest449, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *alg = priKey->base.getAlgorithm(&(priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest450, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest451, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkFormat = priKey->base.getFormat(&(priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest452, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest453, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + res = memcmp(d.data, dataD, RSA_4096_D_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(d.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check key functions of pub key from pub key spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest454, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest455, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest456, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest457, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest458, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest459, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest460, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_4096_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check encoded key pair's pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest461, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest462, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pub key spec and convert to pub key object +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest463, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest464, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_4096_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest465, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest466, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_4096_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest467, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pubKey spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest468, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_4096_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest469, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check invalid get key functions of key pair's pub key from key pair spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest470, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest471, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of key pair's pri key from key pair spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest472, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); + + keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest473, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); + + keyPair->priKey->clearMem(keyPair->priKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pub key from key pair spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest474, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest475, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pri key from key pair spec +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest476, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest477, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecString, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 4096 generate keyPair get all big int +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest478, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + // generator key type from generator's spec + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + HcfPriKey *priKey = keyPair->priKey; + HcfPubKey *pubKey = keyPair->pubKey; + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + HcfBigInteger returnD = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + // check the array data + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnPriN.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnD.data, dataD, RSA_4096_D_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_4096_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + + HcfFree(returnPubN.data); + HcfFree(returnPriN.data); + HcfFree(returnD.data); + HcfFree(returnE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 4096 generate pub key get +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest479, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_4096_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_4096_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + HcfFree(returnPubN.data); + HcfFree(returnE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate incorrect case: RSA 4096 generate common key spec (not support) +HWTEST_F(CryptoRsa4096AsyKeyGeneratorBySpecTest, CryptoRsa4096AsyKeyGeneratorBySpecTest480, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + + unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; + GenerateRsa4096CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + HcfObjDestroy(generator); +} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_rsa512_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_rsa512_asy_key_generator_by_spec_test.cpp new file mode 100644 index 0000000..a1da6ce --- /dev/null +++ b/test/unittest/src/crypto_rsa512_asy_key_generator_by_spec_test.cpp @@ -0,0 +1,2075 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "asy_key_generator_spi.h" +#include "blob.h" +#include "detailed_rsa_key_params.h" +#include "memory.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "rsa_common_param_spec.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoRsa512AsyKeyGeneratorBySpecTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoRsa512AsyKeyGeneratorBySpecTest::SetUpTestCase() {} + +void CryptoRsa512AsyKeyGeneratorBySpecTest::TearDownTestCase() {} + +void CryptoRsa512AsyKeyGeneratorBySpecTest::SetUp() {} + +void CryptoRsa512AsyKeyGeneratorBySpecTest::TearDown() {} + +// ============================= RSA 512 testcase begin ============================= +// basic generator create test +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest001, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + GenerateRsa512CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest002, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest003, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +// test generator by spec genrate key funciton not null +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest004, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfObjDestroy(generator); +} + +// test generator by spec get class string test +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest005, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecClass = generator->base.getClass(); + EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); + HcfObjDestroy(generator); +} + +// test generator by spec get getAlgName string test +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest006, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecAlgName = generator->getAlgName(generator); + EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); + HcfObjDestroy(generator); +} + +// test generator by spec basic destroy +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest007, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + generator->base.destroy(&(generator->base)); +} +// test correct spec and generate key pair, pri key, and pub key. +// pub spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest008, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest009, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest140, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// key pair spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest141, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest142, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest143, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check normal key function from key pairs of key pair spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest144, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *keyPairClassName = keyPair->base.getClass(); + EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest145, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->base.destroy(&(keyPair->base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest146, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkClassName = keyPair->pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest147, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); + keyPair->pubKey = nullptr; + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest148, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest149, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest150, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest151, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest152, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_512_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest153, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *skClassName = keyPair->priKey->base.base.getClass(); + EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest154, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); + keyPair->priKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest155, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest156, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest157, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest158, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest159, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + + HcfFree(d.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check key functions of pub key from key pair spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest160, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest161, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest162, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest163, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest164, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest165, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest166, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_512_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check key function of pri key generated by key pair spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest167, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkClassName = priKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest168, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + priKey->base.base.destroy(&(priKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest169, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *alg = priKey->base.getAlgorithm(&(priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest170, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest171, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkFormat = priKey->base.getFormat(&(priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest172, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest173, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + res = memcmp(d.data, dataD, RSA_512_D_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(d.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check key functions of pub key from pub key spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest174, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest175, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest176, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest177, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest178, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest179, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest180, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_512_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check encoded key pair's pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest181, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest182, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pub key spec and convert to pub key object +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest183, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest184, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_512_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest185, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest186, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_512_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest187, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pubKey spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest188, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_512_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest189, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check invalid get key functions of key pair's pub key from key pair spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest190, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest191, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of key pair's pri key from key pair spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest192, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); + + keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest193, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); + + keyPair->priKey->clearMem(keyPair->priKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pub key from key pair spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest194, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest195, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pri key from key pair spec +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest196, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest197, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecString, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 512 generate keyPair get all big int +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest198, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; + GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + // generator key type from generator's spec + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + HcfPriKey *priKey = keyPair->priKey; + HcfPubKey *pubKey = keyPair->pubKey; + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + HcfBigInteger returnD = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + // check the array data + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnPriN.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnD.data, dataD, RSA_512_D_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_512_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + + HcfFree(returnPubN.data); + HcfFree(returnPriN.data); + HcfFree(returnD.data); + HcfFree(returnE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 512 generate pub key get +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest199, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; + GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_512_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_512_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + HcfFree(returnPubN.data); + HcfFree(returnE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate incorrect case: RSA 512 generate common key spec (not support) +HWTEST_F(CryptoRsa512AsyKeyGeneratorBySpecTest, CryptoRsa512AsyKeyGeneratorBySpecTest200, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + + unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; + GenerateRsa512CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + HcfObjDestroy(generator); +} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_rsa768_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_rsa768_asy_key_generator_by_spec_test.cpp new file mode 100644 index 0000000..68fdb15 --- /dev/null +++ b/test/unittest/src/crypto_rsa768_asy_key_generator_by_spec_test.cpp @@ -0,0 +1,2074 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "asy_key_generator_spi.h" +#include "blob.h" +#include "detailed_rsa_key_params.h" +#include "memory.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "rsa_common_param_spec.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoRsa768AsyKeyGeneratorBySpecTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoRsa768AsyKeyGeneratorBySpecTest::SetUpTestCase() {} + +void CryptoRsa768AsyKeyGeneratorBySpecTest::TearDownTestCase() {} + +void CryptoRsa768AsyKeyGeneratorBySpecTest::SetUp() {} + +void CryptoRsa768AsyKeyGeneratorBySpecTest::TearDown() {} + +// basic generator create test +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest201, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + GenerateRsa768CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest202, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest203, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +// test generator by spec genrate key funciton not null +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest204, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfObjDestroy(generator); +} + +// test generator by spec get class string test +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest205, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecClass = generator->base.getClass(); + EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); + HcfObjDestroy(generator); +} + +// test generator by spec get getAlgName string test +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest206, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecAlgName = generator->getAlgName(generator); + EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); + HcfObjDestroy(generator); +} + +// test generator by spec basic destroy +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest207, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + generator->base.destroy(&(generator->base)); +} +// test correct spec and generate key pair, pri key, and pub key. +// pub spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest208, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest209, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest210, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// key pair spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest211, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest212, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest213, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check normal key function from key pairs of key pair spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest214, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *keyPairClassName = keyPair->base.getClass(); + EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest215, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->base.destroy(&(keyPair->base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest216, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkClassName = keyPair->pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest217, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); + keyPair->pubKey = nullptr; + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest218, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest219, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest220, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest221, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest222, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_768_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest223, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *skClassName = keyPair->priKey->base.base.getClass(); + EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest224, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); + keyPair->priKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest225, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest226, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest227, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest228, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest229, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + + HcfFree(d.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check key functions of pub key from key pair spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest230, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest231, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest232, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest233, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest234, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest235, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest236, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_768_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check key function of pri key generated by key pair spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest237, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkClassName = priKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest238, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + priKey->base.base.destroy(&(priKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest239, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *alg = priKey->base.getAlgorithm(&(priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest240, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest241, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkFormat = priKey->base.getFormat(&(priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest242, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest243, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + res = memcmp(d.data, dataD, RSA_768_D_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(d.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check key functions of pub key from pub key spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest244, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest245, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest246, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest247, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest248, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest249, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest250, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_768_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check encoded key pair's pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest251, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest252, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pub key spec and convert to pub key object +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest253, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest254, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_768_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest255, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest256, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_768_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest257, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pubKey spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest258, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_768_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest259, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check invalid get key functions of key pair's pub key from key pair spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest260, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest261, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of key pair's pri key from key pair spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest262, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); + + keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest263, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); + + keyPair->priKey->clearMem(keyPair->priKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pub key from key pair spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest264, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest265, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pri key from key pair spec +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest266, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest267, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecString, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 768 generate keyPair get all big int +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest268, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; + GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + // generator key type from generator's spec + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + HcfPriKey *priKey = keyPair->priKey; + HcfPubKey *pubKey = keyPair->pubKey; + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + HcfBigInteger returnD = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + // check the array data + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnPriN.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnD.data, dataD, RSA_768_D_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_768_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + + HcfFree(returnPubN.data); + HcfFree(returnPriN.data); + HcfFree(returnD.data); + HcfFree(returnE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 768 generate pub key get +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest269, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; + GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_768_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_768_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + HcfFree(returnPubN.data); + HcfFree(returnE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate incorrect case: RSA 768 generate common key spec (not support) +HWTEST_F(CryptoRsa768AsyKeyGeneratorBySpecTest, CryptoRsa768AsyKeyGeneratorBySpecTest270, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + + unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; + GenerateRsa768CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + HcfObjDestroy(generator); +} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_rsa8192_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_rsa8192_asy_key_generator_by_spec_test.cpp new file mode 100644 index 0000000..0a13e2f --- /dev/null +++ b/test/unittest/src/crypto_rsa8192_asy_key_generator_by_spec_test.cpp @@ -0,0 +1,2074 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "asy_key_generator_spi.h" +#include "blob.h" +#include "detailed_rsa_key_params.h" +#include "memory.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "rsa_common_param_spec.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoRsa8192AsyKeyGeneratorBySpecTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoRsa8192AsyKeyGeneratorBySpecTest::SetUpTestCase() {} + +void CryptoRsa8192AsyKeyGeneratorBySpecTest::TearDownTestCase() {} + +void CryptoRsa8192AsyKeyGeneratorBySpecTest::SetUp() {} + +void CryptoRsa8192AsyKeyGeneratorBySpecTest::TearDown() {} + +// basic generator create test +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest481, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest482, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest483, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +// test generator by spec genrate key funciton not null +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest484, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfObjDestroy(generator); +} + +// test generator by spec get class string test +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest485, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecClass = generator->base.getClass(); + EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); + HcfObjDestroy(generator); +} + +// test generator by spec get getAlgName string test +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest486, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + const char *generatorBySpecAlgName = generator->getAlgName(generator); + EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); + HcfObjDestroy(generator); +} + +// test generator by spec basic destroy +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest487, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + generator->base.destroy(&(generator->base)); +} +// test correct spec and generate key pair, pri key, and pub key. +// pub spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest488, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest489, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest490, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_INVALID_PARAMS); + EXPECT_EQ(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// key pair spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest491, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest492, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest493, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check normal key function from key pairs of key pair spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest494, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *keyPairClassName = keyPair->base.getClass(); + EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest495, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->base.destroy(&(keyPair->base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest496, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkClassName = keyPair->pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest497, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); + keyPair->pubKey = nullptr; + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest498, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest499, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest500, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest501, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest502, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_8192_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest503, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *skClassName = keyPair->priKey->base.base.getClass(); + EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest504, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); + keyPair->priKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest505, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest506, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest507, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest508, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + + HcfFree(n.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest509, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + + HcfFree(d.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check key functions of pub key from key pair spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest510, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest511, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest512, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest513, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest514, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest515, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest516, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_8192_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check key function of pri key generated by key pair spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest517, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkClassName = priKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest518, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + priKey->base.base.destroy(&(priKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest519, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *alg = priKey->base.getAlgorithm(&(priKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest520, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + EXPECT_EQ(res, HCF_NOT_SUPPORT); + EXPECT_EQ(blob.data, nullptr); + EXPECT_EQ(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest521, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + const char *pkFormat = priKey->base.getFormat(&(priKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest522, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest523, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + HcfBigInteger d = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(d.data, nullptr); + EXPECT_NE(d.len, 0); + res = memcmp(d.data, dataD, RSA_8192_D_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(d.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// check key functions of pub key from pub key spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest524, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkClassName = pubKey->base.base.getClass(); + EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest525, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + pubKey->base.base.destroy(&(pubKey->base.base)); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest526, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); + EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest527, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest528, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); + EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest529, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger n = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(n.data, nullptr); + EXPECT_NE(n.len, 0); + res = memcmp(n.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(n.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest530, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger e = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(e.data, nullptr); + EXPECT_NE(e.len, 0); + res = memcmp(e.data, dataE, RSA_8192_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(e.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check encoded key pair's pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest531, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec and convert to pub key object +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest532, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pub key spec and convert to pub key object +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest533, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfFree(blob.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest534, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_8192_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest535, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + // encoded and convert key pair's pubKey + HcfPubKey *pubKey = keyPair->pubKey; + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from key pair spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest536, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_8192_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest537, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert key pair's pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check encoded pub key from pubKey spec, convert to pub key object and check the get function +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest538, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupE.data, nullptr); + EXPECT_NE(dupE.len, 0); + res = memcmp(dupE.data, dataE, RSA_8192_E_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupE.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest539, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + // encoded and convert pubKey + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(blob.data, nullptr); + EXPECT_NE(blob.len, 0); + + HcfAsyKeyGenerator *generatorConvert = nullptr; + res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorConvert, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_EQ(dupKeyPair->priKey, nullptr); + EXPECT_NE(dupKeyPair->pubKey, nullptr); + + HcfBigInteger dupN = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupN.data, nullptr); + EXPECT_NE(dupN.len, 0); + res = memcmp(dupN.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(res, 0); + + HcfFree(blob.data); + HcfFree(dupN.data); + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + HcfObjDestroy(generatorConvert); +} + +// check invalid get key functions of key pair's pub key from key pair spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest540, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest541, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of key pair's pri key from key pair spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest542, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); + + keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest543, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); + + keyPair->priKey->clearMem(keyPair->priKey); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pub key from key pair spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest544, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest545, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// check invalid get key functions of pri key from key pair spec +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest546, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest547, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(priKey, nullptr); + + EXPECT_NE(priKey->getAsyKeySpecString, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 8192 generate keyPair get all big int +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest548, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + // generator key type from generator's spec + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + HcfPriKey *priKey = keyPair->priKey; + HcfPubKey *pubKey = keyPair->pubKey; + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + HcfBigInteger returnD = { .data = nullptr, .len = 0 }; + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + // check the array data + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnPriN.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnD.data, dataD, RSA_8192_D_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_8192_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + + HcfFree(returnPubN.data); + HcfFree(returnPriN.data); + HcfFree(returnD.data); + HcfFree(returnE.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate correct case: RSA 8192 generate pub key get +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest549, TestSize.Level0) +{ + HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(pubKey, nullptr); + + HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; + HcfBigInteger returnE = { .data = nullptr, .len = 0 }; + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); + EXPECT_EQ(res, HCF_SUCCESS); + + int memRes = 0; + memRes = memcmp(returnPubN.data, dataN, RSA_8192_N_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + memRes = memcmp(returnE.data, dataE, RSA_8192_E_BYTE_SIZE); + EXPECT_EQ(memRes, 0); + HcfFree(returnPubN.data); + HcfFree(returnE.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// HcfAsyKeyGeneratorCreate incorrect case: RSA 8192 generate common key spec (not support) +HWTEST_F(CryptoRsa8192AsyKeyGeneratorBySpecTest, CryptoRsa8192AsyKeyGeneratorBySpecTest550, TestSize.Level0) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + + unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; + GenerateRsa8192CorrectCommonKeySpec(dataN, &rsaCommSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(generator, nullptr); + HcfObjDestroy(generator); +} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_rsa_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_rsa_asy_key_generator_by_spec_test.cpp deleted file mode 100644 index 9b69ea7..0000000 --- a/test/unittest/src/crypto_rsa_asy_key_generator_by_spec_test.cpp +++ /dev/null @@ -1,15029 +0,0 @@ -/* - * Copyright (C) 2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include "securec.h" - -#include "asy_key_generator.h" -#include "asy_key_generator_spi.h" -#include "blob.h" -#include "detailed_rsa_key_params.h" -#include "memory.h" -#include "openssl_class.h" -#include "openssl_common.h" - -using namespace std; -using namespace testing::ext; - -namespace { -class CryptoRsaAsyKeyGeneratorBySpecTest : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); - void SetUp(); - void TearDown(); -}; - -void CryptoRsaAsyKeyGeneratorBySpecTest::SetUpTestCase() {} - -void CryptoRsaAsyKeyGeneratorBySpecTest::TearDownTestCase() {} - -void CryptoRsaAsyKeyGeneratorBySpecTest::SetUp() {} - -void CryptoRsaAsyKeyGeneratorBySpecTest::TearDown() {} - -namespace { -constexpr uint32_t RSA_512_N_BYTE_SIZE = 64; -constexpr uint32_t RSA_512_D_BYTE_SIZE = 64; -constexpr uint32_t RSA_512_E_BYTE_SIZE = 3; - -constexpr uint32_t RSA_768_N_BYTE_SIZE = 96; -constexpr uint32_t RSA_768_D_BYTE_SIZE = 96; -constexpr uint32_t RSA_768_E_BYTE_SIZE = 3; - -constexpr uint32_t RSA_1024_N_BYTE_SIZE = 128; -constexpr uint32_t RSA_1024_D_BYTE_SIZE = 128; -constexpr uint32_t RSA_1024_E_BYTE_SIZE = 3; - -constexpr uint32_t RSA_2048_N_BYTE_SIZE = 256; -constexpr uint32_t RSA_2048_D_BYTE_SIZE = 256; -constexpr uint32_t RSA_2048_E_BYTE_SIZE = 3; - -constexpr uint32_t RSA_3072_N_BYTE_SIZE = 384; -constexpr uint32_t RSA_3072_D_BYTE_SIZE = 384; -constexpr uint32_t RSA_3072_E_BYTE_SIZE = 3; - -constexpr uint32_t RSA_4096_N_BYTE_SIZE = 512; -constexpr uint32_t RSA_4096_D_BYTE_SIZE = 512; -constexpr uint32_t RSA_4096_E_BYTE_SIZE = 3; - -constexpr uint32_t RSA_8192_N_BYTE_SIZE = 1024; -constexpr uint32_t RSA_8192_D_BYTE_SIZE = 1024; -constexpr uint32_t RSA_8192_E_BYTE_SIZE = 3; - -constexpr unsigned char CORRECT_512_N[] = { - 0x9f, 0x25, 0x5d, 0x8b, 0xf9, 0xe1, 0x5c, 0xa8, 0x6f, 0xa3, 0xf1, 0x62, 0x0c, 0x4b, - 0x78, 0xc4, 0x44, 0x66, 0xe6, 0xe1, 0xe1, 0xf7, 0x29, 0x9c, 0x0f, 0xd7, 0xd1, 0x40, - 0x57, 0x46, 0x15, 0x1a, 0x1b, 0x93, 0xea, 0xf2, 0x8d, 0x13, 0xb6, 0x22, 0x3e, 0xc6, - 0x98, 0x2e, 0xf5, 0x47, 0xd2, 0x83, 0x97, 0x6a, 0x2e, 0x60, 0x43, 0xb2, 0xfe, 0x8b, - 0x7e, 0xf7, 0x36, 0x32, 0xce, 0x27, 0x49, 0xb5 -}; - -constexpr unsigned char CORRECT_512_D[] = { - 0x73, 0xf2, 0xc1, 0x49, 0x2e, 0x71, 0x67, 0x14, 0xc0, 0xe1, 0xed, 0x07, 0xc6, 0x75, 0x66, - 0x33, 0x78, 0xb2, 0x90, 0x1c, 0x9a, 0x89, 0x7d, 0x23, 0x5a, 0xd7, 0x9e, 0x79, 0x06, 0x1c, - 0xe5, 0x59, 0xcd, 0xf7, 0xf4, 0x16, 0xf0, 0xc2, 0xd8, 0xb3, 0x3e, 0x3e, 0x14, 0xd3, 0x6e, - 0xc6, 0x8a, 0x6a, 0x22, 0xb4, 0x84, 0x01, 0x66, 0xf2, 0x61, 0x49, 0xe6, 0x43, 0x9f, 0x8c, - 0x54, 0x0d, 0xdc, 0x01 -}; - -constexpr unsigned char CORRECT_768_N[] = { - 0xa0, 0x65, 0x4e, 0x6c, 0x75, 0x3b, 0x3b, 0x50, 0x13, 0xbe, 0xf5, 0xc4, 0x1d, 0x22, 0xca, - 0x4f, 0x39, 0xb0, 0xa0, 0xf4, 0xf2, 0x78, 0x12, 0xea, 0x2e, 0x03, 0x2b, 0xec, 0x84, 0x05, - 0xcc, 0xa9, 0x3e, 0xc3, 0x77, 0xf7, 0x26, 0x14, 0x75, 0x3e, 0xda, 0x87, 0x7e, 0xb4, 0xf4, - 0x51, 0xbd, 0x08, 0x10, 0x71, 0x61, 0xf6, 0xc2, 0x34, 0xd1, 0xb3, 0xa6, 0x0d, 0xe7, 0x52, - 0x82, 0xb9, 0xb1, 0x85, 0x0f, 0xad, 0x09, 0x1c, 0x37, 0x25, 0xb4, 0x70, 0x75, 0xfa, 0xb8, - 0x17, 0xe9, 0x97, 0x99, 0x1b, 0xa6, 0xb4, 0x03, 0x0e, 0x54, 0x4d, 0x0d, 0x41, 0xfd, 0xbe, - 0x96, 0xe2, 0xb8, 0xa4, 0xb1, 0x8b -}; - -constexpr unsigned char CORRECT_768_D[] = { - 0x47, 0x26, 0xa9, 0x73, 0x53, 0x4d, 0xc3, 0x31, 0xf2, 0x90, 0x73, 0x55, 0x5b, 0xd7, 0x63, - 0x07, 0x62, 0x00, 0x08, 0x66, 0xa0, 0x68, 0xc3, 0x7b, 0x3e, 0x8e, 0x09, 0x9e, 0x11, 0xb2, - 0xc0, 0xe7, 0x13, 0x00, 0x82, 0xe7, 0x0f, 0xed, 0x63, 0x55, 0x4e, 0x7b, 0x6c, 0xa9, 0xb8, - 0xf7, 0xc9, 0x72, 0x66, 0x51, 0xb8, 0x72, 0x53, 0x0a, 0x77, 0xcd, 0x84, 0xdc, 0xb0, 0x4b, - 0xb0, 0x07, 0x92, 0x81, 0x77, 0xaf, 0x22, 0x1a, 0x08, 0x17, 0x6b, 0xf2, 0xd3, 0xf9, 0xd3, - 0x0e, 0x62, 0x01, 0xdd, 0x1e, 0xc5, 0xa6, 0xa8, 0xb0, 0x75, 0xb1, 0x69, 0x45, 0x9c, 0xde, - 0xe3, 0xc2, 0x39, 0x09, 0x32, 0x01 -}; - -constexpr unsigned char CORRECT_1024_N[] = { - 0xce, 0x2c, 0xc7, 0xeb, 0xb4, 0xf0, 0xe8, 0x49, 0xec, 0xc8, 0xa3, 0x4f, 0x01, 0xd1, 0x43, - 0x30, 0xa8, 0xe8, 0x30, 0x1a, 0x1f, 0x2f, 0xe8, 0x17, 0x98, 0x5b, 0x30, 0x15, 0x98, 0x1b, - 0xc1, 0x84, 0xde, 0x10, 0x36, 0xaf, 0x90, 0x8d, 0x34, 0x98, 0x5c, 0x15, 0x0c, 0x2e, 0xe9, - 0x07, 0x35, 0x5b, 0x29, 0x12, 0x6d, 0xdf, 0xc7, 0x5b, 0x3a, 0x2f, 0xae, 0x2e, 0xe4, 0x7d, - 0x14, 0xd6, 0xa9, 0x41, 0x73, 0x08, 0x17, 0xc1, 0x77, 0x87, 0x9e, 0x69, 0x47, 0xb3, 0xf8, - 0xf4, 0x1c, 0xc1, 0x13, 0x9b, 0xeb, 0x34, 0x84, 0xca, 0x28, 0x6e, 0x63, 0x4e, 0x28, 0x7a, - 0x22, 0x32, 0xef, 0xd6, 0xde, 0xe5, 0x46, 0x6e, 0xbe, 0x8d, 0x31, 0x56, 0x45, 0x24, 0xc9, - 0x99, 0xb9, 0xad, 0x45, 0xdd, 0x22, 0x49, 0xd3, 0xde, 0xf7, 0x1f, 0x38, 0x44, 0x42, 0x7e, - 0xff, 0xdc, 0xd3, 0x6f, 0x93, 0xbb, 0x1c, 0x3d -}; -constexpr unsigned char CORRECT_1024_D[] = { - 0x27, 0x52, 0xfb, 0x3e, 0xc5, 0xe0, 0x3d, 0x2d, 0xfc, 0x6f, 0xb8, 0x56, 0x55, 0x6e, 0x68, - 0x76, 0x5b, 0x81, 0x0d, 0xcb, 0xad, 0xaf, 0x21, 0x81, 0x7e, 0x99, 0xc5, 0xee, 0x18, 0x79, - 0x12, 0xcc, 0x18, 0xde, 0xd6, 0xcf, 0x5d, 0xae, 0xd1, 0x1d, 0x4e, 0x52, 0xe5, 0x63, 0xfd, - 0x26, 0x56, 0xd2, 0xf0, 0x5e, 0x87, 0x7e, 0x6b, 0x33, 0xc7, 0x41, 0x58, 0xe3, 0xb0, 0xc8, - 0xfa, 0xb4, 0x86, 0xcb, 0x90, 0xd5, 0x85, 0xb9, 0xa0, 0x35, 0x32, 0xb9, 0xe2, 0xf5, 0x3c, - 0x46, 0xe5, 0xb2, 0xd8, 0x5e, 0x27, 0x2e, 0x80, 0x8b, 0xfc, 0x6a, 0xd5, 0x88, 0xe1, 0xcb, - 0x02, 0xf7, 0xde, 0x6b, 0x26, 0x5b, 0x63, 0xd4, 0xfd, 0x26, 0x23, 0x4f, 0x28, 0x71, 0xc0, - 0xc0, 0x56, 0x80, 0x38, 0xcc, 0xbe, 0x7e, 0xe4, 0x76, 0xd2, 0x2d, 0x31, 0x1a, 0xeb, 0xa4, - 0x6d, 0x45, 0x64, 0x34, 0xbe, 0xd2, 0x3b, 0x01 -}; - -constexpr unsigned char CORRECT_2048_N[] = - "\x92\x60\xd0\x75\x0a\xe1\x17\xee\xe5\x5c\x3f\x3d\xea\xba\x74\x91" - "\x75\x21\xa2\x62\xee\x76\x00\x7c\xdf\x8a\x56\x75\x5a\xd7\x3a\x15" - "\x98\xa1\x40\x84\x10\xa0\x14\x34\xc3\xf5\xbc\x54\xa8\x8b\x57\xfa" - "\x19\xfc\x43\x28\xda\xea\x07\x50\xa4\xc4\x4e\x88\xcf\xf3\xb2\x38" - "\x26\x21\xb8\x0f\x67\x04\x64\x43\x3e\x43\x36\xe6\xd0\x03\xe8\xcd" - "\x65\xbf\xf2\x11\xda\x14\x4b\x88\x29\x1c\x22\x59\xa0\x0a\x72\xb7" - "\x11\xc1\x16\xef\x76\x86\xe8\xfe\xe3\x4e\x4d\x93\x3c\x86\x81\x87" - "\xbd\xc2\x6f\x7b\xe0\x71\x49\x3c\x86\xf7\xa5\x94\x1c\x35\x10\x80" - "\x6a\xd6\x7b\x0f\x94\xd8\x8f\x5c\xf5\xc0\x2a\x09\x28\x21\xd8\x62" - "\x6e\x89\x32\xb6\x5c\x5b\xd8\xc9\x20\x49\xc2\x10\x93\x2b\x7a\xfa" - "\x7a\xc5\x9c\x0e\x88\x6a\xe5\xc1\xed\xb0\x0d\x8c\xe2\xc5\x76\x33" - "\xdb\x26\xbd\x66\x39\xbf\xf7\x3c\xee\x82\xbe\x92\x75\xc4\x02\xb4" - "\xcf\x2a\x43\x88\xda\x8c\xf8\xc6\x4e\xef\xe1\xc5\xa0\xf5\xab\x80" - "\x57\xc3\x9f\xa5\xc0\x58\x9c\x3e\x25\x3f\x09\x60\x33\x23\x00\xf9" - "\x4b\xea\x44\x87\x7b\x58\x8e\x1e\xdb\xde\x97\xcf\x23\x60\x72\x7a" - "\x09\xb7\x75\x26\x2d\x7e\xe5\x52\xb3\x31\x9b\x92\x66\xf0\x5a\x25"; - -constexpr unsigned char CORRECT_E[] = "\x01\x00\x01"; - -constexpr unsigned char CORRECT_2048_D[] = - "\x6a\x7d\xf2\xca\x63\xea\xd4\xdd\xa1\x91\xd6\x14\xb6\xb3\x85\xe0" - "\xd9\x05\x6a\x3d\x6d\x5c\xfe\x07\xdb\x1d\xaa\xbe\xe0\x22\xdb\x08" - "\x21\x2d\x97\x61\x3d\x33\x28\xe0\x26\x7c\x9d\xd2\x3d\x78\x7a\xbd" - "\xe2\xaf\xcb\x30\x6a\xeb\x7d\xfc\xe6\x92\x46\xcc\x73\xf5\xc8\x7f" - "\xdf\x06\x03\x01\x79\xa2\x11\x4b\x76\x7d\xb1\xf0\x83\xff\x84\x1c" - "\x02\x5d\x7d\xc0\x0c\xd8\x24\x35\xb9\xa9\x0f\x69\x53\x69\xe9\x4d" - "\xf2\x3d\x2c\xe4\x58\xbc\x3b\x32\x83\xad\x8b\xba\x2b\x8f\xa1\xba" - "\x62\xe2\xdc\xe9\xac\xcf\xf3\x79\x9a\xae\x7c\x84\x00\x16\xf3\xba" - "\x8e\x00\x48\xc0\xb6\xcc\x43\x39\xaf\x71\x61\x00\x3a\x5b\xeb\x86" - "\x4a\x01\x64\xb2\xc1\xc9\x23\x7b\x64\xbc\x87\x55\x69\x94\x35\x1b" - "\x27\x50\x6c\x33\xd4\xbc\xdf\xce\x0f\x9c\x49\x1a\x7d\x6b\x06\x28" - "\xc7\xc8\x52\xbe\x4f\x0a\x9c\x31\x32\xb2\xed\x3a\x2c\x88\x81\xe9" - "\xaa\xb0\x7e\x20\xe1\x7d\xeb\x07\x46\x91\xbe\x67\x77\x76\xa7\x8b" - "\x5c\x50\x2e\x05\xd9\xbd\xde\x72\x12\x6b\x37\x38\x69\x5e\x2d\xd1" - "\xa0\xa9\x8a\x14\x24\x7c\x65\xd8\xa7\xee\x79\x43\x2a\x09\x2c\xb0" - "\x72\x1a\x12\xdf\x79\x8e\x44\xf7\xcf\xce\x0c\x49\x81\x47\xa9\xb1"; - -constexpr unsigned char CORRECT_3072_N[] = { - 0xf9, 0xb0, 0xc2, 0x4b, 0xe4, 0x8f, 0x50, 0x2c, 0xb9, 0xb3, 0xa5, 0x14, 0x4b, 0xeb, 0x21, - 0xa4, 0xa0, 0x2a, 0xc2, 0x0a, 0x89, 0xcb, 0x58, 0x40, 0xf3, 0x94, 0x1b, 0x6d, 0xc6, 0x38, - 0xd3, 0x87, 0x58, 0x8f, 0x52, 0x8e, 0x47, 0x32, 0xf3, 0xa5, 0x5a, 0xcd, 0x75, 0x43, 0xce, - 0x74, 0x7e, 0x9f, 0x41, 0xad, 0xad, 0x24, 0xe0, 0x0d, 0xb3, 0xaa, 0xe7, 0x58, 0xe1, 0xa3, - 0x5f, 0x38, 0xbc, 0x1c, 0xa8, 0xe5, 0xba, 0x1f, 0xb4, 0x05, 0x7f, 0xa8, 0xc4, 0x40, 0x95, - 0x20, 0xd4, 0xbf, 0x8f, 0x03, 0xac, 0x0f, 0x7f, 0x7a, 0x8a, 0xba, 0x13, 0x11, 0x76, 0x49, - 0x48, 0xc8, 0x67, 0x24, 0xda, 0x3e, 0xeb, 0x29, 0x24, 0xb2, 0x6d, 0x61, 0xa0, 0x5f, 0x7e, - 0xe1, 0x5b, 0x87, 0xca, 0xc8, 0x5b, 0x06, 0xed, 0x7d, 0xb2, 0x6e, 0xd4, 0x17, 0xde, 0x24, - 0xcb, 0x65, 0xbc, 0x8d, 0xe4, 0x5d, 0x00, 0x73, 0x21, 0xc0, 0x05, 0x3a, 0x00, 0xe3, 0xa6, - 0x92, 0x17, 0x25, 0x47, 0x49, 0xbe, 0x56, 0x08, 0x74, 0x23, 0x3a, 0x18, 0x1f, 0xd7, 0x8e, - 0xa7, 0xc5, 0xec, 0x7c, 0x05, 0x75, 0xd0, 0x83, 0x7a, 0xc4, 0xd7, 0x8a, 0x7f, 0xbf, 0xc6, - 0xe9, 0x43, 0x29, 0xe9, 0x67, 0xe5, 0x04, 0x48, 0xe1, 0x81, 0x53, 0x54, 0xbb, 0x8e, 0xa1, - 0x3a, 0x95, 0xd1, 0x6b, 0x93, 0xb4, 0xb2, 0xc3, 0x6e, 0x28, 0x05, 0x45, 0xdf, 0x6e, 0xe8, - 0x74, 0x49, 0x01, 0xb3, 0x26, 0xef, 0xa1, 0x78, 0xba, 0x4d, 0x11, 0xf1, 0x42, 0xfd, 0x91, - 0x0d, 0x0f, 0x23, 0xfa, 0x0f, 0x9d, 0xe9, 0xa5, 0x57, 0xdc, 0xd1, 0x7e, 0xce, 0x83, 0x42, - 0xa4, 0x7f, 0xa6, 0x96, 0xe1, 0x66, 0xc3, 0xa6, 0x65, 0x7a, 0xa3, 0xa8, 0x7a, 0x6d, 0x3d, - 0xf4, 0x97, 0x84, 0xae, 0x96, 0xce, 0x2d, 0x45, 0x69, 0xe0, 0x13, 0xbd, 0xd9, 0xec, 0x23, - 0x2a, 0xad, 0xa0, 0x8c, 0xfc, 0xd3, 0x08, 0xc9, 0x27, 0x28, 0xca, 0xd5, 0x4d, 0x29, 0x3e, - 0x4c, 0xf9, 0x49, 0xd3, 0x09, 0xce, 0xe7, 0x9f, 0xda, 0x83, 0xe6, 0x7e, 0xe4, 0x34, 0xf9, - 0x52, 0xc1, 0x63, 0x6b, 0xd5, 0x53, 0x7b, 0x99, 0x8c, 0x1b, 0xb5, 0x65, 0xca, 0x4b, 0x0d, - 0xd3, 0xd4, 0x74, 0x6e, 0x8f, 0x25, 0x99, 0x68, 0x9d, 0x00, 0x89, 0x8c, 0x09, 0x30, 0x8f, - 0x22, 0x13, 0x77, 0x5d, 0xf8, 0xb2, 0xc1, 0x0f, 0x01, 0x17, 0x91, 0x0c, 0x1b, 0x8b, 0xa2, - 0xe5, 0x24, 0xd6, 0xef, 0x34, 0xc8, 0x21, 0xc8, 0x32, 0x1d, 0x89, 0x48, 0x73, 0x43, 0x25, - 0x70, 0xdc, 0x08, 0x2d, 0x49, 0x8a, 0x9d, 0x73, 0xe4, 0xd8, 0x56, 0x86, 0xc4, 0x0d, 0x85, - 0x65, 0x88, 0x57, 0x3f, 0xe0, 0x83, 0x0a, 0x9c, 0x51, 0x35, 0x82, 0xf2, 0x89, 0x48, 0x4e, - 0x8e, 0x70, 0x7f, 0xd5, 0xa8, 0x04, 0xae, 0xe3, 0x87 -}; -constexpr unsigned char CORRECT_3072_D[] = { - 0x2f, 0xba, 0x10, 0xb9, 0x8e, 0xfb, 0xb1, 0xd8, 0x8a, 0xba, 0x82, 0xf0, 0x69, 0x3e, 0x8d, - 0x94, 0xb9, 0x24, 0xd3, 0x28, 0x4e, 0x84, 0x76, 0xdf, 0x1b, 0x70, 0x10, 0xfa, 0x1f, 0xac, - 0x97, 0x0a, 0x44, 0xec, 0x48, 0x5c, 0x77, 0xd1, 0x8e, 0x6e, 0xe9, 0xf7, 0x61, 0xd5, 0xcf, - 0x2d, 0xc7, 0x52, 0x4b, 0xac, 0x95, 0xee, 0xf9, 0x80, 0xc4, 0xfa, 0x02, 0xf4, 0xa3, 0x54, - 0xa6, 0x0b, 0xe3, 0x31, 0x1b, 0x3b, 0xa6, 0x23, 0x0f, 0x37, 0x09, 0xda, 0xc9, 0x80, 0x8a, - 0xc0, 0xd6, 0xc9, 0xb2, 0xdd, 0x81, 0xd3, 0x08, 0x8b, 0xf4, 0xde, 0x72, 0x6c, 0xa1, 0x0e, - 0x8b, 0x01, 0xfb, 0x6d, 0x38, 0xe6, 0x53, 0xee, 0xee, 0x5b, 0xc8, 0xba, 0xa3, 0x7b, 0xfd, - 0x75, 0xb8, 0x18, 0x31, 0xb3, 0xb0, 0x6a, 0x97, 0x94, 0xb2, 0x39, 0xab, 0x02, 0xd0, 0xec, - 0x79, 0x90, 0x7d, 0xc5, 0x25, 0x84, 0x7d, 0x64, 0x84, 0x6b, 0xfe, 0xd3, 0xc2, 0x7d, 0xc1, - 0x46, 0x25, 0x74, 0x73, 0xb6, 0xed, 0xd1, 0xe6, 0x15, 0xc4, 0xf2, 0x02, 0xd0, 0x7b, 0x54, - 0x82, 0x4f, 0x3b, 0xcf, 0xcc, 0xff, 0x63, 0x16, 0xee, 0xad, 0x97, 0x81, 0x9a, 0xbf, 0x9e, - 0x96, 0xd1, 0xc6, 0xbe, 0x1d, 0xa4, 0xd1, 0xf7, 0xd8, 0x5a, 0xef, 0x01, 0xc0, 0x44, 0x18, - 0x1f, 0x69, 0xa9, 0xb9, 0x05, 0x67, 0xc1, 0xcf, 0xc7, 0x4b, 0x91, 0x0e, 0x14, 0x6a, 0x6b, - 0x92, 0xad, 0x33, 0x3d, 0xbf, 0x09, 0xbb, 0xaf, 0x36, 0xcd, 0x7d, 0xaf, 0x33, 0xcf, 0xbe, - 0x2f, 0x6e, 0x60, 0xf6, 0x51, 0xb9, 0x7b, 0x7a, 0x1d, 0x95, 0x0c, 0x39, 0xec, 0xe0, 0xbe, - 0xfe, 0x5a, 0x2c, 0x68, 0xfe, 0x06, 0x04, 0xbc, 0xdb, 0xe6, 0xfd, 0x7f, 0x19, 0xc5, 0x15, - 0xad, 0x0c, 0x82, 0x91, 0x04, 0x1c, 0xf4, 0x98, 0x40, 0xf3, 0xca, 0xcc, 0xf7, 0xf9, 0xd0, - 0xac, 0xd8, 0xee, 0x1c, 0x8f, 0x69, 0x72, 0x3a, 0xa9, 0xd1, 0xaf, 0x90, 0x00, 0x55, 0x1d, - 0x9a, 0x72, 0x9d, 0xd3, 0x3d, 0x02, 0xe9, 0x79, 0xa2, 0x95, 0x13, 0xa9, 0x6f, 0x8e, 0xaf, - 0xa3, 0x39, 0xe8, 0x3b, 0x01, 0x31, 0x51, 0xc5, 0x46, 0x77, 0xbb, 0xe5, 0x5f, 0xd6, 0x4d, - 0x19, 0x54, 0xff, 0xd2, 0x40, 0x40, 0x1e, 0x9f, 0x54, 0x69, 0x99, 0xad, 0x12, 0xfe, 0xb5, - 0xa8, 0xbb, 0x19, 0x9b, 0xcc, 0x63, 0xf7, 0x6d, 0x77, 0xa2, 0x9c, 0x55, 0x33, 0x6c, 0x08, - 0x95, 0x27, 0x5f, 0x84, 0xb5, 0x9e, 0x2d, 0xa7, 0x96, 0x46, 0x38, 0xf7, 0x29, 0x66, 0xd7, - 0x01, 0x19, 0x7c, 0xfd, 0x45, 0x87, 0x81, 0xb0, 0xdd, 0xcd, 0x04, 0x73, 0x6a, 0x79, 0xbc, - 0x77, 0xd7, 0x1d, 0x29, 0x9b, 0xd4, 0x66, 0xec, 0x6d, 0x4f, 0x84, 0xb9, 0xad, 0xcd, 0x6d, - 0x40, 0x2f, 0xf5, 0x75, 0x1d, 0x3a, 0xbf, 0x01, 0xa9 -}; - - -constexpr unsigned char CORRECT_4096_N[] = { - 0xc4, 0x68, 0xa2, 0x94, 0x23, 0xd8, 0xf4, 0x02, 0xf2, 0x0a, 0x0c, 0x50, 0xc8, 0xc2, 0xd5, 0xe5, - 0x57, 0xfe, 0xf7, 0x3a, 0x51, 0x4e, 0xad, 0x2c, 0x91, 0x58, 0x58, 0x0d, 0xdb, 0x4d, 0x0c, 0x58, - 0x92, 0x42, 0x07, 0x60, 0x1a, 0xb1, 0x07, 0x97, 0xb9, 0x63, 0xeb, 0x51, 0xef, 0x75, 0x69, 0xe5, - 0x9a, 0xc7, 0xef, 0xee, 0x20, 0x2f, 0xf2, 0x39, 0x61, 0x7b, 0x0e, 0x6b, 0xf6, 0x07, 0x30, 0xbf, - 0x30, 0xb4, 0x88, 0x64, 0xf0, 0xde, 0xcc, 0x47, 0xd5, 0xad, 0x7d, 0xfb, 0x81, 0x4d, 0x81, 0xde, - 0xa7, 0x0b, 0xb1, 0xff, 0xfd, 0x40, 0xca, 0xf8, 0xed, 0xfb, 0x62, 0x2d, 0x83, 0xa8, 0xcc, 0xdc, - 0x7a, 0x96, 0xea, 0x75, 0x39, 0x8f, 0xc5, 0x50, 0x86, 0x51, 0x04, 0x7d, 0x13, 0x94, 0x17, 0xed, - 0x1a, 0x90, 0xd8, 0x0f, 0xa3, 0xd7, 0x96, 0x87, 0x49, 0xa8, 0x6c, 0x51, 0x25, 0x2c, 0x0c, 0xf4, - 0x50, 0x5d, 0xfe, 0xf9, 0x4c, 0x94, 0x83, 0x40, 0xf5, 0x46, 0xa9, 0xcd, 0x42, 0x61, 0x89, 0x8c, - 0x52, 0x6f, 0xdc, 0x72, 0x5f, 0xfb, 0x11, 0x87, 0x37, 0x00, 0xb1, 0x46, 0x12, 0x93, 0xb9, 0x60, - 0x94, 0x00, 0x7c, 0x81, 0xc1, 0x48, 0xd7, 0xd3, 0x51, 0xe9, 0x3a, 0x0f, 0x59, 0xad, 0xd3, 0x9f, - 0x7c, 0x8d, 0x22, 0x61, 0x45, 0xeb, 0x5e, 0x1f, 0x7c, 0xa0, 0x15, 0xb9, 0x8e, 0x4e, 0xe3, 0xca, - 0xc5, 0x2c, 0x0d, 0x1e, 0x20, 0x76, 0x12, 0xa6, 0x9d, 0xf4, 0x95, 0x6b, 0xa2, 0x9b, 0x92, 0xf3, - 0xc9, 0x28, 0x2e, 0x97, 0x81, 0xac, 0xd6, 0x2f, 0x98, 0x43, 0xa7, 0xf5, 0x80, 0x8f, 0xc7, 0xfd, - 0x9c, 0x04, 0xad, 0x5e, 0xcd, 0x61, 0x9d, 0xd0, 0xde, 0xfd, 0x45, 0x42, 0x7e, 0xcf, 0x7e, 0xaf, - 0xf8, 0x9c, 0xe5, 0xc8, 0xb2, 0x67, 0xfe, 0x68, 0x2d, 0xed, 0xbb, 0x55, 0xdf, 0xba, 0xb2, 0xdf, - 0x57, 0x73, 0xa6, 0xa4, 0x02, 0x80, 0x33, 0xaf, 0x45, 0xb3, 0x72, 0x2a, 0xca, 0xd0, 0xc2, 0x37, - 0xbe, 0x11, 0xd8, 0x8e, 0xd7, 0xaa, 0x1f, 0xca, 0xd6, 0x3d, 0xc4, 0x14, 0x27, 0x17, 0x23, 0xda, - 0xec, 0x29, 0x8a, 0x98, 0x91, 0xf9, 0x8e, 0xdd, 0x5b, 0x69, 0xf2, 0x0a, 0x35, 0xe3, 0x4d, 0x5a, - 0x35, 0x7d, 0xe5, 0x67, 0xd2, 0x4d, 0x0b, 0xf4, 0x01, 0x28, 0xe8, 0x4f, 0xbf, 0x7d, 0x8d, 0xc0, - 0x28, 0x8d, 0x6b, 0x3a, 0x2b, 0x98, 0x5d, 0x93, 0x9e, 0x52, 0x85, 0xe9, 0xee, 0xed, 0xc6, 0x1d, - 0x24, 0x36, 0x0a, 0x91, 0x6c, 0xc7, 0xfa, 0xe5, 0x32, 0x9e, 0xa4, 0x58, 0xc8, 0xa4, 0xe9, 0xc5, - 0x15, 0x66, 0x4d, 0xfa, 0x77, 0xa0, 0x04, 0xab, 0xc5, 0xe5, 0x3b, 0xe5, 0x58, 0x1b, 0xb7, 0x2e, - 0x94, 0x2e, 0xdc, 0x65, 0x2f, 0x96, 0x85, 0x96, 0x0e, 0x3d, 0x91, 0x2a, 0x3b, 0xf7, 0x4e, 0xf8, - 0xef, 0x4a, 0x6e, 0x73, 0xb0, 0x4b, 0xd1, 0xd7, 0xa0, 0xbe, 0x03, 0x22, 0x30, 0x10, 0x06, 0x07, - 0xcb, 0x0c, 0x64, 0xb5, 0x0f, 0xa1, 0x89, 0x2a, 0x7a, 0xe6, 0x39, 0xc1, 0x66, 0x94, 0xe5, 0x88, - 0x2a, 0x6e, 0xea, 0x3f, 0x30, 0xe4, 0x1f, 0x93, 0x38, 0xa6, 0x04, 0x64, 0x23, 0x4e, 0x1b, 0x65, - 0xa0, 0x50, 0x86, 0x27, 0x6c, 0xab, 0xf5, 0xfb, 0x38, 0x31, 0x40, 0x78, 0x1b, 0xc1, 0xf8, 0xe3, - 0x9c, 0x65, 0xd8, 0x1a, 0x6b, 0x14, 0x7e, 0x4e, 0x30, 0x39, 0x58, 0x21, 0xba, 0x85, 0xe2, 0x40, - 0xc2, 0xb8, 0xb3, 0x7a, 0xd8, 0xd6, 0x54, 0xfa, 0xcd, 0x99, 0xb4, 0xb0, 0x3a, 0x62, 0xb7, 0x70, - 0x23, 0x0f, 0xec, 0x8c, 0xf0, 0x4c, 0x84, 0xeb, 0x68, 0xa8, 0x92, 0xd5, 0x65, 0x17, 0x25, 0x77, - 0xaa, 0x9c, 0x54, 0x57, 0x9e, 0xe6, 0xc6, 0x35, 0x85, 0xb1, 0x19, 0x77, 0xb0, 0xe6, 0xe7, 0xeb -}; -constexpr unsigned char CORRECT_4096_D[] = { - 0x71, 0xb9, 0x50, 0x61, 0xcc, 0x7b, 0xe3, 0x96, 0x0d, 0x05, 0x8a, 0x6a, 0x00, 0x44, 0xe8, 0x4a, - 0xfa, 0x6f, 0xb4, 0x40, 0xfd, 0x31, 0x3c, 0x0e, 0x71, 0x3e, 0x21, 0x06, 0x2c, 0xf3, 0xe8, 0xf1, - 0x24, 0x06, 0xbd, 0x74, 0x85, 0x1f, 0xfa, 0x10, 0x7d, 0x15, 0x00, 0xfd, 0x99, 0x54, 0x77, 0xf3, - 0xad, 0x72, 0x95, 0x57, 0x61, 0x25, 0xc1, 0xf0, 0x3d, 0xa4, 0x5e, 0x0e, 0x5f, 0x0f, 0x7c, 0xc7, - 0x47, 0x71, 0x51, 0x04, 0x79, 0x7f, 0xd7, 0xf2, 0xc4, 0x23, 0xc7, 0xad, 0xa8, 0x09, 0xf3, 0xe7, - 0xb2, 0xfb, 0x8f, 0x9e, 0x74, 0xca, 0x5e, 0x7c, 0x52, 0x77, 0xdb, 0x3a, 0x15, 0x60, 0xd8, 0xf5, - 0xd4, 0xb9, 0xab, 0x9a, 0x22, 0xb1, 0x3f, 0x83, 0xc7, 0xb2, 0x03, 0x92, 0x54, 0x92, 0xcc, 0x63, - 0xca, 0x9d, 0x11, 0xad, 0xc4, 0xa5, 0xa1, 0x10, 0x46, 0xb3, 0x11, 0xbc, 0xce, 0x74, 0x3a, 0x30, - 0x00, 0x94, 0xdc, 0x7d, 0x07, 0x3d, 0x7a, 0xde, 0x52, 0xe7, 0x0e, 0x8c, 0xbe, 0x21, 0xf1, 0xdd, - 0xe1, 0x21, 0xca, 0x18, 0x23, 0xc1, 0x21, 0x3e, 0x14, 0xb7, 0xfe, 0xed, 0x5e, 0xf6, 0x50, 0x41, - 0x3e, 0x91, 0x25, 0x86, 0x90, 0x1f, 0x18, 0x70, 0xd0, 0x9d, 0xe5, 0xb3, 0x5b, 0xae, 0xcd, 0xb9, - 0x2c, 0x0a, 0x20, 0x5d, 0x08, 0x7a, 0x27, 0x2e, 0xbe, 0x1f, 0x87, 0x54, 0xc0, 0xb4, 0xa7, 0x2b, - 0x12, 0x8d, 0xd6, 0x2e, 0x9a, 0x87, 0x23, 0x77, 0x7c, 0x40, 0x51, 0x80, 0x58, 0x50, 0x12, 0x7f, - 0xbb, 0xfa, 0xdb, 0x37, 0x78, 0xab, 0x55, 0xfd, 0x8b, 0x01, 0xa9, 0xaf, 0xfa, 0x37, 0xc6, 0x89, - 0xef, 0x1b, 0xba, 0x33, 0x09, 0x62, 0xbb, 0x59, 0x64, 0xb4, 0x6b, 0xb4, 0xfb, 0xee, 0x33, 0x21, - 0xbb, 0x27, 0x45, 0xd9, 0xb6, 0x8b, 0x86, 0x80, 0x56, 0x0f, 0xb0, 0x08, 0x22, 0x1a, 0x5d, 0x54, - 0xf6, 0x96, 0xc4, 0x47, 0x77, 0x85, 0xec, 0x3c, 0x86, 0x91, 0xc4, 0x03, 0x0e, 0xc3, 0x9f, 0x99, - 0xc4, 0x7e, 0xef, 0x78, 0x2e, 0x7b, 0x60, 0xb0, 0x9e, 0x49, 0x53, 0xa7, 0x9f, 0x1b, 0x74, 0x32, - 0xf4, 0x31, 0x3f, 0x5b, 0x75, 0xd3, 0xc0, 0x59, 0xa2, 0x47, 0xd7, 0xe8, 0x69, 0x82, 0x3c, 0x6c, - 0xfd, 0xfa, 0x24, 0xb6, 0xa7, 0x3c, 0xaa, 0x29, 0x94, 0xa1, 0x68, 0x67, 0x09, 0xd4, 0x93, 0xc3, - 0x0e, 0x76, 0xa1, 0xbd, 0x9b, 0xfb, 0xca, 0x2a, 0x05, 0x07, 0xfc, 0xdc, 0x14, 0xb0, 0x9c, 0x44, - 0x30, 0xde, 0x02, 0x26, 0x21, 0x5f, 0x86, 0xb8, 0x6a, 0x81, 0xf2, 0xf0, 0xe1, 0xc1, 0x3d, 0x16, - 0xfe, 0xca, 0x80, 0xc7, 0xe3, 0xdb, 0x8b, 0xd2, 0xbd, 0x3d, 0xaa, 0x51, 0xac, 0xcd, 0x95, 0x0d, - 0x1c, 0x5b, 0x1e, 0x63, 0xb1, 0xf7, 0x85, 0xe2, 0xba, 0x65, 0xef, 0x68, 0xab, 0x55, 0xea, 0xc6, - 0xd8, 0x93, 0x82, 0x50, 0x33, 0x58, 0x90, 0x00, 0x47, 0x19, 0x50, 0x79, 0x9f, 0x8d, 0xe4, 0xb0, - 0x64, 0xca, 0xb1, 0xdd, 0xae, 0x47, 0x44, 0x3f, 0x81, 0x31, 0xd6, 0x90, 0x36, 0x93, 0x07, 0x21, - 0xb8, 0x44, 0x38, 0xbb, 0xd6, 0xdc, 0x00, 0x58, 0x87, 0xcc, 0xe9, 0x75, 0x5a, 0x82, 0x84, 0x38, - 0x5d, 0x63, 0x6d, 0x6b, 0x58, 0x4d, 0x9d, 0x97, 0xfc, 0xa7, 0xea, 0x18, 0x61, 0xdc, 0xed, 0xd7, - 0x16, 0xce, 0x81, 0xf5, 0x5b, 0x36, 0xda, 0xe0, 0x68, 0xba, 0xf6, 0x1f, 0x1b, 0xa5, 0xe3, 0x04, - 0xb5, 0xbe, 0xba, 0x49, 0x67, 0x76, 0x65, 0x90, 0xb2, 0x6d, 0x8f, 0x79, 0xad, 0xe9, 0x3c, 0x54, - 0x84, 0xfb, 0x73, 0x9b, 0x68, 0x3b, 0xbe, 0x4c, 0x1a, 0xfc, 0xe5, 0xa3, 0x9d, 0x0c, 0x94, 0xbb, - 0x47, 0xe2, 0xa8, 0x10, 0x1e, 0xf1, 0xb7, 0xdb, 0x3e, 0x50, 0x1f, 0x1d, 0x09, 0x39, 0x48, 0xa1 -}; - -constexpr unsigned char CORRECT_8192_N[] = { - 0xbe, 0xb0, 0x16, 0xc4, 0x00, 0xfe, 0x62, 0x75, 0x53, 0x5e, 0x2f, 0x0d, 0x36, 0xbe, 0x94, 0x7b, - 0x8e, 0x58, 0xb4, 0x98, 0xaa, 0xa7, 0xdf, 0x81, 0x74, 0xc7, 0xda, 0x8c, 0x35, 0x37, 0xd0, 0x21, - 0xf0, 0x36, 0x27, 0xdb, 0x25, 0xbb, 0xd2, 0x05, 0xb9, 0xf1, 0xce, 0x15, 0xec, 0x65, 0x2f, 0x9c, - 0x89, 0x01, 0xf6, 0x6a, 0x92, 0x42, 0x39, 0xa4, 0xad, 0xc5, 0x3c, 0x60, 0x0e, 0x48, 0x3b, 0x3b, - 0x1a, 0xe6, 0xce, 0xdd, 0x61, 0xe2, 0xda, 0x08, 0x1d, 0x3b, 0x18, 0xfa, 0x12, 0x4f, 0x53, 0x70, - 0x56, 0xdc, 0xc6, 0xc6, 0xbe, 0x19, 0xc7, 0x8f, 0x4d, 0x25, 0x5c, 0xf5, 0x58, 0x44, 0xd0, 0x64, - 0xfd, 0xd6, 0xb3, 0x55, 0xca, 0xd9, 0x06, 0x4e, 0x69, 0xdf, 0x4e, 0x76, 0x64, 0x41, 0xbb, 0xd7, - 0x5a, 0x26, 0xe1, 0x5e, 0x62, 0x54, 0x30, 0xf6, 0x79, 0x15, 0x5b, 0x9a, 0x88, 0x73, 0xb1, 0xbe, - 0x0a, 0xfe, 0x54, 0x04, 0x13, 0x99, 0x3b, 0xfa, 0xfc, 0x8f, 0x9a, 0x93, 0xd4, 0x14, 0xde, 0x09, - 0x98, 0x78, 0x98, 0x10, 0x39, 0xdf, 0x9f, 0x58, 0xae, 0x10, 0xb1, 0xab, 0xe6, 0xae, 0x39, 0x85, - 0xe1, 0x83, 0x74, 0xf8, 0x05, 0x2a, 0xf8, 0xb3, 0xca, 0x4a, 0xee, 0x17, 0xce, 0xcf, 0x6b, 0x25, - 0x8c, 0xba, 0x89, 0x92, 0x3c, 0xc9, 0x0a, 0xe6, 0x93, 0x84, 0x3e, 0x81, 0xc6, 0x8c, 0x85, 0x6c, - 0x1a, 0xa6, 0xe9, 0x8e, 0x58, 0xe6, 0x94, 0x3c, 0xeb, 0xaf, 0x98, 0x55, 0xab, 0x6c, 0x8c, 0x66, - 0xe8, 0x45, 0x99, 0x2e, 0xd3, 0xad, 0xd8, 0xac, 0x9e, 0x78, 0x15, 0x78, 0x86, 0x5e, 0x97, 0x83, - 0x53, 0x34, 0xab, 0xec, 0xa5, 0x54, 0xf7, 0x82, 0xf1, 0x17, 0x01, 0x91, 0x96, 0x24, 0x6d, 0x7c, - 0x22, 0x4d, 0x67, 0xca, 0xa5, 0x67, 0x34, 0x59, 0xe8, 0x79, 0x71, 0x8d, 0xe5, 0xba, 0x31, 0x65, - 0x82, 0xfa, 0xa8, 0x8c, 0x1f, 0xe6, 0x1b, 0x7f, 0x03, 0xec, 0x60, 0x6e, 0xcd, 0xac, 0x75, 0xfd, - 0xaa, 0x9b, 0xf9, 0x6c, 0xe0, 0x83, 0x5a, 0x37, 0x32, 0xc7, 0x5c, 0x5c, 0x85, 0xb2, 0xd0, 0xe7, - 0x6e, 0x90, 0xa7, 0x24, 0x5a, 0x34, 0x6a, 0x09, 0xfd, 0x51, 0x12, 0xf3, 0xd1, 0xe5, 0x5d, 0xee, - 0x9f, 0x6d, 0xc8, 0xc8, 0x14, 0x43, 0x55, 0x26, 0x26, 0xb3, 0xe3, 0x47, 0x18, 0xdf, 0xcf, 0x34, - 0xc7, 0xda, 0xa6, 0x62, 0x59, 0xab, 0xa1, 0xe7, 0x87, 0x35, 0x34, 0x7b, 0x75, 0x68, 0x0a, 0x84, - 0xc4, 0x3b, 0xb3, 0x7c, 0xe8, 0xda, 0x42, 0x77, 0x04, 0xf4, 0x5e, 0x75, 0xaf, 0xa1, 0x02, 0x58, - 0xc7, 0x84, 0x51, 0x57, 0xc4, 0xc1, 0xad, 0xbf, 0x49, 0x71, 0xb2, 0x55, 0x99, 0xae, 0xec, 0xf1, - 0x20, 0xe0, 0x92, 0x6e, 0x95, 0xa3, 0x74, 0x65, 0xbe, 0x1b, 0xeb, 0xd5, 0xf3, 0x2c, 0xe8, 0xcb, - 0xc2, 0xfc, 0x20, 0x60, 0x39, 0xbf, 0xb0, 0xbe, 0xac, 0xc0, 0x15, 0x59, 0x56, 0x64, 0x13, 0xa8, - 0xb4, 0x0b, 0xfe, 0xf3, 0x2e, 0xc6, 0xbe, 0x8c, 0x58, 0x7a, 0x98, 0x0f, 0x46, 0x60, 0x59, 0xcd, - 0xfb, 0xd0, 0x5f, 0x37, 0x16, 0x9d, 0xb4, 0xfe, 0x5f, 0x30, 0x2a, 0x96, 0x7c, 0x07, 0x22, 0x46, - 0x9b, 0xe7, 0x22, 0x10, 0xd2, 0x1e, 0xca, 0xc4, 0xab, 0xd4, 0x23, 0x9a, 0x65, 0x5d, 0xa9, 0xc2, - 0x50, 0x2d, 0xf3, 0x44, 0x5a, 0x8b, 0x4e, 0x11, 0x18, 0x41, 0xcb, 0xca, 0xa3, 0x5a, 0x1e, 0xf9, - 0xec, 0xbe, 0xc7, 0x8b, 0xd4, 0x90, 0xa4, 0x79, 0x03, 0x9c, 0xf2, 0x97, 0xfc, 0x33, 0xc1, 0x30, - 0x58, 0x7b, 0x4e, 0xce, 0xb5, 0x0d, 0x0e, 0x11, 0x1a, 0x29, 0x39, 0x1c, 0xe2, 0x88, 0x67, 0xa1, - 0x2f, 0xb8, 0x42, 0x30, 0x72, 0x03, 0x90, 0x01, 0xe1, 0x20, 0x0b, 0xad, 0x11, 0x63, 0xaa, 0xa3, - 0x55, 0x52, 0xf8, 0xb8, 0xe6, 0xe3, 0x2e, 0xc5, 0xf3, 0x1a, 0xfd, 0x72, 0x2b, 0xb7, 0xef, 0x4c, - 0x4b, 0xf8, 0x36, 0x58, 0x34, 0x15, 0xe4, 0x3b, 0xdd, 0xd0, 0x77, 0xf8, 0x46, 0xa1, 0x8f, 0x98, - 0xdb, 0x44, 0xc6, 0xc2, 0x30, 0xe5, 0x25, 0x3c, 0x39, 0x5c, 0xe4, 0x36, 0xc6, 0x74, 0xed, 0xd1, - 0x20, 0x81, 0xea, 0xd9, 0x72, 0x4a, 0xad, 0xfa, 0x19, 0x22, 0xc0, 0x69, 0x33, 0xd7, 0x46, 0xb5, - 0x32, 0xfd, 0xa6, 0x30, 0xf9, 0x0f, 0xd9, 0x19, 0xac, 0x71, 0xb2, 0x43, 0x8d, 0x5a, 0xda, 0x55, - 0xdd, 0x70, 0xdc, 0x1c, 0xf2, 0xdb, 0x93, 0x93, 0xc9, 0xaa, 0xee, 0x38, 0x7a, 0x22, 0xe6, 0x64, - 0xa3, 0xbf, 0x65, 0x28, 0xa3, 0x34, 0x36, 0x91, 0xff, 0xe8, 0x73, 0x90, 0x35, 0x64, 0xad, 0x0a, - 0xcf, 0xa3, 0xac, 0x04, 0x96, 0x83, 0xf4, 0x55, 0x07, 0x8e, 0xf7, 0x90, 0x1d, 0xa3, 0x22, 0xf5, - 0x4d, 0x7a, 0xb0, 0xf6, 0x7e, 0xfc, 0xe6, 0x0b, 0x59, 0xab, 0xd5, 0x38, 0xa3, 0xa7, 0x45, 0x5d, - 0x88, 0x9c, 0x7f, 0xc0, 0x7d, 0x99, 0xce, 0x6d, 0x45, 0xce, 0x70, 0xea, 0x4f, 0x85, 0x86, 0x90, - 0xdb, 0xf6, 0xaf, 0xbe, 0x79, 0x7a, 0xcc, 0x94, 0x47, 0x2c, 0x28, 0x7a, 0xcc, 0xdc, 0x8c, 0x52, - 0xc1, 0x6b, 0x87, 0xf6, 0x98, 0x79, 0x03, 0x39, 0xcd, 0x51, 0xc9, 0x41, 0x0e, 0x9b, 0x84, 0xaa, - 0x8e, 0x16, 0x2d, 0xaf, 0xb6, 0x50, 0xbd, 0xc1, 0xbb, 0xf4, 0xea, 0x02, 0x2a, 0xe8, 0x10, 0x41, - 0xe8, 0x39, 0xc5, 0xce, 0x6d, 0x03, 0x9e, 0x2f, 0xc7, 0x35, 0x58, 0x76, 0x06, 0xfa, 0xf5, 0x67, - 0x99, 0x8f, 0x40, 0xfe, 0xd7, 0x2d, 0x0f, 0xe0, 0xae, 0x5f, 0x0e, 0x47, 0xe5, 0x9f, 0xb3, 0x19, - 0xa0, 0x7d, 0xe9, 0xd4, 0xa0, 0x08, 0xed, 0xcb, 0x84, 0xc3, 0x2a, 0xc5, 0xb9, 0x66, 0xf7, 0x55, - 0x4f, 0x6b, 0x26, 0xc7, 0xca, 0x4f, 0xf4, 0xc0, 0x80, 0xe9, 0xcb, 0x5a, 0x0a, 0x02, 0xe1, 0x15, - 0xd7, 0x5d, 0xb8, 0x47, 0x71, 0xec, 0xa3, 0x20, 0xfb, 0x73, 0xfb, 0x65, 0x4b, 0x7d, 0x25, 0xe8, - 0x9d, 0x38, 0x81, 0x56, 0x31, 0x39, 0x95, 0xfe, 0x30, 0x13, 0xf6, 0x83, 0x28, 0x97, 0xe5, 0xa2, - 0xf4, 0xf7, 0x0e, 0x7d, 0x6b, 0xc2, 0xfa, 0x81, 0xbb, 0xe7, 0x4a, 0x3b, 0x4c, 0x53, 0x04, 0xe1, - 0x51, 0x50, 0xea, 0xf2, 0x4c, 0xc7, 0x9d, 0xe7, 0x5e, 0x5b, 0x06, 0x19, 0x88, 0x9a, 0xc2, 0x89, - 0x9c, 0xf2, 0xab, 0xeb, 0xf6, 0xf3, 0xeb, 0xb5, 0xd0, 0x20, 0x3d, 0xce, 0x3d, 0xea, 0xea, 0x04, - 0xf1, 0x83, 0x87, 0xc8, 0x0c, 0x90, 0x61, 0x81, 0x33, 0x14, 0x40, 0x1d, 0x9e, 0x3c, 0xcf, 0xba, - 0x54, 0x41, 0x5f, 0xb2, 0x77, 0x7c, 0xad, 0x52, 0xe0, 0x5d, 0x30, 0xcc, 0xca, 0x25, 0x07, 0x23, - 0xcf, 0xa5, 0xca, 0x12, 0x1b, 0x9c, 0x8b, 0x0c, 0xd3, 0x72, 0xda, 0x1c, 0x5d, 0xf1, 0x5a, 0x02, - 0x32, 0x40, 0x58, 0x8f, 0x13, 0x37, 0xf7, 0x9d, 0x16, 0x46, 0xd2, 0x62, 0xc9, 0x93, 0x7e, 0x35, - 0x29, 0x40, 0x98, 0x78, 0xe9, 0x3c, 0xb5, 0x99, 0x39, 0xcf, 0xa3, 0xcc, 0xcc, 0x4f, 0xf5, 0xa9, - 0x82, 0x35, 0xf8, 0x61, 0xee, 0x41, 0xec, 0xfa, 0x9b, 0x70, 0x53, 0x1d, 0xcf, 0x72, 0xc1, 0xef, - 0xdc, 0xc8, 0xd8, 0x73, 0x09, 0x04, 0x91, 0x0e, 0xc1, 0xfc, 0xc4, 0x78, 0xf8, 0xd7, 0x09, 0x68, - 0xc6, 0x75, 0x58, 0xe3, 0x79, 0x8d, 0xe6, 0xfd, 0xdd, 0x03, 0x1b, 0x00, 0x85, 0x89, 0xbf, 0xe0, - 0xf9, 0x09, 0x8d, 0x5b, 0xe3, 0xab, 0xe7, 0x17, 0xab, 0x4a, 0x35, 0xdf, 0xe6, 0xf8, 0x7d, 0xc5, - 0x6d, 0xfd, 0x1f, 0x5e, 0x85, 0xbe, 0xa8, 0x56, 0x18, 0xa2, 0x10, 0xcc, 0x4d, 0x4f, 0xac, 0x69 -}; -constexpr unsigned char CORRECT_8192_D[] = { - 0x9e, 0x4c, 0x46, 0x09, 0xde, 0x9d, 0x4f, 0x15, 0x00, 0xe9, 0x4d, 0xfc, 0x15, 0x37, 0x2e, 0xc2, - 0x47, 0x50, 0x22, 0x54, 0x1e, 0x4f, 0x8f, 0xfe, 0xc2, 0xf8, 0x69, 0xd8, 0x3d, 0x11, 0xa1, 0x49, - 0x9b, 0x45, 0x09, 0xdf, 0x26, 0x3a, 0xfe, 0x45, 0xdc, 0xaf, 0xfc, 0x9a, 0x3c, 0x8d, 0x5f, 0x71, - 0xfe, 0x56, 0xcf, 0xbe, 0x76, 0xbe, 0x5d, 0x65, 0xf5, 0x0f, 0xa8, 0x68, 0x41, 0x52, 0xfb, 0x40, - 0xbc, 0xbb, 0x60, 0x7d, 0x6d, 0x96, 0x49, 0xd3, 0xb4, 0x98, 0x6b, 0xca, 0xa5, 0x4a, 0x8f, 0x04, - 0xd2, 0x47, 0x23, 0x08, 0xb7, 0xa5, 0x65, 0x01, 0xf4, 0x54, 0x11, 0x10, 0x67, 0x7f, 0x70, 0xd4, - 0x75, 0xd9, 0x37, 0x35, 0x00, 0x59, 0x1b, 0xa0, 0x1a, 0xc9, 0xd3, 0x33, 0xfb, 0x54, 0x8a, 0x60, - 0x63, 0x29, 0xa5, 0xab, 0x99, 0xcb, 0x34, 0x7e, 0x57, 0xd4, 0x40, 0x20, 0x50, 0x28, 0x63, 0x24, - 0x55, 0xb1, 0xfe, 0x03, 0x08, 0x56, 0x0b, 0xf1, 0xf6, 0x9a, 0x2c, 0x03, 0x8e, 0x6a, 0xe8, 0x4c, - 0x64, 0xf3, 0xaf, 0xa0, 0xc0, 0xba, 0x80, 0x68, 0xb8, 0xcf, 0x88, 0xff, 0x20, 0x57, 0xff, 0xce, - 0xc1, 0x80, 0x44, 0xa8, 0xe4, 0x79, 0x60, 0xce, 0xb8, 0x1f, 0x6d, 0xf9, 0xfb, 0xa8, 0x3a, 0xd5, - 0x88, 0x37, 0x0e, 0x9f, 0x84, 0xb0, 0x8c, 0xc9, 0x0f, 0x2b, 0x18, 0x4c, 0xd9, 0x8b, 0xab, 0xf3, - 0x2b, 0x48, 0xe6, 0xd8, 0x51, 0xba, 0xd0, 0xd2, 0xa6, 0x01, 0x36, 0x5f, 0xe0, 0x18, 0x13, 0x92, - 0x16, 0x3e, 0x38, 0xc5, 0x23, 0xda, 0xcc, 0xe5, 0xb8, 0x04, 0x0e, 0x26, 0xe8, 0xbd, 0x3b, 0xe0, - 0x3c, 0x41, 0x9c, 0x7b, 0xae, 0x60, 0x93, 0xbc, 0x72, 0xf1, 0xdb, 0x4e, 0x85, 0xaa, 0xa5, 0xed, - 0x07, 0xf8, 0xe4, 0x31, 0xd9, 0x0f, 0x8c, 0xe9, 0x1a, 0x51, 0x3e, 0xd0, 0x42, 0x26, 0x48, 0x7d, - 0x71, 0xb7, 0x2e, 0x16, 0x6d, 0x20, 0xb4, 0x30, 0xc4, 0x0c, 0x05, 0x9d, 0xd6, 0x45, 0xd6, 0x09, - 0x88, 0x09, 0x45, 0x8d, 0x79, 0xef, 0xf1, 0x03, 0xa3, 0xb6, 0xd6, 0x58, 0xc4, 0x70, 0xc6, 0x75, - 0x69, 0x56, 0xd2, 0x3a, 0x1e, 0x5c, 0x26, 0xaf, 0x36, 0x48, 0x88, 0x88, 0x39, 0xf5, 0xc3, 0xfd, - 0xa5, 0x02, 0x19, 0x4c, 0xe7, 0x6d, 0x62, 0x11, 0x72, 0xcd, 0xa0, 0xde, 0x53, 0xaa, 0xf0, 0x33, - 0x6b, 0xb9, 0x7a, 0xa8, 0x68, 0xb2, 0x4f, 0x8c, 0x89, 0xb4, 0xc4, 0x65, 0xbc, 0xf8, 0x6a, 0xca, - 0xfe, 0xb0, 0x64, 0xf7, 0x4b, 0xc2, 0x6c, 0xac, 0xab, 0x43, 0x45, 0xeb, 0x42, 0xaa, 0x51, 0xed, - 0x6b, 0x6b, 0xcf, 0xaf, 0x21, 0xda, 0x7a, 0xa7, 0x32, 0x8c, 0x1d, 0x34, 0x6c, 0x89, 0x47, 0x8f, - 0x80, 0xf0, 0x8c, 0xff, 0x1a, 0x5f, 0xff, 0xef, 0xba, 0x5b, 0x29, 0x73, 0x8a, 0x14, 0xfd, 0x08, - 0xb2, 0x4c, 0x65, 0x80, 0x1c, 0x50, 0xa2, 0xa4, 0x17, 0x7a, 0xb9, 0xfe, 0x58, 0xf6, 0x69, 0x4f, - 0x82, 0x6f, 0xf6, 0xec, 0xe0, 0x27, 0x02, 0xe6, 0x35, 0x49, 0x48, 0x54, 0x5d, 0xe2, 0xfc, 0x8a, - 0x40, 0x02, 0x22, 0x18, 0xf4, 0x40, 0x65, 0x91, 0x49, 0x6a, 0x0d, 0xe0, 0xb1, 0x03, 0xa7, 0x13, - 0xa0, 0xb6, 0xc6, 0x93, 0xda, 0x2a, 0xcf, 0xbf, 0x66, 0xb9, 0x8b, 0xf8, 0xcf, 0x2f, 0x6b, 0x0e, - 0xb1, 0x4b, 0x04, 0x08, 0xf9, 0x75, 0x6d, 0x90, 0x49, 0x67, 0xcd, 0x8a, 0xe2, 0x02, 0x9d, 0x76, - 0x72, 0x6f, 0x89, 0xed, 0xed, 0xbf, 0x49, 0x9a, 0x60, 0x42, 0x79, 0x2d, 0x6c, 0xa3, 0x76, 0x3b, - 0xf1, 0x28, 0x24, 0x2a, 0xfb, 0x27, 0xe4, 0x46, 0x94, 0x46, 0x26, 0x70, 0x71, 0x2a, 0x35, 0x85, - 0x1c, 0xbd, 0x44, 0xcd, 0x3c, 0xc8, 0xf2, 0x52, 0x6d, 0x16, 0x12, 0x3b, 0x51, 0x15, 0x41, 0x00, - 0x39, 0xa2, 0x53, 0x1e, 0x41, 0x98, 0x34, 0x69, 0xc8, 0x42, 0x3d, 0xdd, 0x5b, 0x92, 0xc4, 0xdf, - 0xa7, 0x22, 0xc5, 0xc1, 0x6f, 0x07, 0x60, 0xcd, 0x9b, 0x80, 0xcf, 0x4e, 0x88, 0xad, 0xe6, 0xc3, - 0x0a, 0x3e, 0x02, 0xba, 0x52, 0x29, 0x30, 0xe2, 0xdc, 0xe1, 0x67, 0x1d, 0x3e, 0x69, 0x0d, 0x8b, - 0x18, 0x93, 0xad, 0xd4, 0x21, 0xc5, 0x4d, 0x38, 0xc8, 0x1f, 0xec, 0xf1, 0xdb, 0xa3, 0xa2, 0xf5, - 0x75, 0x42, 0xf1, 0x87, 0xe5, 0xa1, 0xdf, 0x44, 0x6c, 0xa4, 0xa3, 0x05, 0x37, 0x99, 0x74, 0x2f, - 0x81, 0x93, 0xcb, 0xeb, 0x21, 0xae, 0xa7, 0x05, 0x44, 0xb3, 0x4a, 0x15, 0xed, 0x7c, 0x25, 0xe0, - 0xb4, 0x46, 0xf7, 0x56, 0xfe, 0x80, 0xb6, 0x9f, 0x1c, 0xb8, 0xf8, 0x36, 0xc9, 0x1a, 0x1f, 0x5d, - 0x38, 0xe3, 0x24, 0x62, 0x31, 0x95, 0xf8, 0x67, 0x5a, 0xdb, 0xe4, 0x24, 0x30, 0x8f, 0x8b, 0xb6, - 0xa5, 0xb2, 0xa5, 0x4d, 0x1d, 0x10, 0x1a, 0xa8, 0x68, 0x01, 0xd0, 0x9e, 0xc3, 0x2f, 0xaf, 0x2a, - 0x05, 0xcc, 0xac, 0xb1, 0x5b, 0xbe, 0x72, 0x72, 0x0e, 0xf1, 0xb3, 0x51, 0x0e, 0x7a, 0x18, 0x93, - 0x3f, 0x57, 0xc2, 0x6b, 0x13, 0xae, 0x2b, 0xcf, 0xa5, 0x6b, 0x30, 0x49, 0xe5, 0x8f, 0xbb, 0xf2, - 0x6c, 0xe3, 0x87, 0xdf, 0x21, 0x34, 0x3e, 0x25, 0xee, 0x7d, 0x6e, 0x56, 0x01, 0xbe, 0x03, 0xd0, - 0x3c, 0xce, 0x09, 0x6b, 0x6e, 0x6a, 0x1c, 0x04, 0xb7, 0x4a, 0xc6, 0xc0, 0x40, 0xad, 0xdc, 0x3d, - 0x1d, 0xb2, 0x44, 0x84, 0x3e, 0x25, 0x2c, 0x63, 0x87, 0x26, 0x0d, 0x80, 0x33, 0xe8, 0xc5, 0xf6, - 0x7d, 0x54, 0x0a, 0xad, 0xe9, 0x92, 0x49, 0xdf, 0xe2, 0x43, 0x03, 0x87, 0x45, 0xd3, 0x76, 0xac, - 0x3c, 0x61, 0x5a, 0x66, 0xc5, 0x22, 0x27, 0xff, 0x22, 0xe3, 0x2d, 0x46, 0x9e, 0xaf, 0x21, 0x3f, - 0xc0, 0x91, 0x97, 0x1a, 0xcd, 0x8d, 0x0d, 0xb2, 0x0c, 0xfc, 0x91, 0xc4, 0x9a, 0x73, 0xb4, 0x01, - 0x18, 0xd6, 0xec, 0xa5, 0xad, 0x13, 0xb5, 0x7e, 0xae, 0xab, 0xaa, 0xf7, 0xce, 0xdf, 0x52, 0x2e, - 0xf3, 0x5f, 0x38, 0xef, 0x90, 0x68, 0xd6, 0xe9, 0x5a, 0x89, 0x70, 0xe8, 0x0f, 0x42, 0xe6, 0x89, - 0xb9, 0x79, 0xf9, 0xb8, 0x46, 0xbc, 0x0d, 0x8e, 0x9d, 0x22, 0x77, 0x07, 0x57, 0xcb, 0x5e, 0x46, - 0x9a, 0x9b, 0x4f, 0x44, 0x65, 0x1f, 0x7e, 0x8f, 0xfd, 0xce, 0x7a, 0x32, 0xb4, 0x50, 0x6b, 0x27, - 0xd3, 0xc7, 0x3c, 0xd9, 0x9d, 0xce, 0x4b, 0x25, 0xac, 0x43, 0x9d, 0x2c, 0x97, 0x20, 0xa8, 0x6f, - 0x11, 0x5a, 0xc4, 0x31, 0x4f, 0x2b, 0x65, 0x0b, 0x4a, 0xcf, 0x06, 0x2d, 0xe8, 0x40, 0x87, 0x87, - 0xf8, 0xd7, 0xff, 0x29, 0xa5, 0xf7, 0x61, 0xc0, 0x8a, 0x2f, 0x69, 0x4a, 0x55, 0x05, 0xb1, 0xaf, - 0x8a, 0x9a, 0xbf, 0xae, 0xe7, 0x40, 0x08, 0xa9, 0x89, 0xe1, 0x9c, 0xc0, 0x35, 0x17, 0xa6, 0x61, - 0x23, 0x70, 0xe0, 0x90, 0x51, 0x32, 0x0d, 0x5e, 0x8b, 0x2b, 0xb5, 0xab, 0xec, 0xa9, 0xbf, 0x22, - 0x98, 0x4b, 0xdb, 0x14, 0x81, 0x97, 0x38, 0x95, 0xf0, 0x1c, 0x2e, 0xe5, 0x74, 0x74, 0x21, 0x5a, - 0x69, 0xb6, 0xfd, 0x96, 0x53, 0x62, 0x91, 0x30, 0x2f, 0x95, 0xf8, 0x91, 0xac, 0xff, 0x11, 0x9f, - 0x02, 0x15, 0xf7, 0x0b, 0xf3, 0xf0, 0xf2, 0x2d, 0xa1, 0x83, 0xa5, 0x15, 0x34, 0xee, 0xfa, 0x61, - 0x32, 0xfd, 0xb7, 0x29, 0x3e, 0xbe, 0x95, 0x2c, 0xe2, 0x95, 0x16, 0x27, 0x73, 0xd9, 0x74, 0xce, - 0x1b, 0x07, 0xf8, 0x5f, 0x25, 0x77, 0x7a, 0xf2, 0xbe, 0x22, 0x60, 0x7f, 0x58, 0x2b, 0x6c, 0x95, - 0x22, 0x92, 0x33, 0xba, 0xa3, 0xd8, 0x87, 0x58, 0x29, 0xa0, 0x69, 0x01, 0xd9, 0x51, 0x87, 0x01 -}; - -const char *g_asyKeyGeneratorBySpecClass = "HcfAsyKeyGeneratorBySpec"; - -const char *g_rsaAlgName = "RSA"; -} - -static void RemoveLastChar(const unsigned char *str, unsigned char *dest, uint32_t destLen) -{ - for (size_t i = 0; i < destLen; i++) { - dest[i] = str[i]; - } - return; -} - -static void EndianSwap(unsigned char *pData, int startIndex, int length) -{ - int cnt = length / 2; - int start = startIndex; - int end = startIndex + length - 1; - unsigned char tmp; - for (int i = 0; i < cnt; i++) { - tmp = pData[start + i]; - pData[start + i] = pData[end - i]; - pData[end - i] = tmp; - } -} - -// 512 defined the length of byte array -static void GenerateRsa512CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) -{ - RemoveLastChar(CORRECT_512_N, dataN, RSA_512_N_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataN, 0, RSA_512_N_BYTE_SIZE); - } - returnSpec->n.data = dataN; - returnSpec->n.len = RSA_512_N_BYTE_SIZE; - returnSpec->base.algName = const_cast(g_rsaAlgName); - returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - return; -} - -static void GenerateRsa512CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, - HcfRsaPubKeyParamsSpec *returnPubSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa512CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_512_E_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_512_E_BYTE_SIZE); - } - returnPubSpec->pk.data = dataE; - returnPubSpec->pk.len = RSA_512_E_BYTE_SIZE; - returnPubSpec->base = rsaCommSpec; - returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; -} - -static void GenerateRsa512CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, - HcfRsaKeyPairParamsSpec *returnPairSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa512CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_512_E_BYTE_SIZE); - RemoveLastChar(CORRECT_512_D, dataD, RSA_512_D_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_512_E_BYTE_SIZE); - EndianSwap(dataD, 0, RSA_512_D_BYTE_SIZE); - } - returnPairSpec->pk.data = dataE; - returnPairSpec->pk.len = RSA_512_E_BYTE_SIZE; - returnPairSpec->sk.data = dataD; - returnPairSpec->sk.len = RSA_512_D_BYTE_SIZE; - returnPairSpec->base = rsaCommSpec; - returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; -} - -// 768 defined the length of byte array -static void GenerateRsa768CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) -{ - RemoveLastChar(CORRECT_768_N, dataN, RSA_768_N_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataN, 0, RSA_768_N_BYTE_SIZE); - } - returnSpec->n.data = dataN; - returnSpec->n.len = RSA_768_N_BYTE_SIZE; - returnSpec->base.algName = const_cast(g_rsaAlgName); - returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - return; -} - -static void GenerateRsa768CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, - HcfRsaPubKeyParamsSpec *returnPubSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa768CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_768_E_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_768_E_BYTE_SIZE); - } - returnPubSpec->pk.data = dataE; - returnPubSpec->pk.len = RSA_768_E_BYTE_SIZE; - returnPubSpec->base = rsaCommSpec; - returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; -} - -static void GenerateRsa768CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, - HcfRsaKeyPairParamsSpec *returnPairSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa768CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_768_E_BYTE_SIZE); - RemoveLastChar(CORRECT_768_D, dataD, RSA_768_D_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_768_E_BYTE_SIZE); - EndianSwap(dataD, 0, RSA_768_D_BYTE_SIZE); - } - returnPairSpec->pk.data = dataE; - returnPairSpec->pk.len = RSA_768_E_BYTE_SIZE; - returnPairSpec->sk.data = dataD; - returnPairSpec->sk.len = RSA_768_D_BYTE_SIZE; - returnPairSpec->base = rsaCommSpec; - returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; -} - -// 1024 defined the length of byte array -static void GenerateRsa1024CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) -{ - RemoveLastChar(CORRECT_1024_N, dataN, RSA_1024_N_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataN, 0, RSA_1024_N_BYTE_SIZE); - } - returnSpec->n.data = dataN; - returnSpec->n.len = RSA_1024_N_BYTE_SIZE; - returnSpec->base.algName = const_cast(g_rsaAlgName); - returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - return; -} - -static void GenerateRsa1024CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, - HcfRsaPubKeyParamsSpec *returnPubSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa1024CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_1024_E_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_1024_E_BYTE_SIZE); - } - returnPubSpec->pk.data = dataE; - returnPubSpec->pk.len = RSA_1024_E_BYTE_SIZE; - returnPubSpec->base = rsaCommSpec; - returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; -} - -static void GenerateRsa1024CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, - HcfRsaKeyPairParamsSpec *returnPairSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa1024CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_1024_E_BYTE_SIZE); - RemoveLastChar(CORRECT_1024_D, dataD, RSA_1024_D_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_1024_E_BYTE_SIZE); - EndianSwap(dataD, 0, RSA_1024_D_BYTE_SIZE); - } - returnPairSpec->pk.data = dataE; - returnPairSpec->pk.len = RSA_1024_E_BYTE_SIZE; - returnPairSpec->sk.data = dataD; - returnPairSpec->sk.len = RSA_1024_D_BYTE_SIZE; - returnPairSpec->base = rsaCommSpec; - returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; -} - -// 2048 defined the length of byte array -static void GenerateRsa2048CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) -{ - RemoveLastChar(CORRECT_2048_N, dataN, RSA_2048_N_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataN, 0, RSA_2048_N_BYTE_SIZE); - } - returnSpec->n.data = dataN; - returnSpec->n.len = RSA_2048_N_BYTE_SIZE; - returnSpec->base.algName = const_cast(g_rsaAlgName); - returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - return; -} - -static void GenerateRsa2048CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, - HcfRsaPubKeyParamsSpec *returnPubSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_2048_E_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_2048_E_BYTE_SIZE); - } - returnPubSpec->pk.data = dataE; - returnPubSpec->pk.len = RSA_2048_E_BYTE_SIZE; - returnPubSpec->base = rsaCommSpec; - returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; -} - -static void GenerateRsa2048CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, - HcfRsaKeyPairParamsSpec *returnPairSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_2048_E_BYTE_SIZE); - RemoveLastChar(CORRECT_2048_D, dataD, RSA_2048_D_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_2048_E_BYTE_SIZE); - EndianSwap(dataD, 0, RSA_2048_D_BYTE_SIZE); - } - returnPairSpec->pk.data = dataE; - returnPairSpec->pk.len = RSA_2048_E_BYTE_SIZE; - returnPairSpec->sk.data = dataD; - returnPairSpec->sk.len = RSA_2048_D_BYTE_SIZE; - returnPairSpec->base = rsaCommSpec; - returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; -} - -// 3072 defined the length of byte array -static void GenerateRsa3072CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) -{ - RemoveLastChar(CORRECT_3072_N, dataN, RSA_3072_N_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataN, 0, RSA_3072_N_BYTE_SIZE); - } - returnSpec->n.data = dataN; - returnSpec->n.len = RSA_3072_N_BYTE_SIZE; - returnSpec->base.algName = const_cast(g_rsaAlgName); - returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - return; -} - -static void GenerateRsa3072CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, - HcfRsaPubKeyParamsSpec *returnPubSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa3072CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_3072_E_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_3072_E_BYTE_SIZE); - } - returnPubSpec->pk.data = dataE; - returnPubSpec->pk.len = RSA_3072_E_BYTE_SIZE; - returnPubSpec->base = rsaCommSpec; - returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; -} - -static void GenerateRsa3072CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, - HcfRsaKeyPairParamsSpec *returnPairSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa3072CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_3072_E_BYTE_SIZE); - RemoveLastChar(CORRECT_3072_D, dataD, RSA_3072_D_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_3072_E_BYTE_SIZE); - EndianSwap(dataD, 0, RSA_3072_D_BYTE_SIZE); - } - returnPairSpec->pk.data = dataE; - returnPairSpec->pk.len = RSA_3072_E_BYTE_SIZE; - returnPairSpec->sk.data = dataD; - returnPairSpec->sk.len = RSA_3072_D_BYTE_SIZE; - returnPairSpec->base = rsaCommSpec; - returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; -} - -// 4096 defined the length of byte array -static void GenerateRsa4096CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) -{ - RemoveLastChar(CORRECT_4096_N, dataN, RSA_4096_N_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataN, 0, RSA_4096_N_BYTE_SIZE); - } - returnSpec->n.data = dataN; - returnSpec->n.len = RSA_4096_N_BYTE_SIZE; - returnSpec->base.algName = const_cast(g_rsaAlgName); - returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - return; -} - -static void GenerateRsa4096CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, - HcfRsaPubKeyParamsSpec *returnPubSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa4096CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_4096_E_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_4096_E_BYTE_SIZE); - } - returnPubSpec->pk.data = dataE; - returnPubSpec->pk.len = RSA_4096_E_BYTE_SIZE; - returnPubSpec->base = rsaCommSpec; - returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; -} - -static void GenerateRsa4096CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, - HcfRsaKeyPairParamsSpec *returnPairSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa4096CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_4096_E_BYTE_SIZE); - RemoveLastChar(CORRECT_4096_D, dataD, RSA_4096_D_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_4096_E_BYTE_SIZE); - EndianSwap(dataD, 0, RSA_4096_D_BYTE_SIZE); - } - returnPairSpec->pk.data = dataE; - returnPairSpec->pk.len = RSA_4096_E_BYTE_SIZE; - returnPairSpec->sk.data = dataD; - returnPairSpec->sk.len = RSA_4096_D_BYTE_SIZE; - returnPairSpec->base = rsaCommSpec; - returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; -} - -// 8192 defined the length of byte array -static void GenerateRsa8192CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) -{ - RemoveLastChar(CORRECT_8192_N, dataN, RSA_8192_N_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataN, 0, RSA_8192_N_BYTE_SIZE); - } - returnSpec->n.data = dataN; - returnSpec->n.len = RSA_8192_N_BYTE_SIZE; - returnSpec->base.algName = const_cast(g_rsaAlgName); - returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; - return; -} - -static void GenerateRsa8192CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, - HcfRsaPubKeyParamsSpec *returnPubSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa8192CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_8192_E_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_8192_E_BYTE_SIZE); - } - returnPubSpec->pk.data = dataE; - returnPubSpec->pk.len = RSA_8192_E_BYTE_SIZE; - returnPubSpec->base = rsaCommSpec; - returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; -} - -static void GenerateRsa8192CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, - HcfRsaKeyPairParamsSpec *returnPairSpec) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - GenerateRsa8192CorrectCommonKeySpec(dataN, &rsaCommSpec); - RemoveLastChar(CORRECT_E, dataE, RSA_8192_E_BYTE_SIZE); - RemoveLastChar(CORRECT_8192_D, dataD, RSA_8192_D_BYTE_SIZE); - if (!IsBigEndian()) { - // the device is not big endian - EndianSwap(dataE, 0, RSA_8192_E_BYTE_SIZE); - EndianSwap(dataD, 0, RSA_8192_D_BYTE_SIZE); - } - returnPairSpec->pk.data = dataE; - returnPairSpec->pk.len = RSA_8192_E_BYTE_SIZE; - returnPairSpec->sk.data = dataD; - returnPairSpec->sk.len = RSA_8192_D_BYTE_SIZE; - returnPairSpec->base = rsaCommSpec; - returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; -} - -static bool CheckGeneratorBySpecKeyFunc(HcfAsyKeyGeneratorBySpec *generator) -{ - if (generator->generateKeyPair == nullptr || generator->generatePriKey == nullptr || - generator->generatePubKey == nullptr) { - return false; - } - return true; -} - -// basic generator create test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest001, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest003, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest004, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -// test generator by spec genrate key funciton not null -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest005, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfObjDestroy(generator); -} - -// test generator by spec get class string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest006, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecClass = generator->base.getClass(); - EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); - HcfObjDestroy(generator); -} - -// test generator by spec get getAlgName string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest007, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecAlgName = generator->getAlgName(generator); - EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); - HcfObjDestroy(generator); -} - -// test generator by spec basic destroy -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest008, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - generator->base.destroy(&(generator->base)); -} -// test correct spec and generate key pair, pri key, and pub key. -// pub spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest012, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest013, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest014, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest018, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest019, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest020, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check normal key function from key pairs of key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest021, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *keyPairClassName = keyPair->base.getClass(); - EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest022, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest023, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkClassName = keyPair->pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest024, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); - keyPair->pubKey = nullptr; - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest025, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest026, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest027, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest028, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest029, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_2048_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest030, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *skClassName = keyPair->priKey->base.base.getClass(); - EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest031, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); - keyPair->priKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest032, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest033, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest034, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest035, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest036, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - - HcfFree(d.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest037, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest038, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest039, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest040, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest041, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest042, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest043, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_2048_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check key function of pri key generated by key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest044, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkClassName = priKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest045, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - priKey->base.base.destroy(&(priKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest046, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *alg = priKey->base.getAlgorithm(&(priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest047, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest048, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkFormat = priKey->base.getFormat(&(priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest049, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest050, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - res = memcmp(d.data, dataD, RSA_2048_D_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(d.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check key functions of pub key from pub key spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest051, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest052, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest053, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest054, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest055, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest056, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest057, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_2048_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check encoded key pair's pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest058, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest059, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pub key spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest060, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest061, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_2048_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest062, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest063, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_2048_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest064, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pubKey spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest065, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_2048_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest066, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA2048", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check invalid get key functions of key pair's pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest067, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest068, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of key pair's pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest069, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); - - keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest070, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); - - keyPair->priKey->clearMem(keyPair->priKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest071, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest072, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest073, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest074, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecString, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 2048 generate keyPair get all big int -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest100, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - // generator key type from generator's spec - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - HcfPriKey *priKey = keyPair->priKey; - HcfPubKey *pubKey = keyPair->pubKey; - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - HcfBigInteger returnD = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - // check the array data - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnPriN.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnD.data, dataD, RSA_2048_D_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_2048_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - - HcfFree(returnPubN.data); - HcfFree(returnPriN.data); - HcfFree(returnD.data); - HcfFree(returnE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 2048 generate pub key get -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest110, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_2048_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_2048_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - HcfFree(returnPubN.data); - HcfFree(returnE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate incorrect case: RSA 2048 generate common key spec (not support) -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest130, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - HcfObjDestroy(generator); -} - - -// ============================= RSA 512 testcase begin ============================= -// basic generator create test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest131, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - GenerateRsa512CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest132, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest133, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -// test generator by spec genrate key funciton not null -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest134, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfObjDestroy(generator); -} - -// test generator by spec get class string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest135, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecClass = generator->base.getClass(); - EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); - HcfObjDestroy(generator); -} - -// test generator by spec get getAlgName string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest136, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecAlgName = generator->getAlgName(generator); - EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); - HcfObjDestroy(generator); -} - -// test generator by spec basic destroy -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest137, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - generator->base.destroy(&(generator->base)); -} -// test correct spec and generate key pair, pri key, and pub key. -// pub spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest138, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest139, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest140, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest141, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest142, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest143, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check normal key function from key pairs of key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest144, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *keyPairClassName = keyPair->base.getClass(); - EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest145, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest146, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkClassName = keyPair->pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest147, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); - keyPair->pubKey = nullptr; - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest148, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest149, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest150, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest151, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest152, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_512_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest153, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *skClassName = keyPair->priKey->base.base.getClass(); - EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest154, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); - keyPair->priKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest155, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest156, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest157, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest158, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest159, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - - HcfFree(d.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest160, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest161, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest162, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest163, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest164, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest165, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest166, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_512_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check key function of pri key generated by key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest167, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkClassName = priKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest168, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - priKey->base.base.destroy(&(priKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest169, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *alg = priKey->base.getAlgorithm(&(priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest170, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest171, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkFormat = priKey->base.getFormat(&(priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest172, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest173, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - res = memcmp(d.data, dataD, RSA_512_D_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(d.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check key functions of pub key from pub key spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest174, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest175, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest176, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest177, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest178, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest179, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest180, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_512_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check encoded key pair's pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest181, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest182, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pub key spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest183, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest184, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_512_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest185, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest186, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_512_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest187, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pubKey spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest188, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_512_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest189, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA512", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check invalid get key functions of key pair's pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest190, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest191, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of key pair's pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest192, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); - - keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest193, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); - - keyPair->priKey->clearMem(keyPair->priKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest194, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest195, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest196, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest197, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecString, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 512 generate keyPair get all big int -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest198, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_512_D_BYTE_SIZE] = {0}; - GenerateRsa512CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - // generator key type from generator's spec - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - HcfPriKey *priKey = keyPair->priKey; - HcfPubKey *pubKey = keyPair->pubKey; - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - HcfBigInteger returnD = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - // check the array data - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnPriN.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnD.data, dataD, RSA_512_D_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_512_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - - HcfFree(returnPubN.data); - HcfFree(returnPriN.data); - HcfFree(returnD.data); - HcfFree(returnE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 512 generate pub key get -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest199, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_512_E_BYTE_SIZE] = {0}; - GenerateRsa512CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_512_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_512_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - HcfFree(returnPubN.data); - HcfFree(returnE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate incorrect case: RSA 512 generate common key spec (not support) -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest200, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - - unsigned char dataN[RSA_512_N_BYTE_SIZE] = {0}; - GenerateRsa512CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - HcfObjDestroy(generator); -} -// ============================= RSA 512 testcase end ============================= - - -// ============================= RSA 768 testcase begin ============================= -// basic generator create test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest201, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - GenerateRsa768CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest202, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest203, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -// test generator by spec genrate key funciton not null -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest204, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfObjDestroy(generator); -} - -// test generator by spec get class string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest205, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecClass = generator->base.getClass(); - EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); - HcfObjDestroy(generator); -} - -// test generator by spec get getAlgName string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest206, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecAlgName = generator->getAlgName(generator); - EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); - HcfObjDestroy(generator); -} - -// test generator by spec basic destroy -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest207, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - generator->base.destroy(&(generator->base)); -} -// test correct spec and generate key pair, pri key, and pub key. -// pub spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest208, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest209, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest210, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest211, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest212, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest213, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check normal key function from key pairs of key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest214, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *keyPairClassName = keyPair->base.getClass(); - EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest215, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest216, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkClassName = keyPair->pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest217, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); - keyPair->pubKey = nullptr; - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest218, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest219, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest220, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest221, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest222, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_768_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest223, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *skClassName = keyPair->priKey->base.base.getClass(); - EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest224, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); - keyPair->priKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest225, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest226, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest227, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest228, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest229, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - - HcfFree(d.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest230, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest231, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest232, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest233, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest234, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest235, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest236, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_768_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check key function of pri key generated by key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest237, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkClassName = priKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest238, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - priKey->base.base.destroy(&(priKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest239, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *alg = priKey->base.getAlgorithm(&(priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest240, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest241, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkFormat = priKey->base.getFormat(&(priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest242, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest243, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - res = memcmp(d.data, dataD, RSA_768_D_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(d.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check key functions of pub key from pub key spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest244, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest245, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest246, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest247, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest248, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest249, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest250, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_768_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check encoded key pair's pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest251, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest252, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pub key spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest253, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest254, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_768_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest255, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest256, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_768_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest257, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pubKey spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest258, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_768_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest259, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA768", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check invalid get key functions of key pair's pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest260, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest261, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of key pair's pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest262, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); - - keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest263, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); - - keyPair->priKey->clearMem(keyPair->priKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest264, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest265, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest266, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest267, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecString, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 768 generate keyPair get all big int -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest268, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_768_D_BYTE_SIZE] = {0}; - GenerateRsa768CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - // generator key type from generator's spec - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - HcfPriKey *priKey = keyPair->priKey; - HcfPubKey *pubKey = keyPair->pubKey; - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - HcfBigInteger returnD = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - // check the array data - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnPriN.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnD.data, dataD, RSA_768_D_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_768_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - - HcfFree(returnPubN.data); - HcfFree(returnPriN.data); - HcfFree(returnD.data); - HcfFree(returnE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 768 generate pub key get -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest269, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_768_E_BYTE_SIZE] = {0}; - GenerateRsa768CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_768_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_768_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - HcfFree(returnPubN.data); - HcfFree(returnE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate incorrect case: RSA 768 generate common key spec (not support) -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest270, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - - unsigned char dataN[RSA_768_N_BYTE_SIZE] = {0}; - GenerateRsa768CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - HcfObjDestroy(generator); -} - -// ============================= RSA 768 testcase end ============================= - -// ============================= RSA 1024 testcase begin ============================= -// basic generator create test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest271, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest272, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest273, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -// test generator by spec genrate key funciton not null -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest274, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfObjDestroy(generator); -} - -// test generator by spec get class string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest275, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecClass = generator->base.getClass(); - EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); - HcfObjDestroy(generator); -} - -// test generator by spec get getAlgName string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest276, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecAlgName = generator->getAlgName(generator); - EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); - HcfObjDestroy(generator); -} - -// test generator by spec basic destroy -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest277, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - generator->base.destroy(&(generator->base)); -} -// test correct spec and generate key pair, pri key, and pub key. -// pub spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest278, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest279, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest280, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest281, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest282, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest283, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check normal key function from key pairs of key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest284, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *keyPairClassName = keyPair->base.getClass(); - EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest285, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest286, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkClassName = keyPair->pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest287, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); - keyPair->pubKey = nullptr; - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest288, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest289, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest290, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest291, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest292, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_1024_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest293, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *skClassName = keyPair->priKey->base.base.getClass(); - EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest294, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); - keyPair->priKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest295, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest296, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest297, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest298, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest299, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - - HcfFree(d.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest300, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest301, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest302, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest303, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest304, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest305, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest306, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_1024_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check key function of pri key generated by key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest307, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkClassName = priKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest308, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - priKey->base.base.destroy(&(priKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest309, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *alg = priKey->base.getAlgorithm(&(priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest310, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest311, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkFormat = priKey->base.getFormat(&(priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest312, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest313, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - res = memcmp(d.data, dataD, RSA_1024_D_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(d.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check key functions of pub key from pub key spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest314, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest315, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest316, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest317, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest318, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest319, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest320, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_1024_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check encoded key pair's pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest321, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest322, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pub key spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest323, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest324, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_1024_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest325, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest326, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_1024_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest327, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pubKey spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest328, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_1024_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest329, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check invalid get key functions of key pair's pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest330, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest331, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of key pair's pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest332, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); - - keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest333, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); - - keyPair->priKey->clearMem(keyPair->priKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest334, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest335, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest336, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest337, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecString, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 1024 generate keyPair get all big int -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest338, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_1024_D_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - // generator key type from generator's spec - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - HcfPriKey *priKey = keyPair->priKey; - HcfPubKey *pubKey = keyPair->pubKey; - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - HcfBigInteger returnD = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - // check the array data - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnPriN.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnD.data, dataD, RSA_1024_D_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_1024_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - - HcfFree(returnPubN.data); - HcfFree(returnPriN.data); - HcfFree(returnD.data); - HcfFree(returnE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 1024 generate pub key get -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest339, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_1024_E_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_1024_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_1024_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - HcfFree(returnPubN.data); - HcfFree(returnE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate incorrect case: RSA 1024 generate common key spec (not support) -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest340, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - - unsigned char dataN[RSA_1024_N_BYTE_SIZE] = {0}; - GenerateRsa1024CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - HcfObjDestroy(generator); -} -// ============================= RSA 1024 testcase end ============================= - - -// ============================= RSA 3072 testcase begin ============================= -// basic generator create test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest341, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest342, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest343, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -// test generator by spec genrate key funciton not null -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest344, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfObjDestroy(generator); -} - -// test generator by spec get class string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest345, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecClass = generator->base.getClass(); - EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); - HcfObjDestroy(generator); -} - -// test generator by spec get getAlgName string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest346, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecAlgName = generator->getAlgName(generator); - EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); - HcfObjDestroy(generator); -} - -// test generator by spec basic destroy -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest347, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - generator->base.destroy(&(generator->base)); -} -// test correct spec and generate key pair, pri key, and pub key. -// pub spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest348, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest349, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest350, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest351, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest352, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest353, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check normal key function from key pairs of key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest354, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *keyPairClassName = keyPair->base.getClass(); - EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest355, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest356, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkClassName = keyPair->pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest357, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); - keyPair->pubKey = nullptr; - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest358, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest359, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest360, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest361, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest362, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_3072_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest363, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *skClassName = keyPair->priKey->base.base.getClass(); - EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest364, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); - keyPair->priKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest365, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest366, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest367, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest368, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest369, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - - HcfFree(d.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest370, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest371, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest372, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest373, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest374, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest375, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest376, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_3072_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check key function of pri key generated by key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest377, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkClassName = priKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest378, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - priKey->base.base.destroy(&(priKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest379, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *alg = priKey->base.getAlgorithm(&(priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest380, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest381, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkFormat = priKey->base.getFormat(&(priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest382, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest383, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - res = memcmp(d.data, dataD, RSA_3072_D_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(d.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check key functions of pub key from pub key spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest384, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest385, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest386, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest387, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest388, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest389, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest390, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_3072_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check encoded key pair's pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest391, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest392, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pub key spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest393, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest394, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_3072_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest395, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest396, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_3072_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest397, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pubKey spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest398, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_3072_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest399, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA3072", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check invalid get key functions of key pair's pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest400, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest401, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of key pair's pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest402, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); - - keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest403, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); - - keyPair->priKey->clearMem(keyPair->priKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest404, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest405, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest406, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest407, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecString, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 3072 generate keyPair get all big int -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest408, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_3072_D_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - // generator key type from generator's spec - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - HcfPriKey *priKey = keyPair->priKey; - HcfPubKey *pubKey = keyPair->pubKey; - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - HcfBigInteger returnD = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - // check the array data - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnPriN.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnD.data, dataD, RSA_3072_D_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_3072_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - - HcfFree(returnPubN.data); - HcfFree(returnPriN.data); - HcfFree(returnD.data); - HcfFree(returnE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 3072 generate pub key get -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest409, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_3072_E_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_3072_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_3072_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - HcfFree(returnPubN.data); - HcfFree(returnE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate incorrect case: RSA 3072 generate common key spec (not support) -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest410, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - - unsigned char dataN[RSA_3072_N_BYTE_SIZE] = {0}; - GenerateRsa3072CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - HcfObjDestroy(generator); -} -// ============================= RSA 3072 testcase end ============================= - -// ============================= RSA 4096 testcase begin ============================= -// basic generator create test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest411, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest412, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest413, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -// test generator by spec genrate key funciton not null -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest414, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfObjDestroy(generator); -} - -// test generator by spec get class string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest415, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecClass = generator->base.getClass(); - EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); - HcfObjDestroy(generator); -} - -// test generator by spec get getAlgName string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest416, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecAlgName = generator->getAlgName(generator); - EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); - HcfObjDestroy(generator); -} - -// test generator by spec basic destroy -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest417, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - generator->base.destroy(&(generator->base)); -} -// test correct spec and generate key pair, pri key, and pub key. -// pub spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest418, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest419, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest420, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest421, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest422, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest423, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check normal key function from key pairs of key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest424, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *keyPairClassName = keyPair->base.getClass(); - EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest425, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest426, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkClassName = keyPair->pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest427, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); - keyPair->pubKey = nullptr; - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest428, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest429, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest430, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest431, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest432, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_4096_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest433, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *skClassName = keyPair->priKey->base.base.getClass(); - EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest434, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); - keyPair->priKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest435, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest436, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest437, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest438, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest439, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - - HcfFree(d.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest440, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest441, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest442, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest443, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest444, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest445, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest446, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_4096_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check key function of pri key generated by key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest447, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkClassName = priKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest448, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - priKey->base.base.destroy(&(priKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest449, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *alg = priKey->base.getAlgorithm(&(priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest450, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest451, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkFormat = priKey->base.getFormat(&(priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest452, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest453, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - res = memcmp(d.data, dataD, RSA_4096_D_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(d.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check key functions of pub key from pub key spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest454, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest455, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest456, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest457, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest458, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest459, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest460, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_4096_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check encoded key pair's pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest461, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest462, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pub key spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest463, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest464, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_4096_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest465, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest466, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_4096_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest467, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pubKey spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest468, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_4096_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest469, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA4096", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check invalid get key functions of key pair's pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest470, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest471, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of key pair's pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest472, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); - - keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest473, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); - - keyPair->priKey->clearMem(keyPair->priKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest474, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest475, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest476, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest477, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecString, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 4096 generate keyPair get all big int -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest478, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_4096_D_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - // generator key type from generator's spec - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - HcfPriKey *priKey = keyPair->priKey; - HcfPubKey *pubKey = keyPair->pubKey; - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - HcfBigInteger returnD = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - // check the array data - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnPriN.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnD.data, dataD, RSA_4096_D_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_4096_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - - HcfFree(returnPubN.data); - HcfFree(returnPriN.data); - HcfFree(returnD.data); - HcfFree(returnE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 4096 generate pub key get -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest479, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_4096_E_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_4096_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_4096_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - HcfFree(returnPubN.data); - HcfFree(returnE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate incorrect case: RSA 4096 generate common key spec (not support) -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest480, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - - unsigned char dataN[RSA_4096_N_BYTE_SIZE] = {0}; - GenerateRsa4096CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - HcfObjDestroy(generator); -} -// ============================= RSA 4096 testcase end ============================= - -// ============================= RSA 8192 testcase begin ============================= -// basic generator create test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest481, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest482, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest483, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfObjDestroy(generator); -} - -// test generator by spec genrate key funciton not null -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest484, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfObjDestroy(generator); -} - -// test generator by spec get class string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest485, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecClass = generator->base.getClass(); - EXPECT_STREQ(generatorBySpecClass, g_asyKeyGeneratorBySpecClass); - HcfObjDestroy(generator); -} - -// test generator by spec get getAlgName string test -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest486, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - const char *generatorBySpecAlgName = generator->getAlgName(generator); - EXPECT_STREQ(generatorBySpecAlgName, g_rsaAlgName); - HcfObjDestroy(generator); -} - -// test generator by spec basic destroy -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest487, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - generator->base.destroy(&(generator->base)); -} -// test correct spec and generate key pair, pri key, and pub key. -// pub spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest488, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest489, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest490, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_INVALID_PARAMS); - EXPECT_EQ(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest491, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest492, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest493, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check normal key function from key pairs of key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest494, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *keyPairClassName = keyPair->base.getClass(); - EXPECT_STREQ(keyPairClassName, OPENSSL_RSA_KEYPAIR_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest495, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest496, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkClassName = keyPair->pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest497, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); - keyPair->pubKey = nullptr; - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest498, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest499, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest500, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest501, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest502, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_8192_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest503, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *skClassName = keyPair->priKey->base.base.getClass(); - EXPECT_STREQ(skClassName, OPENSSL_RSA_PRIKEY_CLASS); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest504, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); - keyPair->priKey = nullptr; - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest505, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *alg = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest506, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest507, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest508, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - - HcfFree(n.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest509, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - const char *pkFormat = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - - HcfFree(d.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest510, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest511, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest512, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest513, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest514, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest515, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest516, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_8192_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check key function of pri key generated by key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest517, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkClassName = priKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PRIKEY_CLASS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest518, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - priKey->base.base.destroy(&(priKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest519, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *alg = priKey->base.getAlgorithm(&(priKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest520, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = priKey->base.getEncoded(&(priKey->base), &blob); - EXPECT_EQ(res, HCF_NOT_SUPPORT); - EXPECT_EQ(blob.data, nullptr); - EXPECT_EQ(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest521, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - const char *pkFormat = priKey->base.getFormat(&(priKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PRIKEY_FORMAT); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest522, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest523, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - HcfBigInteger d = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &d); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(d.data, nullptr); - EXPECT_NE(d.len, 0); - res = memcmp(d.data, dataD, RSA_8192_D_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(d.data); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// check key functions of pub key from pub key spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest524, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkClassName = pubKey->base.base.getClass(); - EXPECT_STREQ(pkClassName, OPENSSL_RSA_PUBKEY_CLASS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest525, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - pubKey->base.base.destroy(&(pubKey->base.base)); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest526, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *alg = pubKey->base.getAlgorithm(&(pubKey->base)); - EXPECT_STREQ(alg, OPENSSL_RSA_ALGORITHM); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest527, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - HcfFree(blob.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest528, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - const char *pkFormat = pubKey->base.getFormat(&(pubKey->base)); - EXPECT_STREQ(pkFormat, OPENSSL_RSA_PUBKEY_FORMAT); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest529, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger n = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &n); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(n.data, nullptr); - EXPECT_NE(n.len, 0); - res = memcmp(n.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(n.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest530, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger e = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &e); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(e.data, nullptr); - EXPECT_NE(e.len, 0); - res = memcmp(e.data, dataE, RSA_8192_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(e.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check encoded key pair's pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest531, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest532, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pub key spec and convert to pub key object -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest533, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfFree(blob.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded key pair's pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest534, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_8192_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest535, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - // encoded and convert key pair's pubKey - HcfPubKey *pubKey = keyPair->pubKey; - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from key pair spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest536, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_8192_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest537, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert key pair's pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check encoded pub key from pubKey spec, convert to pub key object and check the get function -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest538, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_PK_BN, &dupE); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupE.data, nullptr); - EXPECT_NE(dupE.len, 0); - res = memcmp(dupE.data, dataE, RSA_8192_E_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupE.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest539, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - // encoded and convert pubKey - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded(&(pubKey->base), &blob); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(blob.data, nullptr); - EXPECT_NE(blob.len, 0); - - HcfAsyKeyGenerator *generatorConvert = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA8192", &generatorConvert); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorConvert, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorConvert->convertKey(generatorConvert, nullptr, &blob, nullptr, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_EQ(dupKeyPair->priKey, nullptr); - EXPECT_NE(dupKeyPair->pubKey, nullptr); - - HcfBigInteger dupN = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(dupKeyPair->pubKey, RSA_N_BN, &dupN); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupN.data, nullptr); - EXPECT_NE(dupN.len, 0); - res = memcmp(dupN.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(res, 0); - - HcfFree(blob.data); - HcfFree(dupN.data); - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); - HcfObjDestroy(generatorConvert); -} - -// check invalid get key functions of key pair's pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest540, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest541, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of key pair's pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest542, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecInt, nullptr); - - keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest543, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - EXPECT_NE(keyPair->priKey->getAsyKeySpecString, nullptr); - - keyPair->priKey->clearMem(keyPair->priKey); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pub key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest544, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecInt, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest545, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - EXPECT_NE(pubKey->getAsyKeySpecString, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// check invalid get key functions of pri key from key pair spec -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest546, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecInt, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest547, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - EXPECT_EQ(CheckGeneratorBySpecKeyFunc(generator), true); - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(priKey, nullptr); - - EXPECT_NE(priKey->getAsyKeySpecString, nullptr); - - priKey->clearMem(priKey); - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 8192 generate keyPair get all big int -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest548, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_8192_D_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - // generator key type from generator's spec - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - HcfPriKey *priKey = keyPair->priKey; - HcfPubKey *pubKey = keyPair->pubKey; - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnPriN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - HcfBigInteger returnD = { .data = nullptr, .len = 0 }; - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - // check the array data - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnPriN.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnD.data, dataD, RSA_8192_D_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_8192_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - - HcfFree(returnPubN.data); - HcfFree(returnPriN.data); - HcfFree(returnD.data); - HcfFree(returnE.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate correct case: RSA 8192 generate pub key get -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest549, TestSize.Level0) -{ - HcfRsaPubKeyParamsSpec rsaPubKeySpec = {}; - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_8192_E_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPubKeySpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(pubKey, nullptr); - - HcfBigInteger returnPubN = { .data = nullptr, .len = 0 }; - HcfBigInteger returnE = { .data = nullptr, .len = 0 }; - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE); - EXPECT_EQ(res, HCF_SUCCESS); - - int memRes = 0; - memRes = memcmp(returnPubN.data, dataN, RSA_8192_N_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - memRes = memcmp(returnE.data, dataE, RSA_8192_E_BYTE_SIZE); - EXPECT_EQ(memRes, 0); - HcfFree(returnPubN.data); - HcfFree(returnE.data); - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -// HcfAsyKeyGeneratorCreate incorrect case: RSA 8192 generate common key spec (not support) -HWTEST_F(CryptoRsaAsyKeyGeneratorBySpecTest, CryptoRsaAsyKeyGeneratorBySpecTest550, TestSize.Level0) -{ - HcfRsaCommParamsSpec rsaCommSpec = {}; - - unsigned char dataN[RSA_8192_N_BYTE_SIZE] = {0}; - GenerateRsa8192CorrectCommonKeySpec(dataN, &rsaCommSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaCommSpec), &generator); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(generator, nullptr); - HcfObjDestroy(generator); -} -// ============================= RSA 8192 testcase end ============================= -} diff --git a/test/unittest/src/crypto_rsa_cipher_sub_test.cpp b/test/unittest/src/crypto_rsa_cipher_sub_test.cpp new file mode 100644 index 0000000..e7b4909 --- /dev/null +++ b/test/unittest/src/crypto_rsa_cipher_sub_test.cpp @@ -0,0 +1,720 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "securec.h" +#include "asy_key_generator.h" +#include "cipher.h" +#include "cipher_rsa_openssl.h" +#include "detailed_rsa_key_params.h" +#include "key_pair.h" +#include "memory.h" +#include "cstring" +#include "openssl_common.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoRsaCipherSubTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoRsaCipherSubTest::SetUpTestCase() {} +void CryptoRsaCipherSubTest::TearDownTestCase() {} +void CryptoRsaCipherSubTest::SetUp() {} +void CryptoRsaCipherSubTest::TearDown() {} + +namespace { +constexpr uint32_t RSA_2048_N_BYTE_SIZE = 256; +constexpr uint32_t RSA_2048_D_BYTE_SIZE = 256; +constexpr uint32_t RSA_2048_E_BYTE_SIZE = 3; + +constexpr unsigned char CORRECT_N[] = + "\x92\x60\xd0\x75\x0a\xe1\x17\xee\xe5\x5c\x3f\x3d\xea\xba\x74\x91" + "\x75\x21\xa2\x62\xee\x76\x00\x7c\xdf\x8a\x56\x75\x5a\xd7\x3a\x15" + "\x98\xa1\x40\x84\x10\xa0\x14\x34\xc3\xf5\xbc\x54\xa8\x8b\x57\xfa" + "\x19\xfc\x43\x28\xda\xea\x07\x50\xa4\xc4\x4e\x88\xcf\xf3\xb2\x38" + "\x26\x21\xb8\x0f\x67\x04\x64\x43\x3e\x43\x36\xe6\xd0\x03\xe8\xcd" + "\x65\xbf\xf2\x11\xda\x14\x4b\x88\x29\x1c\x22\x59\xa0\x0a\x72\xb7" + "\x11\xc1\x16\xef\x76\x86\xe8\xfe\xe3\x4e\x4d\x93\x3c\x86\x81\x87" + "\xbd\xc2\x6f\x7b\xe0\x71\x49\x3c\x86\xf7\xa5\x94\x1c\x35\x10\x80" + "\x6a\xd6\x7b\x0f\x94\xd8\x8f\x5c\xf5\xc0\x2a\x09\x28\x21\xd8\x62" + "\x6e\x89\x32\xb6\x5c\x5b\xd8\xc9\x20\x49\xc2\x10\x93\x2b\x7a\xfa" + "\x7a\xc5\x9c\x0e\x88\x6a\xe5\xc1\xed\xb0\x0d\x8c\xe2\xc5\x76\x33" + "\xdb\x26\xbd\x66\x39\xbf\xf7\x3c\xee\x82\xbe\x92\x75\xc4\x02\xb4" + "\xcf\x2a\x43\x88\xda\x8c\xf8\xc6\x4e\xef\xe1\xc5\xa0\xf5\xab\x80" + "\x57\xc3\x9f\xa5\xc0\x58\x9c\x3e\x25\x3f\x09\x60\x33\x23\x00\xf9" + "\x4b\xea\x44\x87\x7b\x58\x8e\x1e\xdb\xde\x97\xcf\x23\x60\x72\x7a" + "\x09\xb7\x75\x26\x2d\x7e\xe5\x52\xb3\x31\x9b\x92\x66\xf0\x5a\x25"; + +constexpr unsigned char CORRECT_E[] = "\x01\x00\x01"; + +constexpr unsigned char CORRECT_D[] = + "\x6a\x7d\xf2\xca\x63\xea\xd4\xdd\xa1\x91\xd6\x14\xb6\xb3\x85\xe0" + "\xd9\x05\x6a\x3d\x6d\x5c\xfe\x07\xdb\x1d\xaa\xbe\xe0\x22\xdb\x08" + "\x21\x2d\x97\x61\x3d\x33\x28\xe0\x26\x7c\x9d\xd2\x3d\x78\x7a\xbd" + "\xe2\xaf\xcb\x30\x6a\xeb\x7d\xfc\xe6\x92\x46\xcc\x73\xf5\xc8\x7f" + "\xdf\x06\x03\x01\x79\xa2\x11\x4b\x76\x7d\xb1\xf0\x83\xff\x84\x1c" + "\x02\x5d\x7d\xc0\x0c\xd8\x24\x35\xb9\xa9\x0f\x69\x53\x69\xe9\x4d" + "\xf2\x3d\x2c\xe4\x58\xbc\x3b\x32\x83\xad\x8b\xba\x2b\x8f\xa1\xba" + "\x62\xe2\xdc\xe9\xac\xcf\xf3\x79\x9a\xae\x7c\x84\x00\x16\xf3\xba" + "\x8e\x00\x48\xc0\xb6\xcc\x43\x39\xaf\x71\x61\x00\x3a\x5b\xeb\x86" + "\x4a\x01\x64\xb2\xc1\xc9\x23\x7b\x64\xbc\x87\x55\x69\x94\x35\x1b" + "\x27\x50\x6c\x33\xd4\xbc\xdf\xce\x0f\x9c\x49\x1a\x7d\x6b\x06\x28" + "\xc7\xc8\x52\xbe\x4f\x0a\x9c\x31\x32\xb2\xed\x3a\x2c\x88\x81\xe9" + "\xaa\xb0\x7e\x20\xe1\x7d\xeb\x07\x46\x91\xbe\x67\x77\x76\xa7\x8b" + "\x5c\x50\x2e\x05\xd9\xbd\xde\x72\x12\x6b\x37\x38\x69\x5e\x2d\xd1" + "\xa0\xa9\x8a\x14\x24\x7c\x65\xd8\xa7\xee\x79\x43\x2a\x09\x2c\xb0" + "\x72\x1a\x12\xdf\x79\x8e\x44\xf7\xcf\xce\x0c\x49\x81\x47\xa9\xb1"; + +const char *g_rsaAlgName = "RSA"; + +static const char *GetMockClass(void) +{ + return "Mock"; +} + +static HcfObjectBase g_obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; +} + +static void RemoveLastChar(const unsigned char *str, unsigned char *dest, uint32_t destLen) +{ + for (size_t i = 0; i < destLen; i++) { + dest[i] = str[i]; + } + return; +} + +static void EndianSwap(unsigned char *pData, int startIndex, int length) +{ + int cnt = length / 2; + int start = startIndex; + int end = startIndex + length - 1; + unsigned char tmp; + for (int i = 0; i < cnt; i++) { + tmp = pData[start + i]; + pData[start + i] = pData[end - i]; + pData[end - i] = tmp; + } +} + +// 2048 defined the length of byte array +static void GenerateRsa2048CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) +{ + RemoveLastChar(CORRECT_N, dataN, RSA_2048_N_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataN, 0, RSA_2048_N_BYTE_SIZE); + } + returnSpec->n.data = dataN; + returnSpec->n.len = RSA_2048_N_BYTE_SIZE; + returnSpec->base.algName = const_cast(g_rsaAlgName); + returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + return; +} + +static void GenerateRsa2048CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_2048_E_BYTE_SIZE); + RemoveLastChar(CORRECT_D, dataD, RSA_2048_D_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_2048_E_BYTE_SIZE); + EndianSwap(dataD, 0, RSA_2048_D_BYTE_SIZE); + } + returnPairSpec->pk.data = dataE; + returnPairSpec->pk.len = RSA_2048_E_BYTE_SIZE; + returnPairSpec->sk.data = dataD; + returnPairSpec->sk.len = RSA_2048_D_BYTE_SIZE; + returnPairSpec->base = rsaCommSpec; + returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest009, TestSize.Level0) +{ + uint8_t plan[] = "this is rsa cipher test!\0"; + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfBlob input = {.data = (uint8_t *)plan, .len = strlen((char *)plan)}; + HcfBlob encoutput = {.data = nullptr, .len = 0}; + HcfCipher *cipher = nullptr; + res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)keyPair->pubKey, nullptr); + EXPECT_EQ(res, HCF_SUCCESS); + + uint8_t pSourceData[] = "123456\0"; + HcfBlob pSource = {.data = (uint8_t *)pSourceData, .len = strlen((char *)pSourceData)}; + // enum error + res = cipher->setCipherSpecUint8Array(reinterpret_cast(&g_obj), + OAEP_MD_NAME_STR, pSource); + EXPECT_NE(res, HCF_SUCCESS); + res = cipher->doFinal(cipher, &input, &encoutput); + EXPECT_EQ(res, HCF_SUCCESS); + HcfObjDestroy(cipher); + + // free + HcfFree(encoutput.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest013, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfCipher *cipher = nullptr; + char *ret = nullptr; + res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->getCipherSpecString(reinterpret_cast(&g_obj), OAEP_MD_NAME_STR, &ret); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(ret, nullptr); + + HcfObjDestroy(cipher); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest017, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfCipher *cipher = nullptr; + HcfBlob retBlob = { .data = nullptr, .len = 0 }; + res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->getCipherSpecUint8Array(reinterpret_cast(&g_obj), OAEP_MGF1_PSRC_UINT8ARR, &retBlob); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(retBlob.data, nullptr); + + HcfObjDestroy(cipher); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest018, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfCipher *cipher = nullptr; + HcfBlob retBlob = { .data = nullptr, .len = 0 }; + res = HcfCipherCreate("RSA|PKCS1|SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &retBlob); + EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(retBlob.data, nullptr); + + HcfObjDestroy(cipher); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest019, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfCipher *cipher = nullptr; + HcfBlob retBlob = { .data = nullptr, .len = 0 }; + res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->setCipherSpecUint8Array(nullptr, OAEP_MD_NAME_STR, retBlob); + EXPECT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(cipher); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest020, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfCipher *cipher = nullptr; + HcfBlob retBlob = { .data = nullptr, .len = 0 }; + res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->setCipherSpecUint8Array(cipher, OAEP_MD_NAME_STR, retBlob); + EXPECT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(cipher); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest021, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfCipher *cipher = nullptr; + HcfBlob retBlob = { .data = nullptr, .len = 0 }; + res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->setCipherSpecUint8Array(reinterpret_cast(&g_obj), OAEP_MGF1_PSRC_UINT8ARR, retBlob); + EXPECT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(cipher); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest022, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + HcfCipher *cipher = nullptr; + HcfBlob retBlob = { .data = nullptr, .len = 0 }; + res = HcfCipherCreate("RSA|PKCS1|SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, retBlob); + EXPECT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(cipher); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest023, TestSize.Level0) +{ + HcfCipher *cipher = nullptr; + HcfResult res = HcfCipherCreate("RSA|PKCS1|SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->update(cipher, nullptr, nullptr); + EXPECT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(cipher); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest024, TestSize.Level0) +{ + HcfCipher *cipher = nullptr; + HcfResult res = HcfCipherCreate("RSA|PKCS1|SHA256", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + HcfBlob tmp = { .data = nullptr, .len = 0 }; + res = cipher->update(cipher, &tmp, nullptr); + EXPECT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(cipher); +} + +// spi test +// create +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest025, TestSize.Level0) +{ + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(nullptr, &spiObj); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(spiObj, nullptr); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest026, TestSize.Level0) +{ + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(nullptr, nullptr); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(spiObj, nullptr); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest027, TestSize.Level0) +{ + CipherAttr params = { + .algo = HCF_ALG_ECC, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(spiObj, nullptr); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest028, TestSize.Level0) +{ + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PSS_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(spiObj, nullptr); +} + +// init +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest029, TestSize.Level0) +{ + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->init(nullptr, ENCRYPT_MODE, nullptr, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest030, TestSize.Level0) +{ + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->init(spiObj, ENCRYPT_MODE, nullptr, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest031, TestSize.Level0) +{ + HcfRsaKeyPairParamsSpec rsaPairSpec = {}; + unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; + unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; + unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; + GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + EXPECT_EQ(res, HCF_SUCCESS); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->init(reinterpret_cast(&g_obj), + ENCRYPT_MODE, reinterpret_cast(keyPair->priKey), nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + HcfObjDestroy(spiObj); +} + +// destroy +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest032, TestSize.Level0) +{ + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(nullptr); + ASSERT_NE(spiObj, nullptr); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest033, TestSize.Level0) +{ + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(&g_obj); + ASSERT_NE(spiObj, nullptr); + + HcfObjDestroy(spiObj); +} + +// doFinal +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest034, TestSize.Level0) +{ + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->doFinal(nullptr, nullptr, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest035, TestSize.Level0) +{ + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->doFinal(spiObj, nullptr, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest036, TestSize.Level0) +{ + uint8_t plan[] = "this is rsa cipher test!\0"; + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfBlob input = { .data = reinterpret_cast(plan), + .len = strlen(reinterpret_cast(plan)) }; + res = spiObj->doFinal(spiObj, &input, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest037, TestSize.Level0) +{ + uint8_t plan[] = "this is rsa cipher test!\0"; + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfBlob input = { .data = reinterpret_cast(plan), + .len = strlen(reinterpret_cast(plan)) }; + HcfBlob output = { .data = nullptr, .len = 0 }; + res = spiObj->doFinal(reinterpret_cast(&g_obj), &input, &output); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoRsaCipherSubTest, CryptoRsaCipherTest038, TestSize.Level0) +{ + uint8_t plan[] = "this is rsa cipher test!\0"; + CipherAttr params = { + .algo = HCF_ALG_RSA, + .mode = HCF_ALG_MODE_NONE, + .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfCipherGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfBlob input = { .data = reinterpret_cast(plan), + .len = strlen(reinterpret_cast(plan)) }; + HcfBlob output = { .data = nullptr, .len = 0 }; + res = spiObj->doFinal(spiObj, &input, &output); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} +} diff --git a/test/unittest/src/crypto_rsa_cipher_test.cpp b/test/unittest/src/crypto_rsa_cipher_test.cpp index d7d72b6..200f29e 100644 --- a/test/unittest/src/crypto_rsa_cipher_test.cpp +++ b/test/unittest/src/crypto_rsa_cipher_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022-2023 Huawei Device Co., Ltd. + * Copyright (C) 2022-2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -85,18 +85,9 @@ constexpr unsigned char CORRECT_D[] = "\x72\x1a\x12\xdf\x79\x8e\x44\xf7\xcf\xce\x0c\x49\x81\x47\xa9\xb1"; const char *g_rsaAlgName = "RSA"; -const char *g_mdNmae = "SHA256"; +const char *g_mdName = "SHA256"; const char *g_mgf1Name = "MGF1"; -static const char *GetMockClass(void) -{ - return "Mock"; -} - -static HcfObjectBase g_obj = { - .getClass = GetMockClass, - .destroy = nullptr -}; } static void RemoveLastChar(const unsigned char *str, unsigned char *dest, uint32_t destLen) @@ -155,6 +146,68 @@ static void GenerateRsa2048CorrectKeyPairSpec(unsigned char *dataN, unsigned cha returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; } +static HcfResult RsaCipherSpec(HcfCipher *cipher) +{ + uint8_t pSourceData[] = "123456\0"; + HcfBlob pSource = {.data = (uint8_t *)pSourceData, .len = strlen((char *)pSourceData)}; + HcfResult res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); + EXPECT_EQ(res, HCF_SUCCESS); + + char *returnMdName = nullptr; + res = cipher->getCipherSpecString(cipher, OAEP_MD_NAME_STR, &returnMdName); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_STREQ(g_mdName, returnMdName); + char *returnMgF1Name = nullptr; + res = cipher->getCipherSpecString(cipher, OAEP_MGF_NAME_STR, &returnMgF1Name); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_STREQ(g_mgf1Name, returnMgF1Name); + char *returnMgf1MdName = nullptr; + res = cipher->getCipherSpecString(cipher, OAEP_MGF1_MD_STR, &returnMgf1MdName); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_STREQ(g_mdName, returnMgf1MdName); + + HcfBlob pSourceReturn = {.data = nullptr, .len = 0}; + res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); + EXPECT_EQ(res, HCF_SUCCESS); + int resCmp = memcmp(pSourceReturn.data, pSourceData, pSourceReturn.len); + EXPECT_EQ(resCmp, HCF_SUCCESS); + + HcfFree(pSourceReturn.data); + HcfFree(returnMdName); + HcfFree(returnMgF1Name); + HcfFree(returnMgf1MdName); + return res; +} + +static HcfResult RsaSpecpSource(HcfCipher *cipher, uint8_t *pSourceData, HcfBlob pSource) +{ + HcfBlob cleanP = { .data = nullptr, .len = 0 }; + HcfBlob pSourceReturn = {.data = nullptr, .len = 0}; + // test cipher psource set、get before init & set clean. + HcfResult res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); + EXPECT_EQ(res, HCF_SUCCESS); + int resCmp = memcmp(pSourceReturn.data, pSourceData, pSourceReturn.len); + EXPECT_EQ(resCmp, HCF_SUCCESS); + + res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, cleanP); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); + EXPECT_NE(res, HCF_SUCCESS) << "after clean, cannot get Psource"; + + HcfBlob pSourceReturn2 = {.data = nullptr, .len = 0}; + res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn2); + EXPECT_EQ(res, HCF_SUCCESS); + resCmp = memcmp(pSourceReturn2.data, pSourceData, pSourceReturn.len); + EXPECT_EQ(resCmp, 0); + HcfFree(pSourceReturn2.data); + HcfFree(pSourceReturn.data); + return res; +} + HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest90, TestSize.Level0) { HcfResult res = HCF_SUCCESS; @@ -1273,10 +1326,9 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest940, TestSize.Level0) // correct: test oaep pSource normal. HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest001, TestSize.Level0) { - HcfResult res = HCF_SUCCESS; uint8_t plan[] = "this is rsa cipher test!\0"; HcfAsyKeyGenerator *generator = nullptr; - res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator); + HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, nullptr, &keyPair); @@ -1284,7 +1336,7 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest001, TestSize.Level0) EXPECT_NE(keyPair, nullptr); EXPECT_NE(keyPair->priKey, nullptr); EXPECT_NE(keyPair->pubKey, nullptr); - + HcfBlob input = {.data = (uint8_t *)plan, .len = strlen((char *)plan)}; HcfBlob encoutput = {.data = nullptr, .len = 0}; HcfCipher *cipher = nullptr; @@ -1294,44 +1346,12 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest001, TestSize.Level0) res = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)keyPair->pubKey, nullptr); EXPECT_EQ(res, HCF_SUCCESS); - // test cipher encrypt psource set (should init at first) - uint8_t pSourceData[] = "123456\0"; - HcfBlob pSource = {.data = (uint8_t *)pSourceData, .len = strlen((char *)pSourceData)}; - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); - EXPECT_EQ(res, HCF_SUCCESS); - - // test cipher encrypt string get - char *returnMdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MD_NAME_STR, &returnMdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMdName); - char *returnMgF1Name = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF_NAME_STR, &returnMgF1Name); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mgf1Name, returnMgF1Name); - char *returnMgf1MdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF1_MD_STR, &returnMgf1MdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMgf1MdName); - - // test cipher encrypt bytes get - HcfBlob pSourceReturn = {.data = nullptr, .len = 0}; - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); + res = RsaCipherSpec(cipher); EXPECT_EQ(res, HCF_SUCCESS); - int resCmp = memcmp(pSourceReturn.data, pSourceData, pSourceReturn.len); - EXPECT_EQ(resCmp, 0); - res = cipher->doFinal(cipher, &input, &encoutput); EXPECT_EQ(res, HCF_SUCCESS); HcfObjDestroy(cipher); - // free encrpyt spec & cipher - HcfFree(pSourceReturn.data); - HcfFree(returnMdName); - HcfFree(returnMgF1Name); - HcfFree(returnMgf1MdName); - - // decrypt HcfBlob decoutput = {.data = nullptr, .len = 0}; cipher = nullptr; @@ -1341,31 +1361,9 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest001, TestSize.Level0) res = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)keyPair->priKey, nullptr); EXPECT_EQ(res, HCF_SUCCESS); - // test cipher decrypt psource set - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); - EXPECT_EQ(res, HCF_SUCCESS); - - // test cipher decrypt string get - returnMdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MD_NAME_STR, &returnMdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMdName); - returnMgF1Name = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF_NAME_STR, &returnMgF1Name); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mgf1Name, returnMgF1Name); - returnMgf1MdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF1_MD_STR, &returnMgf1MdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMgf1MdName); - // test cipher decrypt bytes get - pSourceReturn.data = nullptr; - pSourceReturn.len = 0; - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); + res = RsaCipherSpec(cipher); EXPECT_EQ(res, HCF_SUCCESS); - resCmp = memcmp(pSourceReturn.data, pSourceData, pSourceReturn.len); - EXPECT_EQ(resCmp, 0); res = cipher->doFinal(cipher, &encoutput, &decoutput); EXPECT_EQ(res, HCF_SUCCESS); @@ -1373,12 +1371,6 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest001, TestSize.Level0) EXPECT_STREQ((char *)plan, (char *)decoutput.data); - // free decrpyt spec - HcfFree(pSourceReturn.data); - HcfFree(returnMdName); - HcfFree(returnMgF1Name); - HcfFree(returnMgf1MdName); - HcfFree(encoutput.data); HcfFree(decoutput.data); @@ -1416,44 +1408,12 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest002, TestSize.Level0) res = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)keyPair->pubKey, nullptr); EXPECT_EQ(res, HCF_SUCCESS); - // test cipher encrypt psource set (should init at first) - uint8_t pSourceData[] = "123456\0"; - HcfBlob pSource = {.data = (uint8_t *)pSourceData, .len = strlen((char *)pSourceData)}; - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); - EXPECT_EQ(res, HCF_SUCCESS); - - // test cipher encrypt string get - char *returnMdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MD_NAME_STR, &returnMdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMdName); - char *returnMgF1Name = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF_NAME_STR, &returnMgF1Name); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mgf1Name, returnMgF1Name); - char *returnMgf1MdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF1_MD_STR, &returnMgf1MdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMgf1MdName); - - // test cipher encrypt bytes get - HcfBlob pSourceReturn = {.data = nullptr, .len = 0}; - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); + res = RsaCipherSpec(cipher); EXPECT_EQ(res, HCF_SUCCESS); - int resCmp = memcmp(pSourceReturn.data, pSourceData, pSourceReturn.len); - EXPECT_EQ(resCmp, 0); - res = cipher->doFinal(cipher, &input, &encoutput); EXPECT_EQ(res, HCF_SUCCESS); HcfObjDestroy(cipher); - // free encrpyt spec & cipher - HcfFree(pSourceReturn.data); - HcfFree(returnMdName); - HcfFree(returnMgF1Name); - HcfFree(returnMgf1MdName); - - // decrypt HcfBlob decoutput = {.data = nullptr, .len = 0}; cipher = nullptr; @@ -1464,44 +1424,15 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest002, TestSize.Level0) res = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)keyPair->priKey, nullptr); EXPECT_EQ(res, HCF_SUCCESS); - // test cipher decrypt psource set - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); - EXPECT_EQ(res, HCF_SUCCESS); - - // test cipher decrypt string get - returnMdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MD_NAME_STR, &returnMdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMdName); - returnMgF1Name = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF_NAME_STR, &returnMgF1Name); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mgf1Name, returnMgF1Name); - returnMgf1MdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF1_MD_STR, &returnMgf1MdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMgf1MdName); - - // test cipher decrypt bytes get - pSourceReturn.data = nullptr; - pSourceReturn.len = 0; - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); + res = RsaCipherSpec(cipher); EXPECT_EQ(res, HCF_SUCCESS); - resCmp = memcmp(pSourceReturn.data, pSourceData, pSourceReturn.len); - EXPECT_EQ(resCmp, 0); res = cipher->doFinal(cipher, &encoutput, &decoutput); EXPECT_EQ(res, HCF_SUCCESS); HcfObjDestroy(cipher); - + EXPECT_STREQ((char *)plan, (char *)decoutput.data); - // free decrpyt spec - HcfFree(pSourceReturn.data); - HcfFree(returnMdName); - HcfFree(returnMgF1Name); - HcfFree(returnMgf1MdName); - HcfFree(encoutput.data); HcfFree(decoutput.data); @@ -1594,33 +1525,8 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest005, TestSize.Level0) // remove 1024 res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); EXPECT_EQ(res, HCF_SUCCESS); - // test cipher encrypt psource set (before init) - uint8_t pSourceData[] = "123456\0"; - HcfBlob pSource = {.data = (uint8_t *)pSourceData, .len = strlen((char *)pSourceData)}; - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); - EXPECT_EQ(res, HCF_SUCCESS); - - // test cipher encrypt string get (before init) - char *returnMdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MD_NAME_STR, &returnMdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMdName); - char *returnMgF1Name = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF_NAME_STR, &returnMgF1Name); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mgf1Name, returnMgF1Name); - char *returnMgf1MdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF1_MD_STR, &returnMgf1MdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMgf1MdName); - - // test cipher encrypt bytes get(before init) - HcfBlob pSourceReturn = {.data = nullptr, .len = 0}; - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); + res = RsaCipherSpec(cipher); EXPECT_EQ(res, HCF_SUCCESS); - int resCmp = memcmp(pSourceReturn.data, pSourceData, pSourceReturn.len); - EXPECT_EQ(resCmp, 0); - res = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)keyPair->pubKey, nullptr); EXPECT_EQ(res, HCF_SUCCESS); @@ -1628,13 +1534,6 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest005, TestSize.Level0) EXPECT_EQ(res, HCF_SUCCESS); HcfObjDestroy(cipher); - // free encrpyt spec & cipher - HcfFree(pSourceReturn.data); - HcfFree(returnMdName); - HcfFree(returnMgF1Name); - HcfFree(returnMgf1MdName); - - // decrypt HcfBlob decoutput = {.data = nullptr, .len = 0}; cipher = nullptr; @@ -1644,31 +1543,9 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest005, TestSize.Level0) res = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)keyPair->priKey, nullptr); EXPECT_EQ(res, HCF_SUCCESS); - // test cipher decrypt psource set - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); - EXPECT_EQ(res, HCF_SUCCESS); - - // test cipher decrypt string get - returnMdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MD_NAME_STR, &returnMdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMdName); - returnMgF1Name = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF_NAME_STR, &returnMgF1Name); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mgf1Name, returnMgF1Name); - returnMgf1MdName = nullptr; - res = cipher->getCipherSpecString(cipher, OAEP_MGF1_MD_STR, &returnMgf1MdName); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_STREQ(g_mdNmae, returnMgf1MdName); - // test cipher decrypt bytes get - pSourceReturn.data = nullptr; - pSourceReturn.len = 0; - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); + res = RsaCipherSpec(cipher); EXPECT_EQ(res, HCF_SUCCESS); - resCmp = memcmp(pSourceReturn.data, pSourceData, pSourceReturn.len); - EXPECT_EQ(resCmp, 0); res = cipher->doFinal(cipher, &encoutput, &decoutput); EXPECT_EQ(res, HCF_SUCCESS); @@ -1676,12 +1553,6 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest005, TestSize.Level0) EXPECT_STREQ((char *)plan, (char *)decoutput.data); - // free decrpyt spec - HcfFree(pSourceReturn.data); - HcfFree(returnMdName); - HcfFree(returnMgF1Name); - HcfFree(returnMgf1MdName); - HcfFree(encoutput.data); HcfFree(decoutput.data); @@ -1692,9 +1563,7 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest005, TestSize.Level0) // double set test HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest004, TestSize.Level0) { - HcfResult res = HCF_SUCCESS; uint8_t plan[] = "This is cipher test.\0"; - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; @@ -1702,7 +1571,7 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest004, TestSize.Level0) GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); EXPECT_EQ(res, HCF_SUCCESS); EXPECT_NE(generator, nullptr); @@ -1721,29 +1590,8 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest004, TestSize.Level0) uint8_t pSourceData[] = "123456\0"; HcfBlob pSource = {.data = (uint8_t *)pSourceData, .len = strlen((char *)pSourceData)}; - HcfBlob cleanP = { .data = nullptr, .len = 0 }; - HcfBlob pSourceReturn = {.data = nullptr, .len = 0}; - // test cipher psource set、get before init & set clean. - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); - EXPECT_EQ(res, HCF_SUCCESS); - int resCmp = -1; - resCmp = memcmp(pSourceReturn.data, pSourceData, pSourceReturn.len); - EXPECT_EQ(resCmp, 0); - - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, cleanP); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn); - EXPECT_NE(res, HCF_SUCCESS) << "after clean, cannot get Psource"; - - HcfBlob pSourceReturn2 = {.data = nullptr, .len = 0}; - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, pSource); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &pSourceReturn2); + res = RsaSpecpSource(cipher, pSourceData, pSource); EXPECT_EQ(res, HCF_SUCCESS); - resCmp = memcmp(pSourceReturn2.data, pSourceData, pSourceReturn.len); - EXPECT_EQ(resCmp, 0); res = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)keyPair->pubKey, nullptr); EXPECT_EQ(res, HCF_SUCCESS); @@ -1769,9 +1617,6 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest004, TestSize.Level0) HcfFree(encoutput.data); HcfFree(decoutput.data); - HcfFree(pSourceReturn2.data); - HcfFree(pSourceReturn.data); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); } @@ -1885,9 +1730,9 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest008, TestSize.Level0) HcfObjDestroy(generator); } -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest009, TestSize.Level0) +// get func exception +HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest010, TestSize.Level0) { - uint8_t plan[] = "this is rsa cipher test!\0"; HcfRsaKeyPairParamsSpec rsaPairSpec = {}; unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; @@ -1902,33 +1747,18 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest009, TestSize.Level0) EXPECT_EQ(res, HCF_SUCCESS); EXPECT_NE(keyPair, nullptr); - HcfBlob input = {.data = (uint8_t *)plan, .len = strlen((char *)plan)}; - HcfBlob encoutput = {.data = nullptr, .len = 0}; HcfCipher *cipher = nullptr; res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)keyPair->pubKey, nullptr); - EXPECT_EQ(res, HCF_SUCCESS); - - uint8_t pSourceData[] = "123456\0"; - HcfBlob pSource = {.data = (uint8_t *)pSourceData, .len = strlen((char *)pSourceData)}; - // enum error - res = cipher->setCipherSpecUint8Array(reinterpret_cast(&g_obj), - OAEP_MD_NAME_STR, pSource); + res = cipher->getCipherSpecString(cipher, OAEP_MD_NAME_STR, nullptr); EXPECT_NE(res, HCF_SUCCESS); - res = cipher->doFinal(cipher, &input, &encoutput); - EXPECT_EQ(res, HCF_SUCCESS); HcfObjDestroy(cipher); - // free - HcfFree(encoutput.data); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); } -// get func exception -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest010, TestSize.Level0) +HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest011, TestSize.Level0) { HcfRsaKeyPairParamsSpec rsaPairSpec = {}; unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; @@ -1947,7 +1777,7 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest010, TestSize.Level0) HcfCipher *cipher = nullptr; res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->getCipherSpecString(cipher, OAEP_MD_NAME_STR, nullptr); + res = cipher->getCipherSpecString(nullptr, OAEP_MD_NAME_STR, nullptr); EXPECT_NE(res, HCF_SUCCESS); HcfObjDestroy(cipher); @@ -1955,7 +1785,7 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest010, TestSize.Level0) HcfObjDestroy(generator); } -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest011, TestSize.Level0) +HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest012, TestSize.Level0) { HcfRsaKeyPairParamsSpec rsaPairSpec = {}; unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; @@ -1972,77 +1802,20 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest011, TestSize.Level0) EXPECT_NE(keyPair, nullptr); HcfCipher *cipher = nullptr; + char *ret = nullptr; res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->getCipherSpecString(nullptr, OAEP_MD_NAME_STR, nullptr); + res = cipher->getCipherSpecString(cipher, OAEP_MGF1_PSRC_UINT8ARR, &ret); EXPECT_NE(res, HCF_SUCCESS); + EXPECT_EQ(ret, nullptr); + HcfObjDestroy(cipher); HcfObjDestroy(keyPair); HcfObjDestroy(generator); } -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest012, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfCipher *cipher = nullptr; - char *ret = nullptr; - res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->getCipherSpecString(cipher, OAEP_MGF1_PSRC_UINT8ARR, &ret); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(ret, nullptr); - - HcfObjDestroy(cipher); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest013, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfCipher *cipher = nullptr; - char *ret = nullptr; - res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->getCipherSpecString(reinterpret_cast(&g_obj), OAEP_MD_NAME_STR, &ret); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(ret, nullptr); - - HcfObjDestroy(cipher); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest014, TestSize.Level0) +HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest014, TestSize.Level0) { HcfRsaKeyPairParamsSpec rsaPairSpec = {}; unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; @@ -2125,497 +1898,4 @@ HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest016, TestSize.Level0) HcfObjDestroy(keyPair); HcfObjDestroy(generator); } - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest017, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfCipher *cipher = nullptr; - HcfBlob retBlob = { .data = nullptr, .len = 0 }; - res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->getCipherSpecUint8Array(reinterpret_cast(&g_obj), OAEP_MGF1_PSRC_UINT8ARR, &retBlob); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(retBlob.data, nullptr); - - HcfObjDestroy(cipher); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest018, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfCipher *cipher = nullptr; - HcfBlob retBlob = { .data = nullptr, .len = 0 }; - res = HcfCipherCreate("RSA|PKCS1|SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->getCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, &retBlob); - EXPECT_NE(res, HCF_SUCCESS); - EXPECT_EQ(retBlob.data, nullptr); - - HcfObjDestroy(cipher); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest019, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfCipher *cipher = nullptr; - HcfBlob retBlob = { .data = nullptr, .len = 0 }; - res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->setCipherSpecUint8Array(nullptr, OAEP_MD_NAME_STR, retBlob); - EXPECT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(cipher); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest020, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfCipher *cipher = nullptr; - HcfBlob retBlob = { .data = nullptr, .len = 0 }; - res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MD_NAME_STR, retBlob); - EXPECT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(cipher); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest021, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfCipher *cipher = nullptr; - HcfBlob retBlob = { .data = nullptr, .len = 0 }; - res = HcfCipherCreate("RSA|PKCS1_OAEP|SHA256|MGF1_SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->setCipherSpecUint8Array(reinterpret_cast(&g_obj), OAEP_MGF1_PSRC_UINT8ARR, retBlob); - EXPECT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(cipher); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest022, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - HcfCipher *cipher = nullptr; - HcfBlob retBlob = { .data = nullptr, .len = 0 }; - res = HcfCipherCreate("RSA|PKCS1|SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->setCipherSpecUint8Array(cipher, OAEP_MGF1_PSRC_UINT8ARR, retBlob); - EXPECT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(cipher); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest023, TestSize.Level0) -{ - HcfCipher *cipher = nullptr; - HcfResult res = HcfCipherCreate("RSA|PKCS1|SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->update(cipher, nullptr, nullptr); - EXPECT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(cipher); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest024, TestSize.Level0) -{ - HcfCipher *cipher = nullptr; - HcfResult res = HcfCipherCreate("RSA|PKCS1|SHA256", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - HcfBlob tmp = { .data = nullptr, .len = 0 }; - res = cipher->update(cipher, &tmp, nullptr); - EXPECT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(cipher); -} - -// spi test -// create -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest025, TestSize.Level0) -{ - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(nullptr, &spiObj); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(spiObj, nullptr); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest026, TestSize.Level0) -{ - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(nullptr, nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(spiObj, nullptr); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest027, TestSize.Level0) -{ - CipherAttr params = { - .algo = HCF_ALG_ECC, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(spiObj, nullptr); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest028, TestSize.Level0) -{ - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PSS_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(spiObj, nullptr); -} - -// init -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest029, TestSize.Level0) -{ - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->init(nullptr, ENCRYPT_MODE, nullptr, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest030, TestSize.Level0) -{ - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->init(spiObj, ENCRYPT_MODE, nullptr, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest031, TestSize.Level0) -{ - HcfRsaKeyPairParamsSpec rsaPairSpec = {}; - unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0}; - unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0}; - unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0}; - GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&rsaPairSpec), &generator); - EXPECT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->init(reinterpret_cast(&g_obj), - ENCRYPT_MODE, reinterpret_cast(keyPair->priKey), nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); - HcfObjDestroy(spiObj); -} - -// destroy -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest032, TestSize.Level0) -{ - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(nullptr); - ASSERT_NE(spiObj, nullptr); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest033, TestSize.Level0) -{ - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(&g_obj); - ASSERT_NE(spiObj, nullptr); - - HcfObjDestroy(spiObj); -} - -// doFinal -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest034, TestSize.Level0) -{ - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->doFinal(nullptr, nullptr, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest035, TestSize.Level0) -{ - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->doFinal(spiObj, nullptr, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest036, TestSize.Level0) -{ - uint8_t plan[] = "this is rsa cipher test!\0"; - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfBlob input = { .data = reinterpret_cast(plan), - .len = strlen(reinterpret_cast(plan)) }; - res = spiObj->doFinal(spiObj, &input, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest037, TestSize.Level0) -{ - uint8_t plan[] = "this is rsa cipher test!\0"; - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfBlob input = { .data = reinterpret_cast(plan), - .len = strlen(reinterpret_cast(plan)) }; - HcfBlob output = { .data = nullptr, .len = 0 }; - res = spiObj->doFinal(reinterpret_cast(&g_obj), &input, &output); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoRsaCipherTest, CryptoRsaCipherTest038, TestSize.Level0) -{ - uint8_t plan[] = "this is rsa cipher test!\0"; - CipherAttr params = { - .algo = HCF_ALG_RSA, - .mode = HCF_ALG_MODE_NONE, - .paddingMode = HCF_OPENSSL_RSA_PKCS1_PADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfCipherGeneratorSpi *spiObj = nullptr; - HcfResult res = HcfCipherRsaCipherSpiCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfBlob input = { .data = reinterpret_cast(plan), - .len = strlen(reinterpret_cast(plan)) }; - HcfBlob output = { .data = nullptr, .len = 0 }; - res = spiObj->doFinal(spiObj, &input, &output); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} } diff --git a/test/unittest/src/crypto_sm2_asy_key_generator_test.cpp b/test/unittest/src/crypto_sm2_asy_key_generator_test.cpp index 14be064..ebe18b1 100644 --- a/test/unittest/src/crypto_sm2_asy_key_generator_test.cpp +++ b/test/unittest/src/crypto_sm2_asy_key_generator_test.cpp @@ -19,6 +19,7 @@ #include "asy_key_generator.h" #include "sm2_asy_key_generator_openssl.h" #include "blob.h" +#include "memory.h" #include "memory_mock.h" #include "openssl_adapter_mock.h" #include "params_parser.h" @@ -487,7 +488,7 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorTest, CryptoSm2AsyKeyGeneratorTest031, TestSize ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -716,7 +717,7 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorTest, CryptoSm2AsyKeyGeneratorTest048, TestSize ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1047,7 +1048,7 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorTest, CryptoSm2AsyKeyGeneratorTest073, TestSize ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1276,7 +1277,7 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorTest, CryptoSm2AsyKeyGeneratorTest090, TestSize ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1364,10 +1365,10 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorTest, CryptoSm2AsyKeyGeneratorTest094, TestSize ASSERT_NE(outPriKeyBlob.data, nullptr); ASSERT_NE(outPriKeyBlob.len, 0); - free(pubKeyBlob.data); - free(priKeyBlob.data); - free(outPubKeyBlob.data); - free(outPriKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); + HcfFree(outPubKeyBlob.data); + HcfFree(outPriKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1406,8 +1407,8 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorTest, CryptoSm2AsyKeyGeneratorTest095, TestSize ASSERT_NE(outPubKeyBlob.data, nullptr); ASSERT_NE(outPubKeyBlob.len, 0); - free(pubKeyBlob.data); - free(outPubKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(outPubKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1446,8 +1447,8 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorTest, CryptoSm2AsyKeyGeneratorTest096, TestSize ASSERT_NE(outPriKeyBlob.data, nullptr); ASSERT_NE(outPriKeyBlob.len, 0); - free(priKeyBlob.data); - free(outPriKeyBlob.data); + HcfFree(priKeyBlob.data); + HcfFree(outPriKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1562,15 +1563,15 @@ static void MemoryMallocTestFunc(uint32_t mallocCount) }; res = tmpKeyPair->priKey->base.getEncoded(&(tmpKeyPair->priKey->base), &tmpPriKeyBlob); if (res != HCF_SUCCESS) { - free(tmpPubKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); continue; } HcfKeyPair *tmpOutKeyPair = nullptr; res = tmpGenerator->convertKey(tmpGenerator, nullptr, &tmpPubKeyBlob, &tmpPriKeyBlob, &tmpOutKeyPair); - free(tmpPubKeyBlob.data); - free(tmpPriKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); + HcfFree(tmpPriKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); if (res == HCF_SUCCESS) { @@ -1608,8 +1609,8 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorTest, CryptoSm2AsyKeyGeneratorTest104, TestSize HcfKeyPair *outKeyPair = nullptr; res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); - free(pubKeyBlob.data); - free(priKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -1652,15 +1653,15 @@ static void OpensslMockTestFunc(uint32_t mallocCount) }; res = tmpKeyPair->priKey->base.getEncoded(&(tmpKeyPair->priKey->base), &tmpPriKeyBlob); if (res != HCF_SUCCESS) { - free(tmpPubKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); continue; } HcfKeyPair *tmpOutKeyPair = nullptr; res = tmpGenerator->convertKey(tmpGenerator, nullptr, &tmpPubKeyBlob, &tmpPriKeyBlob, &tmpOutKeyPair); - free(tmpPubKeyBlob.data); - free(tmpPriKeyBlob.data); + HcfFree(tmpPubKeyBlob.data); + HcfFree(tmpPriKeyBlob.data); HcfObjDestroy(tmpKeyPair); HcfObjDestroy(tmpGenerator); if (res == HCF_SUCCESS) { @@ -1698,8 +1699,8 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorTest, CryptoSm2AsyKeyGeneratorTest105, TestSize HcfKeyPair *outKeyPair = nullptr; res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); - free(pubKeyBlob.data); - free(priKeyBlob.data); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); HcfObjDestroy(outKeyPair); HcfObjDestroy(keyPair); HcfObjDestroy(generator); diff --git a/test/unittest/src/crypto_sm2_sign_test.cpp b/test/unittest/src/crypto_sm2_sign_test.cpp index 944c68d..d883e60 100644 --- a/test/unittest/src/crypto_sm2_sign_test.cpp +++ b/test/unittest/src/crypto_sm2_sign_test.cpp @@ -53,7 +53,7 @@ void CryptoSm2SignTest::TearDown() {} void CryptoSm2SignTest::SetUpTestCase() { HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("SM2_256", &generator); + HcfResult res = HcfAsyKeyGeneratorCreate("SM2_256", &generator); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); @@ -82,75 +82,62 @@ static HcfObjectBase obj = { .destroy = nullptr }; -HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest001, TestSize.Level0) +static HcfResult HcfSignCreateTest(const char *algName) { HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("SM2|SM3", &sign); + HcfResult res = HcfSignCreate(algName, &sign); + if (res == HCF_SUCCESS) { + HcfObjDestroy(sign); + } + return res; +} +HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest001, TestSize.Level0) +{ + HcfResult res = HcfSignCreateTest("SM2|SM3"); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - HcfObjDestroy(sign); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest002, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate(nullptr, &sign); - + HcfResult res = HcfSignCreateTest(nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(sign, nullptr); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest003, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD" - "ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD", &sign); - + HcfResult res = HcfSignCreateTest("ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD" + "ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD"); ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(sign, nullptr); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest004, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("SM5|SM3", &sign); - + HcfResult res = HcfSignCreateTest("SM5|SM3"); ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(sign, nullptr); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest005, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("SM2|SM5", &sign); - + HcfResult res = HcfSignCreateTest("SM2|SM5"); ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(sign, nullptr); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest006, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("SM2|MD5", &sign); - + HcfResult res = HcfSignCreateTest("SM2|MD5"); ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(sign, nullptr); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest007, TestSize.Level0) { - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("SM2SM3", &sign); - + HcfResult res = HcfSignCreateTest("SM2SM3"); ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(sign, nullptr); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest008, TestSize.Level0) { - int32_t res = HcfSignCreate("SM2|SM3", nullptr); + HcfResult res = HcfSignCreate("SM2|SM3", nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); } @@ -442,7 +429,7 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest025, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -465,7 +452,7 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest026, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -639,8 +626,8 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest032, TestSize.Level0) flag = verify->verify(verify, nullptr, &out2); ASSERT_EQ(flag, true); - free(out.data); - free(out2.data); + HcfFree(out.data); + HcfFree(out2.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -673,31 +660,19 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest033, TestSize.Level0) HcfBlob out2 = { .data = nullptr, .len = 0 }; res = sign->sign(sign, nullptr, &out2); - free(out2.data); + HcfFree(out2.data); HcfObjDestroy(sign); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest034, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("SM2_256", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - HcfSign *sign = nullptr; - res = HcfSignCreate("SM2|SM3", &sign); + HcfResult res = HcfSignCreate("SM2|SM3", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); + res = sign->init(sign, ¶ms, sm2256KeyPair_->priKey); ASSERT_EQ(res, HCF_SUCCESS); const char *message = "hello world"; @@ -712,31 +687,19 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest034, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest035, TestSize.Level0) { - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("SM2_256", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - HcfSign *sign = nullptr; - res = HcfSignCreate("SM2|SM3", &sign); + HcfResult res = HcfSignCreate("SM2|SM3", &sign); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(sign, nullptr); HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); + res = sign->init(sign, ¶ms, sm2256KeyPair_->priKey); ASSERT_EQ(res, HCF_SUCCESS); const char *message = "hello world"; @@ -753,14 +716,14 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest035, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest036, TestSize.Level0) { HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiSm2Create(nullptr, &spiObj); + HcfResult res = HcfSignSpiSm2Create(nullptr, &spiObj); ASSERT_EQ(res, HCF_INVALID_PARAMS); ASSERT_EQ(spiObj, nullptr); @@ -772,8 +735,7 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest037, TestSize.Level0) .algo = HCF_ALG_SM2, .md = HCF_OPENSSL_DIGEST_SM3, }; - int32_t res = HcfSignSpiSm2Create(¶ms, nullptr); - + HcfResult res = HcfSignSpiSm2Create(¶ms, nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); } @@ -784,7 +746,7 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest038, TestSize.Level0) .md = HCF_OPENSSL_DIGEST_SM3, }; HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiSm2Create(¶ms, &spiObj); + HcfResult res = HcfSignSpiSm2Create(¶ms, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -802,7 +764,7 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest039, TestSize.Level0) .md = HCF_OPENSSL_DIGEST_SM3, }; HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiSm2Create(¶ms, &spiObj); + HcfResult res = HcfSignSpiSm2Create(¶ms, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -895,7 +857,7 @@ static void MemoryMallocTestFunc(uint32_t mallocCount, HcfBlob *input) HcfObjDestroy(sign); HcfObjDestroy(keyPair); if (res == HCF_SUCCESS) { - free(out.data); + HcfFree(out.data); } } } @@ -938,7 +900,7 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest042, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(keyPair); HcfObjDestroy(sign); @@ -997,7 +959,7 @@ static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *input) HcfObjDestroy(sign); HcfObjDestroy(keyPair); if (res == HCF_SUCCESS) { - free(out.data); + HcfFree(out.data); } } } @@ -1044,7 +1006,7 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest043, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(keyPair); @@ -1387,7 +1349,7 @@ HWTEST_F(CryptoSm2SignTest, CryptoSm2SignTest060, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } diff --git a/test/unittest/src/crypto_sm2_verify_test.cpp b/test/unittest/src/crypto_sm2_verify_test.cpp index 8dc4362..27fa1fe 100644 --- a/test/unittest/src/crypto_sm2_verify_test.cpp +++ b/test/unittest/src/crypto_sm2_verify_test.cpp @@ -460,7 +460,7 @@ HWTEST_F(CryptoSm2VerifyTest, CryptoSm2VerifyTest025, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -498,7 +498,7 @@ HWTEST_F(CryptoSm2VerifyTest, CryptoSm2VerifyTest026, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -544,7 +544,7 @@ HWTEST_F(CryptoSm2VerifyTest, CryptoSm2VerifyTest027, TestSize.Level0) ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -590,7 +590,7 @@ HWTEST_F(CryptoSm2VerifyTest, CryptoSm2VerifyTest028, TestSize.Level0) ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -632,7 +632,7 @@ HWTEST_F(CryptoSm2VerifyTest, CryptoSm2VerifyTest029, TestSize.Level0) ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -678,7 +678,7 @@ HWTEST_F(CryptoSm2VerifyTest, CryptoSm2VerifyTest030, TestSize.Level0) ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -724,7 +724,7 @@ HWTEST_F(CryptoSm2VerifyTest, CryptoSm2VerifyTest031, TestSize.Level0) ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } diff --git a/test/unittest/src/crypto_sm4_cfb_cipher_test.cpp b/test/unittest/src/crypto_sm4_cfb_cipher_test.cpp new file mode 100644 index 0000000..70018ea --- /dev/null +++ b/test/unittest/src/crypto_sm4_cfb_cipher_test.cpp @@ -0,0 +1,871 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" +#include "sm4_common.h" +#include "sm4_openssl.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoSM4CfbCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest010, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed! "); + goto clearup; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest011, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed! "); + goto clearup; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest012, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed! "); + goto clearup; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest013, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB128|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed! "); + goto clearup; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest014, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB128|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed! "); + goto clearup; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest015, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB128|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed! "); + goto clearup; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest028, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateEncrypt failed! "); + goto clearup; + } + + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateDecrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest029, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateEncrypt failed! "); + goto clearup; + } + + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateDecrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest030, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateEncrypt failed! "); + goto clearup; + } + + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateDecrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest031, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB128|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateEncrypt failed! "); + goto clearup; + } + + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateDecrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest032, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB128|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateEncrypt failed! "); + goto clearup; + } + + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateDecrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest033, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|CFB128|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateEncrypt failed! "); + goto clearup; + } + + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateDecrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest040, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + const char *cipherName = "SM4_128|CFB|NoPadding"; + const char *retAlgo = nullptr; + ret = HcfCipherCreate(cipherName, &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + retAlgo = cipher->getAlgorithm(nullptr); + if (retAlgo == nullptr) { + LOGE("cipher getAlgorithm failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest041, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKeyGenerator *generator = nullptr; + const char *cipherName = "SM4_128|CFB|NoPadding"; + const char *retAlgo = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate(cipherName, &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + retAlgo = cipher->getAlgorithm(reinterpret_cast(generator)); + if (retAlgo == nullptr) { + LOGE("cipher getAlgorithm failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + } + +CLEAR_UP: + HcfObjDestroy(generator); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest042, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate("SM3|CFB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed! Should not select SM3 for CFB generator."); + } + + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest043, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + + // not allow '|' without content, because findAbility will fail for "" input + ret = HcfCipherCreate("SM4_128|CFB|", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed! Should select padding mode for SM4_128 generator."); + } + + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest047, TestSize.Level0) +{ + int ret = 0; + + ret = HcfCipherCreate(nullptr, nullptr); + if (ret != 0) { + LOGE("HcfCipherCreate failed! Should not select SM3 for CFB generator."); + } + + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoAesCipherTest050, TestSize.Level0) +{ + int ret = 0; + uint8_t aad[8] = {0}; + uint8_t tag[12] = {0}; + uint8_t iv[7] = {0}; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfCcmParamsSpec spec = {}; + spec.aad.data = aad; + spec.aad.len = sizeof(aad); + spec.tag.data = tag; + spec.tag.len = sizeof(tag); + spec.iv.data = iv; + spec.iv.len = sizeof(iv); + + ret = GenerateSymKeyForSm4("SM4_128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("SM4_128|CFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = Sm4Encrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed!"); + goto CLEAR_UP; + } + + (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); + + cipherTextLen -= 12; + + ret = Sm4Decrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed!"); + goto CLEAR_UP; + } + +CLEAR_UP: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoAesCipherTest051, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + const char *cipherName = "SM4_128|CFB|NoPadding"; + const char *retAlgo = nullptr; + ret = HcfCipherCreate(cipherName, &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + retAlgo = cipher->getAlgorithm(cipher); + if (retAlgo == nullptr) { + LOGE("cipher getAlgorithm failed!"); + ret = HCF_ERR_CRYPTO_OPERATION; + goto CLEAR_UP; + } + + ret = strcmp(retAlgo, cipherName); + if (ret != 0) { + LOGE("cipher getAlgorithm failed!"); + } +CLEAR_UP: + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest082, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKeyForSm4("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("SM4_128|CFB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + // It is not allowed that AES128 in key is smaller AES256 in cipher. -> now only use the size of input key. + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4CfbCipherTest, CryptoSm4CipherTest083, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKeyForSm4("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("SM4_128|CFB128|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + // It is not allowed that AES128 in key is smaller AES256 in cipher. -> now only use the size of input key. + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_sm4_cipher_test.cpp b/test/unittest/src/crypto_sm4_cipher_test.cpp index aee4595..60d9c55 100644 --- a/test/unittest/src/crypto_sm4_cipher_test.cpp +++ b/test/unittest/src/crypto_sm4_cipher_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Huawei Device Co., Ltd. + * Copyright (C) 2022-2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -27,306 +27,27 @@ #include "memory.h" #include "sym_common_defines.h" #include "sym_key_generator.h" +#include "sm4_common.h" #include "sm4_openssl.h" using namespace std; using namespace testing::ext; namespace { -constexpr int32_t PLAINTEXT_LEN = 13; -constexpr int32_t CIPHER_TEXT_LEN = 128; -constexpr int32_t AES_IV_LEN = 16; // iv for CBC|CTR|OFB|CFB mode class CryptoSM4CipherTest : public testing::Test { public: - static void SetUpTestCase(); - static void TearDownTestCase(); - void SetUp(); - void TearDown(); + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; }; -void CryptoSM4CipherTest::SetUpTestCase() {} -void CryptoSM4CipherTest::TearDownTestCase() {} - -void CryptoSM4CipherTest::SetUp() // add init here, this will be called before test. -{ -} - -void CryptoSM4CipherTest::TearDown() // add destroy here, this will be called when test case done. -{ -} - -static HcfResult GenerateSm4SymKey(HcfSymKey **key) -{ - HcfSymKeyGenerator *generator = nullptr; - - HcfResult ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != HCF_SUCCESS) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - return ret; - } - - ret = generator->generateSymKey(generator, key); - if (ret != HCF_SUCCESS) { - LOGE("generateSymKey failed!"); - } - HcfObjDestroy(generator); - return ret; -} - -static int32_t GenerateSymKey(const char *algoName, HcfSymKey **key) -{ - HcfSymKeyGenerator *generator = nullptr; - - int32_t ret = HcfSymKeyGeneratorCreate(algoName, &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - return ret; - } - - ret = generator->generateSymKey(generator, key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - HcfObjDestroy((HcfObjectBase *)generator); - return ret; -} - - -// use ECB, test abnormal input -static int32_t Sm4EncryptWithInput(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, - uint8_t *cipherText, int *cipherTextLen) -{ - HcfBlob output = { .data = nullptr, .len = 0 }; - int32_t maxLen = *cipherTextLen; - int32_t ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! %d", ret); - return ret; - } - - ret = cipher->update(cipher, input, &output); - if (ret != 0) { - LOGE("update failed!"); - return ret; - } - *cipherTextLen = output.len; - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - HcfBlobDataFree(&output); - } - - ret = cipher->doFinal(cipher, nullptr, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText + *cipherTextLen, maxLen - *cipherTextLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - *cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - - return 0; -} - -// test encrypt and decrypt with null plain text -static int32_t Sm4DecryptEmptyMsg(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int cipherTextLen) -{ - HcfBlob input = { .data = cipherText, .len = cipherTextLen }; - HcfBlob output = { .data = nullptr, .len = 0 }; - int32_t ret = cipher->init(cipher, DECRYPT_MODE, &(key->key), params); - if (ret != 0) { - LOGE("init failed! %d", ret); - return ret; - } - - ret = cipher->doFinal(cipher, &input, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.len == 0 && output.data == nullptr) { - ret = 0; - } else { - ret = -1; - } - HcfBlobDataFree(&output); - return ret; -} - - -static int32_t Sm4Encrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int *cipherTextLen) -{ - uint8_t plainText[] = "this is test!"; - HcfBlob input = {.data = (uint8_t *)plainText, .len = 13}; - HcfBlob output = {}; - int32_t maxLen = *cipherTextLen; - int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! "); - return ret; - } - - ret = cipher->update(cipher, &input, &output); - if (ret != 0) { - LOGE("update failed!"); - return ret; - } - *cipherTextLen = output.len; - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - HcfBlobDataFree(&output); - } - - ret = cipher->doFinal(cipher, nullptr, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText + *cipherTextLen, maxLen - *cipherTextLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - *cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - return 0; -} - -static int32_t Sm4Decrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int cipherTextLen) -{ - uint8_t plainText[] = "this is test!"; - HcfBlob input = {.data = (uint8_t *)cipherText, .len = cipherTextLen}; - HcfBlob output = {}; - int32_t maxLen = cipherTextLen; - int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! "); - return ret; - } - - ret = cipher->update(cipher, &input, &output); - if (ret != 0) { - LOGE("update failed!"); - return ret; - } - cipherTextLen = output.len; - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - HcfBlobDataFree(&output); - } - - ret = cipher->doFinal(cipher, nullptr, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText + cipherTextLen, maxLen - cipherTextLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - - if (cipherTextLen != sizeof(plainText) - 1) { - return -1; - } - return memcmp(cipherText, plainText, cipherTextLen); -} - -static int32_t Sm4NoUpdateEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int *cipherTextLen) -{ - uint8_t plainText[] = "this is test!"; - HcfBlob input = {.data = (uint8_t *)plainText, .len = 13}; - HcfBlob output = {}; - int32_t maxLen = *cipherTextLen; - int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! "); - return ret; - } - - *cipherTextLen = 0; - ret = cipher->doFinal(cipher, &input, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - *cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - return 0; -} - -static int32_t Sm4NoUpdateDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, - uint8_t *cipherText, int cipherTextLen) -{ - uint8_t plainText[] = "this is test!"; - HcfBlob input = {.data = (uint8_t *)cipherText, .len = cipherTextLen}; - HcfBlob output = {}; - int32_t maxLen = cipherTextLen; - int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); - if (ret != 0) { - LOGE("init failed! "); - return ret; - } - - cipherTextLen = 0; - ret = cipher->doFinal(cipher, &input, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - return ret; - } - if (output.data != nullptr) { - if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { - HcfBlobDataFree(&output); - return -1; - } - cipherTextLen += output.len; - HcfBlobDataFree(&output); - } - - if (cipherTextLen != sizeof(plainText) - 1) { - return -1; - } - return memcmp(cipherText, plainText, cipherTextLen); -} - -static const char *GetMockClass(void) -{ - return "HcfMock"; -} - -static HcfObjectBase obj = { +HcfObjectBase obj = { .getClass = GetMockClass, .destroy = nullptr }; -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest001, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest004, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -336,6 +57,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest001, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); if (ret != 0) { LOGE("HcfSymKeyGeneratorCreate failed!"); @@ -348,7 +70,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest001, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|ECB|NoPadding", &cipher); + ret = HcfCipherCreate("SM4_128|CBC|NoPadding", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; @@ -373,7 +95,7 @@ clearup: EXPECT_NE(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest002, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest005, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -383,6 +105,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest002, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); if (ret != 0) { LOGE("HcfSymKeyGeneratorCreate failed!"); @@ -395,7 +118,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest002, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + ret = HcfCipherCreate("SM4_128|CBC|PKCS5", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; @@ -406,14 +129,12 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest002, TestSize.Level0) LOGE("Sm4Encrypt failed! "); goto clearup; } - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); if (ret != 0) { LOGE("Sm4Decrypt failed! "); goto clearup; } - clearup: HcfObjDestroy((HcfObjectBase *)key); HcfObjDestroy((HcfObjectBase *)cipher); @@ -421,7 +142,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest003, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest006, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -443,12 +164,11 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest003, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|ECB|PKCS7", &cipher); + ret = HcfCipherCreate("SM4_128|CBC|PKCS7", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { LOGE("Sm4Encrypt failed! "); @@ -468,7 +188,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest004, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest007, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -491,7 +211,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest004, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|CBC|NoPadding", &cipher); + ret = HcfCipherCreate("SM4_128|OFB|NoPadding", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; @@ -509,14 +229,15 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest004, TestSize.Level0) goto clearup; } + clearup: HcfObjDestroy((HcfObjectBase *)key); HcfObjDestroy((HcfObjectBase *)cipher); HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_NE(ret, 0); + EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest005, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest008, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -526,7 +247,6 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest005, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); if (ret != 0) { LOGE("HcfSymKeyGeneratorCreate failed!"); @@ -539,17 +259,17 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest005, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|CBC|PKCS5", &cipher); + ret = HcfCipherCreate("SM4_128|OFB|PKCS5", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { LOGE("Sm4Encrypt failed! "); goto clearup; } + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); if (ret != 0) { LOGE("Sm4Decrypt failed! "); @@ -563,7 +283,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest006, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest009, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -585,11 +305,12 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest006, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|CBC|PKCS7", &cipher); + ret = HcfCipherCreate("SM4_128|OFB|PKCS7", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { LOGE("Sm4Encrypt failed! "); @@ -602,6 +323,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest006, TestSize.Level0) goto clearup; } + clearup: HcfObjDestroy((HcfObjectBase *)key); HcfObjDestroy((HcfObjectBase *)cipher); @@ -609,7 +331,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest007, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest016, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -632,7 +354,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest007, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|OFB|NoPadding", &cipher); + ret = HcfCipherCreate("SM4_128|CTR|NoPadding", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; @@ -650,7 +372,6 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest007, TestSize.Level0) goto clearup; } - clearup: HcfObjDestroy((HcfObjectBase *)key); HcfObjDestroy((HcfObjectBase *)cipher); @@ -658,7 +379,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest008, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest017, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -680,11 +401,12 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest008, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|OFB|PKCS5", &cipher); + ret = HcfCipherCreate("SM4_128|CTR|PKCS5", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { LOGE("Sm4Encrypt failed! "); @@ -704,7 +426,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest009, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest018, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -726,7 +448,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest009, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|OFB|PKCS7", &cipher); + ret = HcfCipherCreate("SM4_128|CTR|PKCS7", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; @@ -744,7 +466,6 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest009, TestSize.Level0) goto clearup; } - clearup: HcfObjDestroy((HcfObjectBase *)key); HcfObjDestroy((HcfObjectBase *)cipher); @@ -752,7 +473,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest010, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest022, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -775,21 +496,21 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest010, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|CFB|NoPadding", &cipher); + ret = HcfCipherCreate("SM4_128|CBC|NoPadding", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { - LOGE("Sm4Encrypt failed! "); + LOGE("Sm4NoUpdateEncrypt failed! "); goto clearup; } - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); if (ret != 0) { - LOGE("Sm4Decrypt failed! "); + LOGE("Sm4NoUpdateDecrypt failed! "); goto clearup; } @@ -797,10 +518,10 @@ clearup: HcfObjDestroy((HcfObjectBase *)key); HcfObjDestroy((HcfObjectBase *)cipher); HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); + EXPECT_NE(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest011, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest023, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -810,7 +531,6 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest011, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); if (ret != 0) { LOGE("HcfSymKeyGeneratorCreate failed!"); @@ -823,21 +543,21 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest011, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|CFB|PKCS5", &cipher); + ret = HcfCipherCreate("SM4_128|CBC|PKCS5", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { - LOGE("Sm4Encrypt failed! "); + LOGE("Sm4NoUpdateEncrypt failed! "); goto clearup; } - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); if (ret != 0) { - LOGE("Sm4Decrypt failed! "); + LOGE("Sm4NoUpdateDecrypt failed! "); goto clearup; } @@ -848,7 +568,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest012, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest024, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -871,21 +591,21 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest012, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|CFB|PKCS7", &cipher); + ret = HcfCipherCreate("SM4_128|CBC|PKCS7", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { - LOGE("Sm4Encrypt failed! "); + LOGE("Sm4NoUpdateEncrypt failed! "); goto clearup; } - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); if (ret != 0) { - LOGE("Sm4Decrypt failed! "); + LOGE("Sm4NoUpdateDecrypt failed! "); goto clearup; } @@ -896,7 +616,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest013, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest025, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -919,24 +639,25 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest013, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|CFB128|NoPadding", &cipher); + ret = HcfCipherCreate("SM4_128|OFB|NoPadding", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { - LOGE("Sm4Encrypt failed! "); + LOGE("Sm4NoUpdateEncrypt failed! "); goto clearup; } - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); if (ret != 0) { - LOGE("Sm4Decrypt failed! "); + LOGE("Sm4NoUpdateDecrypt failed! "); goto clearup; } + clearup: HcfObjDestroy((HcfObjectBase *)key); HcfObjDestroy((HcfObjectBase *)cipher); @@ -944,7 +665,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest014, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest026, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -967,21 +688,21 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest014, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|CFB128|PKCS5", &cipher); + ret = HcfCipherCreate("SM4_128|OFB|PKCS5", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { - LOGE("Sm4Encrypt failed! "); + LOGE("Sm4NoUpdateEncrypt failed! "); goto clearup; } - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); if (ret != 0) { - LOGE("Sm4Decrypt failed! "); + LOGE("Sm4NoUpdateDecrypt failed! "); goto clearup; } @@ -992,7 +713,7 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest015, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest027, TestSize.Level0) { int ret = 0; uint8_t cipherText[128] = {0}; @@ -1002,7 +723,6 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest015, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); if (ret != 0) { LOGE("HcfSymKeyGeneratorCreate failed!"); @@ -1015,24 +735,25 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest015, TestSize.Level0) goto clearup; } - ret = HcfCipherCreate("SM4_128|CFB128|PKCS7", &cipher); + ret = HcfCipherCreate("SM4_128|OFB|PKCS7", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto clearup; } - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { - LOGE("Sm4Encrypt failed! "); + LOGE("Sm4NoUpdateEncrypt failed! "); goto clearup; } - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); if (ret != 0) { - LOGE("Sm4Decrypt failed! "); + LOGE("Sm4NoUpdateDecrypt failed! "); goto clearup; } + clearup: HcfObjDestroy((HcfObjectBase *)key); HcfObjDestroy((HcfObjectBase *)cipher); @@ -1040,1384 +761,33 @@ clearup: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest016, TestSize.Level0) +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest044, TestSize.Level0) { int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + ret = HcfCipherCreate("", &cipher); if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; + LOGE("HcfCipherCreate failed!"); } - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} - ret = HcfCipherCreate("SM4_128|CTR|NoPadding", &cipher); +HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest045, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate(nullptr, &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); - goto clearup; } - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4Encrypt failed! "); - goto clearup; - } - - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4Decrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest017, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CTR|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4Encrypt failed! "); - goto clearup; - } - - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4Decrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest018, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CTR|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4Encrypt failed! "); - goto clearup; - } - - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4Decrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest019, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|ECB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest020, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest021, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest022, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CBC|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest023, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CBC|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest024, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CBC|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest025, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|OFB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest026, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|OFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest027, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|OFB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest028, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CFB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest029, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest030, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CFB|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest031, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CFB128|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest032, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CFB128|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest033, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto clearup; - } - - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|CFB128|PKCS7", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateEncrypt failed! "); - goto clearup; - } - - ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4NoUpdateDecrypt failed! "); - goto clearup; - } - -clearup: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - HcfObjDestroy((HcfObjectBase *)generator); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest034, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSm4SymKey(&key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = cipher->init(nullptr, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! "); - } - -clearup: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest035, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSm4SymKey(&key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, reinterpret_cast(cipher), nullptr); - if (ret != 0) { - LOGE("init failed! "); - } - -clearup: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest036, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t plainText[] = "this is test!"; - HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; - HcfBlob output = { .data = nullptr, .len = 0 }; - - ret = GenerateSm4SymKey(&key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! "); - goto clearup; - } - ret = cipher->update(nullptr, &input, &output); - if (ret != 0) { - LOGE("update failed!"); - } -clearup: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest037, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t plainText[] = "this is test!"; - HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; - HcfBlob output = { .data = nullptr, .len = 0 }; - - ret = GenerateSm4SymKey(&key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! "); - goto clearup; - } - ret = cipher->update(reinterpret_cast(key), &input, &output); - if (ret != 0) { - LOGE("update failed!"); - } -clearup: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest038, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t plainText[] = "this is test!"; - HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; - HcfBlob output = { .data = nullptr, .len = 0 }; - - ret = GenerateSm4SymKey(&key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! "); - goto clearup; - } - ret = cipher->doFinal(nullptr, &input, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - } -clearup: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest039, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t plainText[] = "this is test!"; - HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; - HcfBlob output = { .data = nullptr, .len = 0 }; - - ret = GenerateSm4SymKey(&key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto clearup; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto clearup; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! "); - goto clearup; - } - ret = cipher->doFinal(reinterpret_cast(key), &input, &output); - if (ret != 0) { - LOGE("doFinal failed!"); - } -clearup: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - if (output.data != nullptr) { - HcfFree(output.data); - output.data = nullptr; - } - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest040, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - const char *cipherName = "SM4_128|CFB|NoPadding"; - const char *retAlgo = nullptr; - ret = HcfCipherCreate(cipherName, &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - retAlgo = cipher->getAlgorithm(nullptr); - if (retAlgo == nullptr) { - LOGE("cipher getAlgorithm failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest041, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKeyGenerator *generator = nullptr; - const char *cipherName = "SM4_128|CFB|NoPadding"; - const char *retAlgo = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate(cipherName, &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - retAlgo = cipher->getAlgorithm(reinterpret_cast(generator)); - if (retAlgo == nullptr) { - LOGE("cipher getAlgorithm failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - } - -CLEAR_UP: - HcfObjDestroy(generator); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest042, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate("SM3|CFB|NoPadding", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed! Should not select SM3 for CFB generator."); - } - - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest043, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - - // not allow '|' without content, because findAbility will fail for "" input - ret = HcfCipherCreate("SM4_128|CFB|", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed! Should select padding mode for SM4_128 generator."); - } - - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest044, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate("", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - } - - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest045, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate(nullptr, &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - } - - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest046, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, nullptr, nullptr); - if (ret != 0) { - LOGE("init failed! Should input key when init."); - } - -CLEAR_UP: - HcfObjDestroy(cipher); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest047, TestSize.Level0) -{ - int ret = 0; - - ret = HcfCipherCreate(nullptr, nullptr); - if (ret != 0) { - LOGE("HcfCipherCreate failed! Should not select SM3 for CFB generator."); - } - - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoAesCipherTest048, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t plainText[] = "this is test!"; - HcfBlob input = { .data = plainText, .len = 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - ret = GenerateSymKey("SM4_128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = Sm4EncryptWithInput(cipher, key, &input, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4EncryptWithInput failed! %d", ret); - goto CLEAR_UP; - } - - ret = Sm4DecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4EncryptWithInput failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoAesCipherTest049, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfBlob input = { .data = nullptr, .len = 0 }; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - - ret = GenerateSymKey("SM4_128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = Sm4EncryptWithInput(cipher, key, &input, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4EncryptWithInput failed! %d", ret); - goto CLEAR_UP; - } - - ret = Sm4DecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4DecryptEmptyMsg failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoAesCipherTest050, TestSize.Level0) -{ - int ret = 0; - uint8_t aad[8] = {0}; - uint8_t tag[12] = {0}; - uint8_t iv[7] = {0}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; - - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - HcfCcmParamsSpec spec = {}; - spec.aad.data = aad; - spec.aad.len = sizeof(aad); - spec.tag.data = tag; - spec.tag.len = sizeof(tag); - spec.iv.data = iv; - spec.iv.len = sizeof(iv); - - ret = GenerateSymKey("SM4_128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("SM4_128|CFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = Sm4Encrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("Sm4Encrypt failed!"); - goto CLEAR_UP; - } - - (void)memcpy_s(spec.tag.data, 12, cipherText + cipherTextLen - 12, 12); - - cipherTextLen -= 12; - - ret = Sm4Decrypt(cipher, key, (HcfParamsSpec *)&spec, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("Sm4Decrypt failed!"); - goto CLEAR_UP; - } - -CLEAR_UP: - HcfObjDestroy((HcfObjectBase *)key); - HcfObjDestroy((HcfObjectBase *)cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoAesCipherTest051, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - const char *cipherName = "SM4_128|CFB|NoPadding"; - const char *retAlgo = nullptr; - ret = HcfCipherCreate(cipherName, &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - retAlgo = cipher->getAlgorithm(cipher); - if (retAlgo == nullptr) { - LOGE("cipher getAlgorithm failed!"); - ret = HCF_ERR_CRYPTO_OPERATION; - goto CLEAR_UP; - } - - ret = strcmp(retAlgo, cipherName); - if (ret != 0) { - LOGE("cipher getAlgorithm failed!"); - } -CLEAR_UP: - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest052, TestSize.Level0) { @@ -2433,79 +803,6 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest052, TestSize.Level0) EXPECT_NE(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest053, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - HcfCipher *cipher = nullptr; - - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->generateSymKey(generator, &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(reinterpret_cast(generator), ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed! Should input key when init."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - HcfObjDestroy(generator); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest054, TestSize.Level0) -{ - int ret = 0; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - uint8_t plainText[] = "this is test!"; - HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; - - ret = GenerateSymKey("SM4_128", &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); - if (ret != 0) { - LOGE("init failed!"); - goto CLEAR_UP; - } - - ret = cipher->doFinal(cipher, &input, nullptr); - if (ret != 0) { - LOGE("update failed! Blob data should not be nullptr."); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest055, TestSize.Level0) { int ret = 0; @@ -2519,9 +816,9 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest055, TestSize.Level0) ivSpec.iv.data = iv; ivSpec.iv.len = AES_IV_LEN; - ret = GenerateSymKey("SM4_128", &key); + ret = GenerateSymKeyForSm4("SM4_128", &key); if (ret != 0) { - LOGE("GenerateSymKey failed!"); + LOGE("GenerateSymKeyForSm4 failed!"); goto CLEAR_UP; } @@ -2556,9 +853,9 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest057, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; - ret = GenerateSymKey("SM4_128", &key); + ret = GenerateSymKeyForSm4("SM4_128", &key); if (ret != 0) { - LOGE("GenerateSymKey failed!"); + LOGE("GenerateSymKeyForSm4 failed!"); goto CLEAR_UP; } @@ -2585,72 +882,6 @@ CLEAR_UP: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest058, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("SM4_128", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - // allow input with more than one padding mode. It will pick the last PKCS5. - ret = HcfCipherCreate("SM4_128|ECB|NoPadding|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_EQ(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest059, TestSize.Level0) -{ - int ret = 0; - HcfSymKeyGenerator *generator = nullptr; - HcfSymKey *key = nullptr; - HcfCipher *cipher = nullptr; - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); - if (ret != 0) { - LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); - goto CLEAR_UP; - } - ret = generator->generateSymKey(reinterpret_cast(cipher), &key); - if (ret != 0) { - LOGE("generateSymKey failed!"); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(generator); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest060, TestSize.Level0) { int ret = 0; @@ -2659,9 +890,9 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest060, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; - ret = GenerateSymKey("SM4_128", &key); + ret = GenerateSymKeyForSm4("SM4_128", &key); if (ret != 0) { - LOGE("GenerateSymKey failed!"); + LOGE("GenerateSymKeyForSm4 failed!"); goto CLEAR_UP; } @@ -2688,45 +919,6 @@ CLEAR_UP: EXPECT_EQ(ret, 0); } -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest061, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - // It is not allowed that AES128 in key is smaller AES256 in cipher. -> now only use the size of input key. - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - - HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest062, TestSize.Level0) { HcfResult res = HCF_SUCCESS; @@ -2760,7 +952,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest064, TestSize.Level0) .algo = HCF_ALG_SM4, .md = HCF_OPENSSL_DIGEST_SM3, }; - retkey = GenerateSymKey("SM4_128", &key); + retkey = GenerateSymKeyForSm4("SM4_128", &key); EXPECT_EQ(retkey, 0); res = HcfCipherSm4GeneratorSpiCreate(¶ms, &cipher); EXPECT_EQ(res, HCF_SUCCESS); @@ -2780,7 +972,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest065, TestSize.Level0) .algo = HCF_ALG_SM4, .md = HCF_OPENSSL_DIGEST_SM3, }; - retkey = GenerateSymKey("SM4_128", &key); + retkey = GenerateSymKeyForSm4("SM4_128", &key); EXPECT_EQ(retkey, 0); res = HcfCipherSm4GeneratorSpiCreate(¶ms, &cipher); EXPECT_EQ(res, HCF_SUCCESS); @@ -2816,7 +1008,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest067, TestSize.Level0) .algo = HCF_ALG_SM4, .md = HCF_OPENSSL_DIGEST_SM3, }; - retkey = GenerateSymKey("SM4_128", &key); + retkey = GenerateSymKeyForSm4("SM4_128", &key); EXPECT_EQ(retkey, 0); res = HcfCipherSm4GeneratorSpiCreate(¶ms, &cipher); EXPECT_EQ(res, HCF_SUCCESS); @@ -2839,7 +1031,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest069, TestSize.Level0) uint8_t plan[] = "12312123123"; HcfBlob input = {.data = (uint8_t *)plan, .len = strlen((char *)plan)}; - retkey = GenerateSymKey("SM4_128", &key); + retkey = GenerateSymKeyForSm4("SM4_128", &key); EXPECT_EQ(retkey, 0); res = HcfCipherSm4GeneratorSpiCreate(¶ms, &cipher); EXPECT_EQ(res, HCF_SUCCESS); @@ -2861,7 +1053,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest070, TestSize.Level0) .md = HCF_OPENSSL_DIGEST_SM3, }; - retkey = GenerateSymKey("SM4_128", &key); + retkey = GenerateSymKeyForSm4("SM4_128", &key); EXPECT_EQ(retkey, 0); res = HcfCipherSm4GeneratorSpiCreate(¶ms, &cipher); EXPECT_EQ(res, HCF_SUCCESS); @@ -2886,7 +1078,7 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest071, TestSize.Level0) uint8_t plan[] = "12312123123"; HcfBlob input = {.data = (uint8_t *)plan, .len = strlen((char *)plan)}; - retkey = GenerateSymKey("SM4_128", &key); + retkey = GenerateSymKeyForSm4("SM4_128", &key); EXPECT_EQ(retkey, 0); res = HcfCipherSm4GeneratorSpiCreate(¶ms, &cipher); EXPECT_EQ(res, HCF_SUCCESS); @@ -3006,9 +1198,9 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest079, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; - ret = GenerateSymKey("AES256", &key); + ret = GenerateSymKeyForSm4("AES256", &key); if (ret != 0) { - LOGE("GenerateSymKey failed!"); + LOGE("GenerateSymKeyForSm4 failed!"); goto CLEAR_UP; } @@ -3036,7 +1228,6 @@ CLEAR_UP: EXPECT_NE(ret, 0); } - HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest080, TestSize.Level0) { int ret = 0; @@ -3045,9 +1236,9 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest080, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; - ret = GenerateSymKey("AES256", &key); + ret = GenerateSymKeyForSm4("AES256", &key); if (ret != 0) { - LOGE("GenerateSymKey failed!"); + LOGE("GenerateSymKeyForSm4 failed!"); goto CLEAR_UP; } @@ -3083,9 +1274,9 @@ HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest081, TestSize.Level0) HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; - ret = GenerateSymKey("AES256", &key); + ret = GenerateSymKeyForSm4("AES256", &key); if (ret != 0) { - LOGE("GenerateSymKey failed!"); + LOGE("GenerateSymKeyForSm4 failed!"); goto CLEAR_UP; } @@ -3112,80 +1303,4 @@ CLEAR_UP: HcfObjDestroy(cipher); EXPECT_NE(ret, 0); } - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest082, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("SM4_128|CFB|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - // It is not allowed that AES128 in key is smaller AES256 in cipher. -> now only use the size of input key. - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} - -HWTEST_F(CryptoSM4CipherTest, CryptoSm4CipherTest083, TestSize.Level0) -{ - int ret = 0; - uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; - int cipherTextLen = CIPHER_TEXT_LEN; - HcfCipher *cipher = nullptr; - HcfSymKey *key = nullptr; - - ret = GenerateSymKey("AES256", &key); - if (ret != 0) { - LOGE("GenerateSymKey failed!"); - goto CLEAR_UP; - } - - ret = HcfCipherCreate("SM4_128|CFB128|PKCS5", &cipher); - if (ret != 0) { - LOGE("HcfCipherCreate failed!"); - goto CLEAR_UP; - } - - // It is not allowed that AES128 in key is smaller AES256 in cipher. -> now only use the size of input key. - ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); - if (ret != 0) { - LOGE("AesEncrypt failed! %d", ret); - goto CLEAR_UP; - } - - ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); - if (ret != 0) { - LOGE("AesDecrypt failed! %d", ret); - } - -CLEAR_UP: - HcfObjDestroy(key); - HcfObjDestroy(cipher); - EXPECT_NE(ret, 0); -} -} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_sm4_ecb_cipher_test.cpp b/test/unittest/src/crypto_sm4_ecb_cipher_test.cpp new file mode 100644 index 0000000..6bee464 --- /dev/null +++ b/test/unittest/src/crypto_sm4_ecb_cipher_test.cpp @@ -0,0 +1,821 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "securec.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" +#include "sm4_common.h" +#include "sm4_openssl.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoSM4EcbCipherTest : public testing::Test { +public: + static void SetUpTestCase() {}; + static void TearDownTestCase() {}; + void SetUp() {}; + void TearDown() {}; +}; + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest001, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed! "); + goto clearup; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest002, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed! "); + goto clearup; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed! "); + goto clearup; + } + + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest003, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4Encrypt failed! "); + goto clearup; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4Decrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest019, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|NoPadding", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateEncrypt failed! "); + goto clearup; + } + + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateDecrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest020, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateEncrypt failed! "); + goto clearup; + } + + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateDecrypt failed! "); + goto clearup; + } + + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest021, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[128] = {0}; + int cipherTextLen = 128; + + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + goto clearup; + } + + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS7", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = Sm4NoUpdateEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateEncrypt failed! "); + goto clearup; + } + + ret = Sm4NoUpdateDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4NoUpdateDecrypt failed! "); + goto clearup; + } + +clearup: + HcfObjDestroy((HcfObjectBase *)key); + HcfObjDestroy((HcfObjectBase *)cipher); + HcfObjDestroy((HcfObjectBase *)generator); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest034, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSm4SymKey(&key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = cipher->init(nullptr, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! "); + } + +clearup: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest035, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSm4SymKey(&key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, reinterpret_cast(cipher), nullptr); + if (ret != 0) { + LOGE("init failed! "); + } + +clearup: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest036, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t plainText[] = "this is test!"; + HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; + HcfBlob output = { .data = nullptr, .len = 0 }; + + ret = GenerateSm4SymKey(&key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! "); + goto clearup; + } + ret = cipher->update(nullptr, &input, &output); + if (ret != 0) { + LOGE("update failed!"); + } +clearup: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest037, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t plainText[] = "this is test!"; + HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; + HcfBlob output = { .data = nullptr, .len = 0 }; + + ret = GenerateSm4SymKey(&key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! "); + goto clearup; + } + ret = cipher->update(reinterpret_cast(key), &input, &output); + if (ret != 0) { + LOGE("update failed!"); + } +clearup: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest038, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t plainText[] = "this is test!"; + HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; + HcfBlob output = { .data = nullptr, .len = 0 }; + + ret = GenerateSm4SymKey(&key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! "); + goto clearup; + } + ret = cipher->doFinal(nullptr, &input, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + } +clearup: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest039, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t plainText[] = "this is test!"; + HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; + HcfBlob output = { .data = nullptr, .len = 0 }; + + ret = GenerateSm4SymKey(&key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto clearup; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto clearup; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! "); + goto clearup; + } + ret = cipher->doFinal(reinterpret_cast(key), &input, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + } +clearup: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + if (output.data != nullptr) { + HcfFree(output.data); + output.data = nullptr; + } + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest046, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, nullptr, nullptr); + if (ret != 0) { + LOGE("init failed! Should input key when init."); + } + +CLEAR_UP: + HcfObjDestroy(cipher); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoAesCipherTest048, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t plainText[] = "this is test!"; + HcfBlob input = { .data = plainText, .len = 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + ret = GenerateSymKeyForSm4("SM4_128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = Sm4EncryptWithInput(cipher, key, &input, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4EncryptWithInput failed! %d", ret); + goto CLEAR_UP; + } + + ret = Sm4DecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4EncryptWithInput failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoAesCipherTest049, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + HcfBlob input = { .data = nullptr, .len = 0 }; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + + ret = GenerateSymKeyForSm4("SM4_128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = Sm4EncryptWithInput(cipher, key, &input, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("Sm4EncryptWithInput failed! %d", ret); + goto CLEAR_UP; + } + + ret = Sm4DecryptEmptyMsg(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("Sm4DecryptEmptyMsg failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest053, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + HcfCipher *cipher = nullptr; + + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->generateSymKey(generator, &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(reinterpret_cast(generator), ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! Should input key when init."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + HcfObjDestroy(generator); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest054, TestSize.Level0) +{ + int ret = 0; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + uint8_t plainText[] = "this is test!"; + HcfBlob input = { .data = plainText, .len = PLAINTEXT_LEN }; + + ret = GenerateSymKeyForSm4("SM4_128", &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed!"); + goto CLEAR_UP; + } + + ret = cipher->doFinal(cipher, &input, nullptr); + if (ret != 0) { + LOGE("update failed! Blob data should not be nullptr."); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest058, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKeyForSm4("SM4_128", &key); + if (ret != 0) { + LOGE("GenerateSymKeyForSm4 failed!"); + goto CLEAR_UP; + } + + // allow input with more than one padding mode. It will pick the last PKCS5. + ret = HcfCipherCreate("SM4_128|ECB|NoPadding|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest059, TestSize.Level0) +{ + int ret = 0; + HcfSymKeyGenerator *generator = nullptr; + HcfSymKey *key = nullptr; + HcfCipher *cipher = nullptr; + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!%d", ret); + goto CLEAR_UP; + } + ret = generator->generateSymKey(reinterpret_cast(cipher), &key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(generator); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} + +HWTEST_F(CryptoSM4EcbCipherTest, CryptoSm4CipherTest061, TestSize.Level0) +{ + int ret = 0; + uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; + int cipherTextLen = CIPHER_TEXT_LEN; + HcfCipher *cipher = nullptr; + HcfSymKey *key = nullptr; + + ret = GenerateSymKeyForSm4("AES256", &key); + if (ret != 0) { + LOGE("GenerateSymKeyForSm4 failed!"); + goto CLEAR_UP; + } + + ret = HcfCipherCreate("SM4_128|ECB|PKCS5", &cipher); + if (ret != 0) { + LOGE("HcfCipherCreate failed!"); + goto CLEAR_UP; + } + + // It is not allowed that AES128 in key is smaller AES256 in cipher. -> now only use the size of input key. + ret = Sm4Encrypt(cipher, key, nullptr, cipherText, &cipherTextLen); + if (ret != 0) { + LOGE("AesEncrypt failed! %d", ret); + goto CLEAR_UP; + } + + ret = Sm4Decrypt(cipher, key, nullptr, cipherText, cipherTextLen); + if (ret != 0) { + LOGE("AesDecrypt failed! %d", ret); + } + +CLEAR_UP: + HcfObjDestroy(key); + HcfObjDestroy(cipher); + EXPECT_NE(ret, 0); +} +} \ No newline at end of file diff --git a/test/unittest/src/crypto_x25519_asy_key_generator_by_spec_test.cpp b/test/unittest/src/crypto_x25519_asy_key_generator_by_spec_test.cpp index 094dc04..b575d37 100644 --- a/test/unittest/src/crypto_x25519_asy_key_generator_by_spec_test.cpp +++ b/test/unittest/src/crypto_x25519_asy_key_generator_by_spec_test.cpp @@ -16,7 +16,7 @@ #include #include "securec.h" -#include "asy_key_generator.h" +#include "alg_25519_common_param_spec.h" #include "asy_key_generator_spi.h" #include "blob.h" #include "signature.h" @@ -28,7 +28,6 @@ #include "key_pair.h" #include "object_base.h" #include "alg_25519_asy_key_generator_openssl.h" -#include "detailed_alg_25519_key_params.h" using namespace std; using namespace testing::ext; @@ -46,231 +45,94 @@ static string g_x25519AlgoName = "X25519"; static string g_pubkeyformatName = "X.509"; static string g_prikeyformatName = "PKCS#8"; -HcfAlg25519KeyPairParamsSpec g_x25519KeyPairSpec; -HcfAlg25519PriKeyParamsSpec g_x25519PriKeySpec; -HcfAlg25519PubKeyParamsSpec g_x25519PubKeySpec; - void CryptoX25519AsyKeyGeneratorBySpecTest::SetUp() {} void CryptoX25519AsyKeyGeneratorBySpecTest::TearDown() {} void CryptoX25519AsyKeyGeneratorBySpecTest::SetUpTestCase() {} void CryptoX25519AsyKeyGeneratorBySpecTest::TearDownTestCase() {} -static HcfResult ConstructX25519KeyPairParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return res; - } - - HcfAlg25519KeyPairParamsSpec *x25519KeyPairSpec = &g_x25519KeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - x25519KeyPairSpec->base.algName = g_x25519AlgoName.data(); - x25519KeyPairSpec->base.specType = HCF_KEY_PAIR_SPEC; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, X25519_PK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - x25519KeyPairSpec->pk.data = retBigInt.data; - x25519KeyPairSpec->pk.len = retBigInt.len; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, X25519_SK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - x25519KeyPairSpec->sk.data = retBigInt.data; - x25519KeyPairSpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)x25519KeyPairSpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; -} - -static HcfResult ConstructX25519PubKeyParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return HCF_INVALID_PARAMS; - } - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return HCF_INVALID_PARAMS; - } - - HcfAlg25519PubKeyParamsSpec *x25519PubKeySpec = &g_x25519PubKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - x25519PubKeySpec->base.algName = g_x25519AlgoName.data(); - x25519PubKeySpec->base.specType = HCF_PUBLIC_KEY_SPEC; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, X25519_PK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - x25519PubKeySpec->pk.data = retBigInt.data; - x25519PubKeySpec->pk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)x25519PubKeySpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; -} - -static HcfResult ConstructX25519PriKeyParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - return res; - } - - HcfAlg25519PriKeyParamsSpec *x25519PriKeySpec = &g_x25519PriKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - x25519PriKeySpec->base.algName = g_x25519AlgoName.data(); - x25519PriKeySpec->base.specType = HCF_PRIVATE_KEY_SPEC; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, X25519_SK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - x25519PriKeySpec->sk.data = retBigInt.data; - x25519PriKeySpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)x25519PriKeySpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - - return HCF_SUCCESS; -} - HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest001_1, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); + HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest001_2, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519PubKeyParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreatePubKeyParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); + HcfObjDestroy(returnObj); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest001_3, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519PriKeyParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreatePriKeyParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); + HcfObjDestroy(returnObj); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest002, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); const char *className = returnObj->base.getClass(); ASSERT_NE(className, NULL); ASSERT_NE(returnObj, nullptr); + HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest003, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); returnObj->base.destroy((HcfObjectBase *)returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest004, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); const char *algoName = returnObj->getAlgName(returnObj); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_EQ(algoName, g_x25519AlgoName); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest005, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -280,19 +142,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest006, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -305,42 +164,35 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest007, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&(keyPair->base)); - ASSERT_NE(returnObj, nullptr); + HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest008, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -352,19 +204,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest009, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -375,19 +224,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe keyPair->pubKey = nullptr; HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest010, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -408,19 +254,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest011, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -432,19 +275,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest012, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -456,19 +296,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest013, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -489,19 +326,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest014, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreateKeyPairParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfKeyPair *keyPair = nullptr; res = returnObj->generateKeyPair(returnObj, &keyPair); @@ -517,29 +351,22 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(returnObj); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest015, TestSize.Level0) { HcfAsyKeyParamsSpec *pubparamSpec = nullptr; - HcfResult res = ConstructX25519PubKeyParamsSpec(g_x25519AlgoName, &pubparamSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubparamSpec, nullptr); - - HcfAsyKeyParamsSpec *priparamSpec = nullptr; - res = ConstructX25519PriKeyParamsSpec(g_x25519AlgoName, &priparamSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priparamSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnpubObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(pubparamSpec, &returnpubObj); + HcfResult res = TestCreatePubKeyParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + &pubparamSpec, &returnpubObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnpubObj, nullptr); + HcfAsyKeyParamsSpec *priparamSpec = nullptr; HcfAsyKeyGeneratorBySpec *returnpriObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(priparamSpec, &returnpriObj); + res = TestCreatePriKeyParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + &priparamSpec, &returnpriObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnpriObj, nullptr); HcfPubKey *pubKey = nullptr; res = returnpubObj->generatePubKey(returnpubObj, &pubKey); @@ -568,6 +395,8 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(priKey); HcfObjDestroy(returnpubObj); HcfObjDestroy(returnpriObj); + DestroyAlg25519PubKeySpec(reinterpret_cast(pubparamSpec)); + DestroyAlg25519PriKeySpec(reinterpret_cast(priparamSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest016, TestSize.Level0) @@ -601,7 +430,7 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe ASSERT_NE(returnSpi, nullptr); HcfAsyKeyParamsSpec *paramsSpec = nullptr; - res = ConstructX25519KeyPairParamsSpec("X25519", ¶msSpec); + res = ConstructAlg25519KeyPairParamsSpec(g_x25519AlgoName.c_str(), false, ¶msSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -612,6 +441,7 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(returnSpi); HcfObjDestroy(keyPair); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramsSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest018, TestSize.Level0) @@ -629,7 +459,7 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe ASSERT_NE(returnSpi, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructX25519PubKeyParamsSpec("X25519", ¶mSpec); + res = ConstructAlg25519PubKeyParamsSpec("X25519", false, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -640,6 +470,7 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(returnSpi); HcfObjDestroy(pubKey); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest019, TestSize.Level0) @@ -657,7 +488,7 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe ASSERT_NE(returnSpi, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructX25519PriKeyParamsSpec("X25519", ¶mSpec); + res = ConstructAlg25519PriKeyParamsSpec("X25519", false, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(returnSpi, nullptr); @@ -668,19 +499,15 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(returnSpi); HcfObjDestroy(priKey); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest020, TestSize.Level0) { - HcfAsyKeyGenerator *generator; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - + HcfAsyKeyGenerator *generator = nullptr; HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBlob blob1 = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob1); @@ -689,14 +516,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe ASSERT_NE(blob1.len, 0); HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructX25519PubKeyParamsSpec("X25519", ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + res = TestCreatePubKeyParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfPubKey *pubKey = nullptr; res = returnObj->generatePubKey(returnObj, &pubKey); @@ -717,19 +540,15 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(returnObj); HcfObjDestroy(pubKey); HcfObjDestroy(keyPair); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest021, TestSize.Level0) { - HcfAsyKeyGenerator *generator; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - + HcfAsyKeyGenerator *generator = nullptr; HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBlob blob1 = { .data = nullptr, .len = 0 }; res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob1); @@ -738,14 +557,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe ASSERT_NE(blob1.len, 0); HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructX25519PriKeyParamsSpec("X25519", ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + res = TestCreatePriKeyParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfPriKey *priKey = nullptr; res = returnObj->generatePriKey(returnObj, &priKey); @@ -766,19 +581,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(returnObj); HcfObjDestroy(priKey); HcfObjDestroy(keyPair); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest022, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519PriKeyParamsSpec("X25519", ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreatePriKeyParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfPriKey *priKey = nullptr; res = returnObj->generatePriKey(returnObj, &priKey); @@ -802,19 +614,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(returnObj); HcfObjDestroy(priKey); HcfObjDestroy(keyPair); + DestroyAlg25519PriKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpecTest023, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - HcfResult res = ConstructX25519PubKeyParamsSpec("X25519", ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *returnObj = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &returnObj); + HcfResult res = TestCreatePubKeyParamsSpecAndGeneratorBySpec(g_x25519AlgoName.c_str(), false, + ¶mSpec, &returnObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(returnObj, nullptr); HcfPubKey *pubKey = nullptr; res = returnObj->generatePubKey(returnObj, &pubKey); @@ -838,5 +647,6 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorBySpecTest, CryptoX25519AsyKeyGeneratorBySpe HcfObjDestroy(returnObj); HcfObjDestroy(pubKey); HcfObjDestroy(keyPair); + DestroyAlg25519PubKeySpec(reinterpret_cast(paramSpec)); } } \ No newline at end of file diff --git a/test/unittest/src/crypto_x25519_asy_key_generator_test.cpp b/test/unittest/src/crypto_x25519_asy_key_generator_test.cpp index 6ca80c3..68a7709 100644 --- a/test/unittest/src/crypto_x25519_asy_key_generator_test.cpp +++ b/test/unittest/src/crypto_x25519_asy_key_generator_test.cpp @@ -16,7 +16,7 @@ #include #include "securec.h" -#include "asy_key_generator.h" +#include "alg_25519_common_param_spec.h" #include "ecc_asy_key_generator_openssl.h" #include "blob.h" #include "params_parser.h" @@ -97,10 +97,8 @@ void CryptoX25519AsyKeyGeneratorTest::SetUpTestCase() HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest001, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - + HcfResult res = TestHcfAsyKeyGeneratorCreate(g_x25519AlgoName.c_str(), &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); HcfObjDestroy(generator); } @@ -121,10 +119,8 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest002, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest003, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - + HcfResult res = TestHcfAsyKeyGeneratorCreate(g_x25519AlgoName.c_str(), &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); generator->base.destroy((HcfObjectBase *)generator); } @@ -132,7 +128,8 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest003, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest004, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); + HcfResult res = TestHcfAsyKeyGeneratorCreate(g_x25519AlgoName.c_str(), &generator); + ASSERT_EQ(res, HCF_SUCCESS); const char *algoName = generator->getAlgoName(generator); @@ -145,14 +142,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest004, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest005, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -161,14 +153,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest005, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest006, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->base.getClass(); ASSERT_NE(className, nullptr); @@ -180,31 +167,20 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest006, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest007, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&(keyPair->base)); - HcfObjDestroy(generator); } HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest008, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->pubKey->base.base.getClass(); ASSERT_NE(className, nullptr); @@ -216,14 +192,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest008, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest009, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); keyPair->pubKey = nullptr; @@ -235,14 +206,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest009, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest010, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); ASSERT_EQ(algorithmName, g_x25519AlgoName); @@ -263,14 +229,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest010, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest011, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->priKey->base.base.getClass(); ASSERT_NE(className, nullptr); @@ -282,14 +243,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest011, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest012, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); keyPair->priKey = nullptr; @@ -301,14 +257,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest012, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest013, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); ASSERT_EQ(algorithmName, g_x25519AlgoName); @@ -329,14 +280,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest013, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest014, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem(keyPair->priKey); HcfBlob blob = { .data = nullptr, .len = 0 }; @@ -352,21 +298,16 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest014, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest015, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - res = generator->convertKey(generator, nullptr, nullptr, &g_mockX25519PriKeyBlob, &keyPair); + res = TestGenerateConvertKey(generator, nullptr, &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, nullptr, &keyPair); + res = TestGenerateConvertKey(generator, &g_mockX25519PubKeyBlob, nullptr, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); @@ -375,14 +316,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest015, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest016, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->base.getClass(); ASSERT_NE(className, nullptr); @@ -394,14 +331,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest016, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest017, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&(keyPair->base)); @@ -411,14 +344,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest017, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest018, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->pubKey->base.base.getClass(); ASSERT_NE(className, nullptr); @@ -430,14 +359,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest018, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest019, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&(keyPair->pubKey->base.base)); keyPair->pubKey = nullptr; @@ -449,14 +374,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest019, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest020, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); ASSERT_NE(algorithmName, nullptr); @@ -478,14 +399,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest020, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest021, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *className = keyPair->priKey->base.base.getClass(); ASSERT_NE(className, nullptr); @@ -497,14 +414,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest021, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest022, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(&(keyPair->priKey->base.base)); keyPair->priKey = nullptr; @@ -516,14 +429,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest022, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest023, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); const char *algorithmName = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); ASSERT_NE(algorithmName, nullptr); @@ -545,14 +454,10 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest023, Te HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest024, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - HcfKeyPair *keyPair = nullptr; - res = generator->convertKey(generator, nullptr, &g_mockX25519PubKeyBlob, &g_mockX25519PriKeyBlob, &keyPair); - + HcfResult res = TestGenerateKeyPairAndConvertKey(g_x25519AlgoName.c_str(), &generator, &g_mockX25519PubKeyBlob, + &g_mockX25519PriKeyBlob, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem(keyPair->priKey); HcfBlob blob = { .data = nullptr, .len = 0 }; @@ -619,13 +524,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest025, Te { StartRecordMallocNum(); HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); @@ -709,13 +610,9 @@ HWTEST_F(CryptoX25519AsyKeyGeneratorTest, CryptoX25519AsyKeyGeneratorTest026, Te { StartRecordOpensslCallNum(); HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - + HcfResult res = TestKeyGeneratorAndGenerateKeyPair(g_x25519AlgoName.c_str(), &generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); diff --git a/test/unittest/src/crypto_x25519_key_agreement_test.cpp b/test/unittest/src/crypto_x25519_key_agreement_test.cpp index 2697f9b..0ee2372 100644 --- a/test/unittest/src/crypto_x25519_key_agreement_test.cpp +++ b/test/unittest/src/crypto_x25519_key_agreement_test.cpp @@ -16,9 +16,8 @@ #include #include "securec.h" -#include "asy_key_generator.h" #include "alg_25519_asy_key_generator_openssl.h" -#include "detailed_alg_25519_key_params.h" +#include "alg_25519_common_param_spec.h" #include "key_agreement.h" #include "params_parser.h" #include "x25519_openssl.h" @@ -47,8 +46,6 @@ HcfKeyPair *CryptoX25519KeyAgreementTest::x25519KeyPair_ = nullptr; static string g_ed25519AlgoName = "Ed25519"; static string g_x25519AlgoName = "X25519"; -HcfAlg25519KeyPairParamsSpec g_x25519KeyPairSpec; - void CryptoX25519KeyAgreementTest::SetUp() {} void CryptoX25519KeyAgreementTest::TearDown() {} @@ -62,68 +59,27 @@ static HcfObjectBase g_obj = { .destroy = nullptr }; -static HcfResult ConstructX25519KeyPairParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - if (res != HCF_SUCCESS) { - return res; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - if (res != HCF_SUCCESS) { - return res; - } - HcfAlg25519KeyPairParamsSpec *x25519KeyPairSpec = &g_x25519KeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - x25519KeyPairSpec->base.algName = const_cast(g_x25519AlgoName.c_str()); - x25519KeyPairSpec->base.specType = HCF_KEY_PAIR_SPEC; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, X25519_PK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - x25519KeyPairSpec->pk.data = retBigInt.data; - x25519KeyPairSpec->pk.len = retBigInt.len; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, X25519_SK_BN, &retBigInt); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return res; - } - x25519KeyPairSpec->sk.data = retBigInt.data; - x25519KeyPairSpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)x25519KeyPairSpec; - HcfObjDestroy(generator); - HcfObjDestroy(keyPair); - return HCF_SUCCESS; -} - void CryptoX25519KeyAgreementTest::SetUpTestCase() { - HcfAsyKeyGenerator *generator = nullptr; - int32_t ret = HcfAsyKeyGeneratorCreate(g_ed25519AlgoName.c_str(), &generator); + HcfAsyKeyGenerator *ed25519Generator = nullptr; + HcfResult ret = TestHcfAsyKeyGeneratorCreate(g_ed25519AlgoName.c_str(), &ed25519Generator); ASSERT_EQ(ret, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; - ret = generator->generateKeyPair(generator, nullptr, &keyPair); + ret = TestGenerateKeyPair(ed25519Generator, &keyPair); ASSERT_EQ(ret, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); ed25519KeyPair_ = keyPair; - ret = HcfAsyKeyGeneratorCreate(g_x25519AlgoName.c_str(), &generator); + HcfAsyKeyGenerator *x25519Generator = nullptr; + ret = TestHcfAsyKeyGeneratorCreate(g_x25519AlgoName.c_str(), &x25519Generator); ASSERT_EQ(ret, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - ret = generator->generateKeyPair(generator, nullptr, &keyPair); + ret = TestGenerateKeyPair(x25519Generator, &keyPair); ASSERT_EQ(ret, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); x25519KeyPair_ = keyPair; - HcfObjDestroy(generator); + HcfObjDestroy(ed25519Generator); + HcfObjDestroy(x25519Generator); } void CryptoX25519KeyAgreementTest::TearDownTestCase() @@ -132,23 +88,31 @@ void CryptoX25519KeyAgreementTest::TearDownTestCase() HcfObjDestroy(x25519KeyPair_); } +static HcfResult TestHcfKeyAgreementCreate(const string &algName, HcfKeyAgreement **keyAgreement) +{ + HcfResult res = HcfKeyAgreementCreate(algName.c_str(), keyAgreement); + if (res != HCF_SUCCESS) { + return HCF_ERR_CRYPTO_OPERATION; + } + if (*keyAgreement == nullptr) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} + HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest001, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("X25519", &keyAgreement); - + HcfResult res = TestHcfKeyAgreementCreate(g_x25519AlgoName, &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest002, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("X25519", &keyAgreement); - + HcfResult res = TestHcfKeyAgreementCreate(g_x25519AlgoName, &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); const char *className = keyAgreement->base.getClass(); ASSERT_NE(className, nullptr); @@ -158,26 +122,22 @@ HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest002, TestSize HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest003, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("X25519", &keyAgreement); - + HcfResult res = TestHcfKeyAgreementCreate(g_x25519AlgoName, &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); keyAgreement->base.destroy((HcfObjectBase *)keyAgreement); } HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest004, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("X25519", &keyAgreement); - + HcfResult res = TestHcfKeyAgreementCreate(g_x25519AlgoName, &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); const char *algName = keyAgreement->getAlgoName(keyAgreement); ASSERT_EQ(algName, g_x25519AlgoName); HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructX25519KeyPairParamsSpec(g_x25519AlgoName, ¶mSpec); + res = ConstructAlg25519KeyPairParamsSpec(g_x25519AlgoName.c_str(), false, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -202,25 +162,23 @@ HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest004, TestSize HcfObjDestroy(keyAgreement); HcfObjDestroy(generator); HcfObjDestroy(keyPair); + DestroyAlg25519KeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest005, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("x25519", &keyAgreement); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(keyAgreement, nullptr); + string algName = "x25519"; + HcfResult res = TestHcfKeyAgreementCreate(algName, &keyAgreement); + ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(keyAgreement); } HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest006, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("X25519", &keyAgreement); - + HcfResult res = TestHcfKeyAgreementCreate(g_x25519AlgoName, &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); keyAgreement->base.destroy(nullptr); keyAgreement->base.destroy(&g_obj); @@ -230,10 +188,8 @@ HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest006, TestSize HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest007, TestSize.Level0) { HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate("X25519", &keyAgreement); - + HcfResult res = TestHcfKeyAgreementCreate(g_x25519AlgoName, &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); const char *algName = nullptr; algName = keyAgreement->getAlgoName(nullptr); @@ -279,26 +235,29 @@ HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest008, TestSize HcfObjDestroy(keyAgreement); } -HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest009, TestSize.Level0) +static HcfResult TestHcfKeyAgreementSpiX25519Create(HcfResult result, HcfKeyAgreementSpi **spiObj) { HcfKeyAgreementParams params = { .algo = HCF_ALG_X25519, }; - HcfResult res = HcfKeyAgreementSpiX25519Create(¶ms, nullptr); + HcfResult res = HcfKeyAgreementSpiX25519Create(¶ms, spiObj); + if (res != result) { + return HCF_ERR_CRYPTO_OPERATION; + } + return HCF_SUCCESS; +} - ASSERT_EQ(res, HCF_INVALID_PARAMS); +HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest009, TestSize.Level0) +{ + HcfResult res = TestHcfKeyAgreementSpiX25519Create(HCF_INVALID_PARAMS, nullptr); + ASSERT_EQ(res, HCF_SUCCESS); } HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest010, TestSize.Level0) { - HcfKeyAgreementParams params = { - .algo = HCF_ALG_X25519, - }; - HcfKeyAgreementSpi *spiObj = nullptr; - HcfResult res = HcfKeyAgreementSpiX25519Create(¶ms, &spiObj); - + HcfResult res = TestHcfKeyAgreementSpiX25519Create(HCF_SUCCESS, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); @@ -318,35 +277,22 @@ HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest010, TestSize HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest011, TestSize.Level0) { - HcfKeyAgreementParams params = { - .algo = HCF_ALG_X25519, - }; - HcfKeyAgreementSpi *spiObj = nullptr; - HcfResult res = HcfKeyAgreementSpiX25519Create(¶ms, &spiObj); - + HcfResult res = TestHcfKeyAgreementSpiX25519Create(HCF_SUCCESS, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(spiObj, nullptr); spiObj->base.destroy(nullptr); - HcfObjDestroy(spiObj); } HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest012, TestSize.Level0) { - HcfKeyAgreementParams params = { - .algo = HCF_ALG_X25519, - }; - HcfKeyAgreementSpi *spiObj = nullptr; - HcfResult res = HcfKeyAgreementSpiX25519Create(¶ms, &spiObj); - + HcfResult res = TestHcfKeyAgreementSpiX25519Create(HCF_SUCCESS, &spiObj); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); spiObj->base.destroy(&g_obj); - HcfObjDestroy(spiObj); } @@ -354,14 +300,12 @@ HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest013, TestSize { StartRecordMallocNum(); HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate(g_x25519AlgoName.c_str(), &keyAgreement); + HcfResult res = TestHcfKeyAgreementCreate(g_x25519AlgoName, &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); HcfBlob out = { .data = nullptr, .len = 0 }; res = keyAgreement->generateSecret(keyAgreement, x25519KeyPair_->priKey, x25519KeyPair_->pubKey, &out); - ASSERT_EQ(res, HCF_SUCCESS); HcfObjDestroy(keyAgreement); @@ -399,14 +343,12 @@ HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest014, TestSize { StartRecordOpensslCallNum(); HcfKeyAgreement *keyAgreement = nullptr; - HcfResult res = HcfKeyAgreementCreate(g_x25519AlgoName.c_str(), &keyAgreement); + HcfResult res = TestHcfKeyAgreementCreate(g_x25519AlgoName, &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); HcfBlob out = { .data = nullptr, .len = 0 }; res = keyAgreement->generateSecret(keyAgreement, x25519KeyPair_->priKey, x25519KeyPair_->pubKey, &out); - ASSERT_EQ(res, HCF_SUCCESS); HcfObjDestroy(keyAgreement); @@ -443,24 +385,19 @@ HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest014, TestSize HWTEST_F(CryptoX25519KeyAgreementTest, CryptoX25519KeyAgreementTest015, TestSize.Level0) { HcfAsyKeyGenerator *generator = nullptr; - HcfResult res = HcfAsyKeyGeneratorCreate("X25519", &generator); + HcfResult res = TestHcfAsyKeyGeneratorCreate(g_x25519AlgoName.c_str(), &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); HcfKeyPair *x25519keyPair1 = nullptr; - res = generator->generateKeyPair(generator, nullptr, &x25519keyPair1); + res = TestGenerateKeyPair(generator, &x25519keyPair1); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(x25519keyPair1, nullptr); - HcfKeyPair *x25519keyPair2 = nullptr; - res = generator->generateKeyPair(generator, nullptr, &x25519keyPair2); + res = TestGenerateKeyPair(generator, &x25519keyPair2); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(x25519keyPair2, nullptr); HcfKeyAgreement *keyAgreement = nullptr; - res = HcfKeyAgreementCreate("X25519", &keyAgreement); + res = TestHcfKeyAgreementCreate(g_x25519AlgoName, &keyAgreement); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyAgreement, nullptr); HcfBlob outBlob1 = { .data = nullptr, .len = 0 }; res = keyAgreement->generateSecret(keyAgreement, x25519keyPair1->priKey, x25519keyPair2->pubKey, &outBlob1); diff --git a/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_four_test.cpp b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_four_test.cpp new file mode 100644 index 0000000..f10d03e --- /dev/null +++ b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_four_test.cpp @@ -0,0 +1,937 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "detailed_ecc_key_params.h" +#include "ecc_asy_key_common.h" +#include "ecc_asy_key_generator_openssl.h" +#include "ecc_openssl_common.h" +#include "ecc_openssl_common_param_spec.h" +#include "ecc_common.h" +#include "blob.h" +#include "memory.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "params_parser.h" + +using namespace std; +using namespace testing::ext; + +namespace { +constexpr int ZERO = 0; +constexpr int ONE = 1; +constexpr int TWO = 2; +constexpr int THREE = 3; +constexpr int FOUR = 4; +constexpr int FIVE = 5; +constexpr int SIX = 6; +constexpr int SEVEN = 7; +constexpr int EIGHT = 8; + +class CryptoEccAsyKeyGeneratorBySpecSubFourTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoEccAsyKeyGeneratorBySpecSubFourTest::SetUpTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecSubFourTest::TearDownTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecSubFourTest::SetUp() {} +void CryptoEccAsyKeyGeneratorBySpecSubFourTest::TearDown() {} + +HcfBlob g_mockEcc224PubKeyBlob = { + .data = g_mockEcc224PubKeyBlobData, + .len = ECC224_PUB_KEY_LEN +}; + +HcfBlob g_mockEcc224PriKeyBlob = { + .data = g_mockEcc224PriKeyBlobData, + .len = ECC224_PRI_KEY_LEN +}; + +static const char *GetMockClass(void) +{ + return "HcfSymKeyGenerator"; +} + +HcfObjectBase g_obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest516, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_FIELD_TYPE_STR +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest517, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest518, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_CURVE_NAME_STR +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest519, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest520, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_PK_X_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest521, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_X_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_PK_Y_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest522, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_Y_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_SK_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest523, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_SK_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:generateKey after convertKey +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest524, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + HcfKeyPair *keyPair = nullptr; + res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); + ASSERT_EQ(res, HCF_SUCCESS); + HcfBlob priKeyBlob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); + ASSERT_EQ(res, HCF_SUCCESS); + HcfAsyKeyGenerator *generator = nullptr; + res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + HcfKeyPair *outKeyPair = nullptr; + res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outKeyPair, nullptr); + HcfBlob outPubKeyBlob = { .data = nullptr, .len = 0 }; + res = outKeyPair->pubKey->base.getEncoded(&(outKeyPair->pubKey->base), &outPubKeyBlob); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outPubKeyBlob.data, nullptr); + ASSERT_NE(outPubKeyBlob.len, 0); + HcfBlob outPriKeyBlob = { .data = nullptr, .len = 0 }; + res = outKeyPair->priKey->base.getEncoded(&(outKeyPair->priKey->base), &outPriKeyBlob); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outPriKeyBlob.data, nullptr); + ASSERT_NE(outPriKeyBlob.len, 0); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); + HcfFree(outPubKeyBlob.data); + HcfFree(outPriKeyBlob.data); + HcfObjDestroy(outKeyPair); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorBySpec); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest525, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + + HcfKeyPair *keyPair = nullptr; + res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKeyBlob.data, nullptr); + ASSERT_NE(pubKeyBlob.len, 0); + + HcfAsyKeyGenerator *generator = nullptr; + res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *outKeyPair = nullptr; + res = generator->convertKey(generator, nullptr, &pubKeyBlob, nullptr, &outKeyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outKeyPair, nullptr); + ASSERT_NE(outKeyPair->pubKey, nullptr); + ASSERT_EQ(outKeyPair->priKey, nullptr); + + HcfBlob outPubKeyBlob = { .data = nullptr, .len = 0 }; + res = outKeyPair->pubKey->base.getEncoded(&(outKeyPair->pubKey->base), &outPubKeyBlob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outPubKeyBlob.data, nullptr); + ASSERT_NE(outPubKeyBlob.len, 0); + + HcfFree(pubKeyBlob.data); + HcfFree(outPubKeyBlob.data); + HcfObjDestroy(outKeyPair); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorBySpec); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest526, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + + HcfKeyPair *keyPair = nullptr; + res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob priKeyBlob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKeyBlob.data, nullptr); + ASSERT_NE(priKeyBlob.len, 0); + + HcfAsyKeyGenerator *generator = nullptr; + res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *outKeyPair = nullptr; + res = generator->convertKey(generator, nullptr, nullptr, &priKeyBlob, &outKeyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outKeyPair, nullptr); + ASSERT_EQ(outKeyPair->pubKey, nullptr); + ASSERT_NE(outKeyPair->priKey, nullptr); + + HcfBlob outPriKeyBlob = { .data = nullptr, .len = 0 }; + res = outKeyPair->priKey->base.getEncoded(&(outKeyPair->priKey->base), &outPriKeyBlob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outPriKeyBlob.data, nullptr); + ASSERT_NE(outPriKeyBlob.len, 0); + + HcfFree(priKeyBlob.data); + HcfFree(outPriKeyBlob.data); + HcfObjDestroy(outKeyPair); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorBySpec); +} + +// for test:测试ecc的spi类 +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest601, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = 0, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest602, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = HCF_ALG_MODE_NONE, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + ASSERT_EQ(spiObj, nullptr); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest603, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = 0, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest604, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = 0, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfPubKey *pubKey = nullptr; + res = spiObj->engineGeneratePubKeyBySpec(spiObj, paramSpec, &pubKey); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest605, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = 0, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfPriKey *priKey = nullptr; + res = spiObj->engineGeneratePriKeyBySpec(spiObj, paramSpec, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest606, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = 0, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest607, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = 0, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(nullptr); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest608, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = 0, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(&g_obj); + + HcfObjDestroy(spiObj); +} + +static HcfResult ConstructEcc521KeyPairParamsSpecByGet(HcfEccKeyPairParamsSpec *eccKeyPairSpec, + HcfBigInteger *params, int h) +{ + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = params[ZERO].data; + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = params[ZERO].len; + eccKeyPairSpec->base.a.data = params[ONE].data; + eccKeyPairSpec->base.a.len = params[ONE].len; + eccKeyPairSpec->base.b.data = params[TWO].data; + eccKeyPairSpec->base.b.len = params[TWO].len; + eccKeyPairSpec->base.g.x.data = params[THREE].data; + eccKeyPairSpec->base.g.x.len = params[THREE].len; + eccKeyPairSpec->base.g.y.data = params[FOUR].data; + eccKeyPairSpec->base.g.y.len = params[FOUR].len; + + eccKeyPairSpec->base.n.data = params[FIVE].data; + eccKeyPairSpec->base.n.len = params[FIVE].len; + eccKeyPairSpec->base.h = h; + eccKeyPairSpec->pk.x.data = params[SIX].data; + eccKeyPairSpec->pk.x.len = params[SIX].len; + eccKeyPairSpec->pk.y.data = params[SEVEN].data; + eccKeyPairSpec->pk.y.len = params[SEVEN].len; + + eccKeyPairSpec->sk.data = params[EIGHT].data; + eccKeyPairSpec->sk.len = params[EIGHT].len; + return HCF_SUCCESS; +} + +static void GetParams(HcfPriKey *priKey, HcfPubKey *pubKey, HcfBigInteger *params, int *retH) +{ + HcfBigInteger retFp = { .data = nullptr, .len = 0 }; + HcfBigInteger retA = { .data = nullptr, .len = 0 }; + HcfBigInteger retB = { .data = nullptr, .len = 0 }; + HcfBigInteger retGX = { .data = nullptr, .len = 0 }; + HcfBigInteger retGY = { .data = nullptr, .len = 0 }; + HcfBigInteger retN = { .data = nullptr, .len = 0 }; + HcfBigInteger retSk = { .data = nullptr, .len = 0 }; + HcfBigInteger retPkX = { .data = nullptr, .len = 0 }; + HcfBigInteger retPkY = { .data = nullptr, .len = 0 }; + int32_t res = priKey->getAsyKeySpecBigInteger(priKey, ECC_FP_P_BN, &retFp); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_A_BN, &retA); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_B_BN, &retB); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_G_X_BN, &retGX); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_G_Y_BN, &retGY); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_N_BN, &retN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, ECC_PK_X_BN, &retPkX); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, ECC_PK_Y_BN, &retPkY); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_SK_BN, &retSk); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecInt(pubKey, ECC_H_INT, retH); + EXPECT_EQ(res, HCF_SUCCESS); + params[ZERO].data = retFp.data; + params[ZERO].len = retFp.len; + params[ONE].data = retA.data; + params[ONE].len = retA.len; + params[TWO].data = retB.data; + params[TWO].len = retB.len; + params[THREE].data = retGX.data; + params[THREE].len = retGX.len; + params[FOUR].data = retGY.data; + params[FOUR].len = retGY.len; + params[FIVE].data = retN.data; + params[FIVE].len = retN.len; + params[SIX].data = retPkX.data; + params[SIX].len = retPkX.len; + params[SEVEN].data = retPkY.data; + params[SEVEN].len = retPkY.len; + params[EIGHT].data = retSk.data; + params[EIGHT].len = retSk.len; +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest609, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC521", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + int retH = 0; + HcfBigInteger params[9]; + GetParams(keyPair->priKey, keyPair->pubKey, params, &retH); + + HcfEccKeyPairParamsSpec eccKeyPairSpec = {}; + res = ConstructEcc521KeyPairParamsSpecByGet(&eccKeyPairSpec, params, retH); + HcfAsyKeyGeneratorBySpec *generatorSpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&eccKeyPairSpec), &generatorSpec); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorSpec, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorSpec->generateKeyPair(generatorSpec, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupKeyPair, nullptr); + + HcfOpensslEccPubKey *eccPubKey = reinterpret_cast(dupKeyPair->pubKey); + int32_t curveId = eccPubKey->curveId; + EXPECT_EQ(curveId, NID_secp521r1) << "the curId is " << NID_secp521r1; + for (HcfBigInteger tmp: params) { + if (tmp.data != nullptr) { + HcfFree(tmp.data); + } + } + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorSpec); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest610, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = HCF_ALG_ECC_224, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc224ErrCommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest611, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = HCF_ALG_ECC_521, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc521ErrKeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest612, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = HCF_ALG_ECC_224, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc224ErrPubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfPubKey *keyPair = nullptr; + res = spiObj->engineGeneratePubKeyBySpec(spiObj, paramSpec, &keyPair); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest613, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = HCF_ALG_ECC_224, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc224ErrPriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfPriKey *keyPair = nullptr; + res = spiObj->engineGeneratePriKeyBySpec(spiObj, paramSpec, &keyPair); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest614, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = HCF_ALG_ECC_256, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc256ErrCommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest615, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = HCF_ALG_ECC_384, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc384ErrCommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest616, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = HCF_ALG_ECC_521, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc521ErrCommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubFourTest, CryptoEccAsyKeyGeneratorBySpecSubFourTest617, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_ECC, + .bits = HCF_ALG_ECC_521, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + int32_t res = HcfAsyKeyGeneratorSpiEccCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEcc384ErrKeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); +} +} diff --git a/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_one_test.cpp b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_one_test.cpp new file mode 100644 index 0000000..e2bc2ab --- /dev/null +++ b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_one_test.cpp @@ -0,0 +1,1866 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "detailed_ecc_key_params.h" +#include "ecc_asy_key_common.h" +#include "ecc_asy_key_generator_openssl.h" +#include "ecc_openssl_common.h" +#include "ecc_openssl_common_param_spec.h" +#include "ecc_common.h" +#include "blob.h" +#include "memory.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "params_parser.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoEccAsyKeyGeneratorBySpecSubOneTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoEccAsyKeyGeneratorBySpecSubOneTest::SetUpTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecSubOneTest::TearDownTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecSubOneTest::SetUp() {} +void CryptoEccAsyKeyGeneratorBySpecSubOneTest::TearDown() {} + +static const char *GetMockClass(void) +{ + return "HcfSymKeyGenerator"; +} + +HcfObjectBase g_obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_9, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_10, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_11, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_12, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_13, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_14, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_15, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_16, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_17, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_18, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_19, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_20, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_21, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_22, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_23, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded(&(pubKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest314_24, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = priKey->base.getEncoded(&(priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest315, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(nullptr, &blob); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(blob.data, nullptr); + ASSERT_EQ(blob.len, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest316, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(blob.data, nullptr); + ASSERT_EQ(blob.len, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest317, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), nullptr); + + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest318_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->priKey->clearMem(keyPair->priKey); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest318_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + priKey->clearMem(priKey); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest318_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->priKey->clearMem(keyPair->priKey); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest318_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + priKey->clearMem(priKey); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest319, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->priKey->clearMem(nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest320, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->priKey->clearMem((HcfPriKey *)&g_obj); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest321_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->priKey->base.base.getClass(); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest321_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->priKey->base.base.getClass(); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest322_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy((HcfObjectBase *)(&(keyPair->priKey->base.base))); + keyPair->priKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest322_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy((HcfObjectBase *)(&(keyPair->priKey->base.base))); + keyPair->priKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest323, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy(nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest324, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->priKey->base.base.destroy(&g_obj); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest325_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *format = keyPair->priKey->base.getFormat(&keyPair->priKey->base); + + ASSERT_NE(format, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest325_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *format = keyPair->priKey->base.getFormat(&keyPair->priKey->base); + + ASSERT_NE(format, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest326, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *format = keyPair->priKey->base.getFormat(nullptr); + + ASSERT_EQ(format, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest327, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *format = keyPair->priKey->base.getFormat((HcfKey *)&g_obj); + + ASSERT_EQ(format, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest328_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->priKey->base.getAlgorithm(&keyPair->priKey->base); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest328_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->priKey->base.getAlgorithm(&keyPair->priKey->base); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest329, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->priKey->base.getAlgorithm(nullptr); + + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest330, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->priKey->base.getAlgorithm((HcfKey *)&g_obj); + + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest331_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest331_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest331_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest331_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest331_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest331_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest331_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest331_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest332, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(nullptr, &blob); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(blob.data, nullptr); + ASSERT_EQ(blob.len, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest333, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(blob.data, nullptr); + ASSERT_EQ(blob.len, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest334, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), nullptr); + + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_FP_P_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest401_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest401_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest401_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest401_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest401_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest401_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest401_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubOneTest, CryptoEccAsyKeyGeneratorBySpecSubOneTest401_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} +} diff --git a/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_three_test.cpp b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_three_test.cpp new file mode 100644 index 0000000..7ffcff5 --- /dev/null +++ b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_three_test.cpp @@ -0,0 +1,1820 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "detailed_ecc_key_params.h" +#include "ecc_asy_key_common.h" +#include "ecc_asy_key_generator_openssl.h" +#include "ecc_openssl_common.h" +#include "ecc_openssl_common_param_spec.h" +#include "ecc_common.h" +#include "blob.h" +#include "memory.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "params_parser.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoEccAsyKeyGeneratorBySpecSubThreeTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoEccAsyKeyGeneratorBySpecSubThreeTest::SetUpTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecSubThreeTest::TearDownTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecSubThreeTest::SetUp() {} +void CryptoEccAsyKeyGeneratorBySpecSubThreeTest::TearDown() {} + +HcfBlob g_mockEcc224PubKeyBlob = { + .data = g_mockEcc224PubKeyBlobData, + .len = ECC224_PUB_KEY_LEN +}; + +HcfBlob g_mockEcc224PriKeyBlob = { + .data = g_mockEcc224PriKeyBlobData, + .len = ECC224_PRI_KEY_LEN +}; + +static const char *GetMockClass(void) +{ + return "HcfSymKeyGenerator"; +} + +HcfObjectBase g_obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; + +// for test:ECC_FIELD_TYPE_STR +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest409_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest409_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest409_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = pubKey->getAsyKeySpecString(pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest409_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = priKey->getAsyKeySpecString(priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest409_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest409_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest409_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = pubKey->getAsyKeySpecString(pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest409_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = priKey->getAsyKeySpecString(priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:ECC_CURVE_NAME_STR +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = pubKey->getAsyKeySpecString(pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = priKey->getAsyKeySpecString(priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = pubKey->getAsyKeySpecString(pubKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = priKey->getAsyKeySpecString(priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// 192 has no curve name +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_9, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc192CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(retStr, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// 256 +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_10, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = priKey->getAsyKeySpecString(priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// 384 +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_11, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = priKey->getAsyKeySpecString(priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// 521 +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest410_12, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = priKey->getAsyKeySpecString(priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} +// for test:ECC_PK_X_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest411_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_X_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest411_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_X_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest411_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_X_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest411_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_X_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// for test:ECC_PK_Y_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest412_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_Y_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest412_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_Y_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest412_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_Y_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest412_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_Y_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +// for test:ECC_SK_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest413_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_SK_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest413_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_SK_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest413_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_SK_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest413_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_SK_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// get spec exception test +// get string +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest414_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + res = keyPair->priKey->getAsyKeySpecString(nullptr, item, nullptr); + + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest414_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *ret = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + res = keyPair->priKey->getAsyKeySpecString(reinterpret_cast(&g_obj), item, &ret); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(ret, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest414_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, nullptr); + + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest414_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *ret = nullptr; + AsyKeySpecItem item = ECC_A_BN; + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &ret); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(ret, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// get int +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest415_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + res = keyPair->priKey->getAsyKeySpecInt(nullptr, ECC_H_INT, nullptr); + + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest415_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int ret = 0; + AsyKeySpecItem item = ECC_H_INT; + res = keyPair->priKey->getAsyKeySpecInt(reinterpret_cast(&g_obj), item, &ret); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(ret, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest415_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + AsyKeySpecItem item = ECC_H_INT; + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, nullptr); + + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest415_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int ret = 0; + AsyKeySpecItem item = ECC_A_BN; + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &ret); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(ret, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// get Big Int +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest416_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_SK_BN; + + res = priKey->getAsyKeySpecBigInteger(nullptr, item, &retBigInt); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(retBigInt.data, nullptr); + ASSERT_EQ(retBigInt.len, 0); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest416_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + AsyKeySpecItem item = ECC_SK_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, nullptr); + + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest416_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_SK_BN; + + res = priKey->getAsyKeySpecBigInteger(reinterpret_cast(&g_obj), item, &retBigInt); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(retBigInt.data, nullptr); + ASSERT_EQ(retBigInt.len, 0); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest416_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_H_INT; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(retBigInt.data, nullptr); + ASSERT_EQ(retBigInt.len, 0); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest416_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_PK_X_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(retBigInt.data, nullptr); + ASSERT_EQ(retBigInt.len, 0); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest416_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_SK_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(retBigInt.data, nullptr); + ASSERT_EQ(retBigInt.len, 0); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} +// for test:测试Convert功能(新增的BySpec无此convert函数,但是需要测试旧版convert后密钥Key的get方法,因此先保留此部分,后续改动) +// for test:测试convertKey以后的函数指针功能 +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest501, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest502, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_FP_P_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_A_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest503, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest504, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_B_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest505, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest506, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_G_X_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest507, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest508, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_G_Y_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest509, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest510, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_N_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest511, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest512, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_H_INT +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest513, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest514, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:ECC_FIELD_SIZE_INT +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubThreeTest, CryptoEccAsyKeyGeneratorBySpecSubThreeTest515, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->convertKey(generator, nullptr, &g_mockEcc224PubKeyBlob, &g_mockEcc224PriKeyBlob, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} +} diff --git a/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_two_test.cpp b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_two_test.cpp new file mode 100644 index 0000000..945983d --- /dev/null +++ b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_sub_two_test.cpp @@ -0,0 +1,1746 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "detailed_ecc_key_params.h" +#include "ecc_asy_key_common.h" +#include "ecc_asy_key_generator_openssl.h" +#include "ecc_openssl_common.h" +#include "ecc_openssl_common_param_spec.h" +#include "ecc_common.h" +#include "blob.h" +#include "memory.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "params_parser.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoEccAsyKeyGeneratorBySpecSubTwoTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoEccAsyKeyGeneratorBySpecSubTwoTest::SetUpTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecSubTwoTest::TearDownTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecSubTwoTest::SetUp() {} +void CryptoEccAsyKeyGeneratorBySpecSubTwoTest::TearDown() {} + +// for test:ECC_A_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest402_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest402_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest402_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest402_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest402_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest402_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest402_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest402_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_A_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:ECC_B_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest403_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest403_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest403_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest403_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest403_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest403_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest403_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest403_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_B_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:ECC_G_X_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest404_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest404_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest404_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest404_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest404_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest404_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest404_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest404_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_X_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:ECC_G_Y_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest405_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest405_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest405_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest405_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest405_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest405_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest405_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest405_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_G_Y_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:ECC_N_BN +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest406_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest406_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest406_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest406_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest406_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest406_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest406_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = pubKey->getAsyKeySpecBigInteger(pubKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest406_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + AsyKeySpecItem item = ECC_N_BN; + + res = priKey->getAsyKeySpecBigInteger(priKey, item, &retBigInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retBigInt.data, nullptr); + ASSERT_NE(retBigInt.len, 0); + + HcfFree(retBigInt.data); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:ECC_H_INT +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest407_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest407_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest407_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = pubKey->getAsyKeySpecInt(pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest407_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = priKey->getAsyKeySpecInt(priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest407_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest407_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest407_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = pubKey->getAsyKeySpecInt(pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest407_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_H_INT; + + res = priKey->getAsyKeySpecInt(priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:ECC_FIELD_SIZE_INT +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest408_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest408_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest408_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = pubKey->getAsyKeySpecInt(pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest408_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = priKey->getAsyKeySpecInt(priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest408_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest408_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest408_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = pubKey->getAsyKeySpecInt(pubKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecSubTwoTest, CryptoEccAsyKeyGeneratorBySpecSubTwoTest408_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + + res = priKey->getAsyKeySpecInt(priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} +} diff --git a/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_test.cpp b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_test.cpp new file mode 100644 index 0000000..312e80e --- /dev/null +++ b/test/unittest/src/ecc/crypto_ecc_asy_key_generator_by_spec_test.cpp @@ -0,0 +1,1616 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "detailed_ecc_key_params.h" +#include "ecc_asy_key_common.h" +#include "ecc_asy_key_generator_openssl.h" +#include "ecc_openssl_common.h" +#include "ecc_openssl_common_param_spec.h" +#include "ecc_common.h" +#include "blob.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "params_parser.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoEccAsyKeyGeneratorBySpecTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void CryptoEccAsyKeyGeneratorBySpecTest::SetUpTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecTest::TearDownTestCase() {} +void CryptoEccAsyKeyGeneratorBySpecTest::SetUp() {} +void CryptoEccAsyKeyGeneratorBySpecTest::TearDown() {} + +static const char *GetMockClass(void) +{ + return "HcfSymKeyGenerator"; +} + +HcfObjectBase g_obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; + +/** + * @tc.name: CryptoEccAsyKeyGeneratorBySpecTest.CryptoEccAsyKeyGeneratorBySpecTest001 + * @tc.desc: Verify that the creation of the ECC224 key pair generator is normal. + * @tc.type: FUNC + * @tc.require: I5QWEI + */ +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +/** + * @tc.name: CryptoEccAsyKeyGeneratorBySpecTest.CryptoEccAsyKeyGeneratorBySpecTest001 + * @tc.desc: Verify that the creation of the ECC256 key pair generator is normal. + * @tc.type: FUNC + * @tc.require: I5QWEI + */ +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_7, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_8, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +/** + * @tc.name: CryptoEccAsyKeyGeneratorBySpecTest.CryptoEccAsyKeyGeneratorBySpecTest001 + * @tc.desc: Verify that the creation of the ECC384 key pair generator is normal. + * @tc.type: FUNC + * @tc.require: I5QWEI + */ +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_9, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_10, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_11, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_12, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +/** + * @tc.name: CryptoEccAsyKeyGeneratorBySpecTest.CryptoEccAsyKeyGeneratorBySpecTest001 + * @tc.desc: Verify that the creation of the ECC521 key pair generator is normal. + * @tc.type: FUNC + * @tc.require: I5QWEI + */ +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_13, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_14, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_15, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_16, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfObjDestroy(generator); +} + +// 192 -> 不在4条曲线中的fp曲线 +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest001_17, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc192CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + + HcfObjDestroy(generator); +} + +// for test:Generator的异常用例 +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest002, TestSize.Level0) +{ + HcfAsyKeyGeneratorBySpec *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorBySpecCreate(nullptr, &generator); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + ASSERT_EQ(generator, nullptr); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest003, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); +} + +// for test:generator函数指针测试(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest101, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + const char *className = generator->base.getClass(); + ASSERT_NE(className, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest102_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + generator->base.destroy((HcfObjectBase *)generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest102_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + generator->base.destroy((HcfObjectBase *)generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest102_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + generator->base.destroy((HcfObjectBase *)generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest102_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + generator->base.destroy((HcfObjectBase *)generator); +} + +// for test:generator函数指针测试(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest103, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + generator->base.destroy(nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest104, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + generator->base.destroy(&g_obj); + + HcfObjDestroy(generator); +} + +// for test:generator函数指针测试(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest105, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + const char *algName = generator->getAlgName(generator); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(generator); +} + +// for test:generator函数指针测试(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest106, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + const char *algName = generator->getAlgName(nullptr); + + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest107, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + const char *algName = generator->getAlgName((HcfAsyKeyGeneratorBySpec *)&g_obj); + + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(generator); +} + +// for test:测试keyPair生成函数(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest201_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:测试keyPair生成函数(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest202, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(nullptr, &keyPair); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + ASSERT_EQ(keyPair, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest203, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair((HcfAsyKeyGeneratorBySpec *)&g_obj, &keyPair); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + ASSERT_EQ(keyPair, nullptr); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest204, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + res = generator->generateKeyPair(generator, nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *className = keyPair->base.getClass(); + + ASSERT_NE(className, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + const char *className = pubKey->base.base.getClass(); + + ASSERT_NE(className, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *className = priKey->base.base.getClass(); + + ASSERT_NE(className, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *className = keyPair->base.getClass(); + + ASSERT_NE(className, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + const char *className = pubKey->base.base.getClass(); + + ASSERT_NE(className, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest301_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *className = priKey->base.base.getClass(); + + ASSERT_NE(className, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->base.destroy((HcfObjectBase *)(&(keyPair->base))); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + pubKey->base.base.destroy((HcfObjectBase *)(&(pubKey->base.base))); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + priKey->base.base.destroy((HcfObjectBase *)(&(priKey->base.base))); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->base.destroy((HcfObjectBase *)(&(keyPair->base))); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + pubKey->base.base.destroy((HcfObjectBase *)(&(pubKey->base.base))); + + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest302_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + priKey->base.base.destroy((HcfObjectBase *)(&(priKey->base.base))); + + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest303, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->base.destroy(nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest304, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->base.destroy(&g_obj); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest305_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *className = keyPair->pubKey->base.base.getClass(); + ASSERT_NE(className, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest305_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *className = keyPair->pubKey->base.base.getClass(); + ASSERT_NE(className, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest305_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy((HcfObjectBase *)(&(keyPair->pubKey->base.base))); + keyPair->pubKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest305_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy((HcfObjectBase *)(&(keyPair->pubKey->base.base))); + keyPair->pubKey = nullptr; + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest306, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy(nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest307, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + keyPair->pubKey->base.base.destroy(&g_obj); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *format = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + + ASSERT_NE(format, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + const char *format = pubKey->base.getFormat(&(pubKey->base)); + + ASSERT_NE(format, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *format = priKey->base.getFormat(&(priKey->base)); + + ASSERT_NE(format, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *format = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); + + ASSERT_NE(format, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + const char *format = pubKey->base.getFormat(&(pubKey->base)); + + ASSERT_NE(format, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest308_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *format = priKey->base.getFormat(&(priKey->base)); + + ASSERT_NE(format, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest309, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *format = keyPair->pubKey->base.getFormat(nullptr); + + ASSERT_EQ(format, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest310, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *format = keyPair->pubKey->base.getFormat((HcfKey *)&g_obj); + + ASSERT_EQ(format, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(正常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_1, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_2, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PubKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + const char *algName = pubKey->base.getAlgorithm(&(pubKey->base)); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_3, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224PriKeyParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *algName = priKey->base.getAlgorithm(&(priKey->base)); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_4, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_5, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + const char *algName = pubKey->base.getAlgorithm(&(pubKey->base)); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest311_6, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *algName = priKey->base.getAlgorithm(&(priKey->base)); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); +} + +// for test:测试keyPair的函数指针(异常) +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest312, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->pubKey->base.getAlgorithm(nullptr); + + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} + +HWTEST_F(CryptoEccAsyKeyGeneratorBySpecTest, CryptoEccAsyKeyGeneratorBySpecTest313, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + const char *algName = keyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); + + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); +} +} diff --git a/test/unittest/src/ecc/crypto_ecc_no_length_sign_sub_test.cpp b/test/unittest/src/ecc/crypto_ecc_no_length_sign_sub_test.cpp new file mode 100644 index 0000000..bfde4b5 --- /dev/null +++ b/test/unittest/src/ecc/crypto_ecc_no_length_sign_sub_test.cpp @@ -0,0 +1,1565 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "asy_key_generator.h" +#include "blob.h" +#include "detailed_ecc_key_params.h" +#include "ecc_openssl_common.h" +#include "ecc_openssl_common_param_spec.h" +#include "ecc_common.h" +#include "ecdsa_openssl.h" +#include "memory.h" +#include "securec.h" +#include "signature.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" +#include "openssl_common.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoEccNoLengthSignSubTest : public testing::Test { +public: + static void CryptoEccNoLengthSignTestSubEcc224(); + static void CryptoEccNoLengthSignTestSubEcc256(); + static void CryptoEccNoLengthSignTestSubEcc384(); + static void CryptoEccNoLengthSignTestSubEcc521(); + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); + + static HcfKeyPair *ecc224KeyPair_; + static HcfKeyPair *ecc256KeyPair_; + static HcfKeyPair *ecc384KeyPair_; + static HcfKeyPair *ecc521KeyPair_; +}; + +HcfKeyPair *CryptoEccNoLengthSignSubTest::ecc224KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthSignSubTest::ecc256KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthSignSubTest::ecc384KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthSignSubTest::ecc521KeyPair_ = nullptr; + +static const char *g_mockMessage = "hello world"; +static HcfBlob g_mockInput = { + .data = (uint8_t *)g_mockMessage, + .len = 12 +}; + +void CryptoEccNoLengthSignSubTest::SetUp() {} +void CryptoEccNoLengthSignSubTest::TearDown() {} + +static const bool IS_BIG_ENDIAN = IsBigEndian(); + +static string g_eccAlgName = "ECC"; +static string g_eccFieldType = "Fp"; +static int32_t g_ecc224CorrectH = 1; +static int32_t g_ecc256CorrectH = 1; +static int32_t g_ecc384CorrectH = 1; +static int32_t g_ecc521CorrectH = 1; + +HcfEccKeyPairParamsSpec g_ecc224KeyPairSpec; +HcfEccKeyPairParamsSpec g_ecc256KeyPairSpec; +HcfEccKeyPairParamsSpec g_ecc384KeyPairSpec; +HcfEccKeyPairParamsSpec g_ecc521KeyPairSpec; +HcfECFieldFp g_fieldFp; + +static HcfResult ConstructEcc224KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc224KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp224r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp224r1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_secp224r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp224r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp224r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp224r1_len; + eccKeyPairSpec->base.h = g_ecc224CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkX : g_ecc224CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp224r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkY : g_ecc224CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp224r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigSk : g_ecc224CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp224r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +static HcfResult ConstructEcc256KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc256KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.h = g_ecc256CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkX : g_ecc256CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkY : g_ecc256CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigSk : g_ecc256CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_X9_62_prime256v1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +static HcfResult ConstructEcc384KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc384KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp384r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp384r1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_secp384r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp384r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp384r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp384r1_len; + eccKeyPairSpec->base.h = g_ecc384CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkX : g_ecc384CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp384r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkY : g_ecc384CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp384r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigSk : g_ecc384CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp384r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +static HcfResult ConstructEcc521KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc521KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp521r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp521r1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_secp521r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp521r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp521r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp521r1_len; + eccKeyPairSpec->base.h = g_ecc521CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkX : g_ecc521CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp521r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkY : g_ecc521CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp521r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigSk : g_ecc521CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp521r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +// fix CryptoEccNoLengthSignSubTest::SetUpTestCase too large +void CryptoEccNoLengthSignSubTest::CryptoEccNoLengthSignTestSubEcc224() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc224KeyPair_ = keyPair; + + HcfObjDestroy(generator); +} + +// fix CryptoEccNoLengthSignSubTest::SetUpTestCase too large +void CryptoEccNoLengthSignSubTest::CryptoEccNoLengthSignTestSubEcc256() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc256KeyPair_ = keyPair; + + HcfObjDestroy(generator); +} + +// fix CryptoEccNoLengthSignSubTest::SetUpTestCase too large +void CryptoEccNoLengthSignSubTest::CryptoEccNoLengthSignTestSubEcc384() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc384KeyPair_ = keyPair; + HcfObjDestroy(generator); +} + +// fix CryptoEccNoLengthSignSubTest::SetUpTestCase too large +void CryptoEccNoLengthSignSubTest::CryptoEccNoLengthSignTestSubEcc521() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc521KeyPair_ = keyPair; + HcfObjDestroy(generator); +} + +void CryptoEccNoLengthSignSubTest::SetUpTestCase() +{ + CryptoEccNoLengthSignTestSubEcc224(); + CryptoEccNoLengthSignTestSubEcc256(); + CryptoEccNoLengthSignTestSubEcc384(); + CryptoEccNoLengthSignTestSubEcc521(); +} + +void CryptoEccNoLengthSignSubTest::TearDownTestCase() +{ + HcfObjDestroy(ecc224KeyPair_); + HcfObjDestroy(ecc256KeyPair_); + HcfObjDestroy(ecc384KeyPair_); + HcfObjDestroy(ecc521KeyPair_); +} + +static const char *GetMockClass(void) +{ + return "HcfMock"; +} + +static HcfObjectBase obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest416, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest417, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest418, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest419, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest420, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest421, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest422, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest423, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest424, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest425, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest426, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest427, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest428, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest429, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest430, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest431, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest432, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest433, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest434, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest435, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest436, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest437, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest438, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest439, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest440, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest441, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(nullptr, nullptr, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest442, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign((HcfSign *)(&obj), nullptr, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest443, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest444, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob input = { + .data = nullptr, + .len = 1 + }; + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &input, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest445, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob input = { + .data = (uint8_t *)g_mockMessage, + .len = 0 + }; + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &input, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest446, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->sign(sign, nullptr, nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest447, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + res = sign->update(sign, &input); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out2 = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out2); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA256", &verify); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + ASSERT_EQ(res, HCF_SUCCESS); + + verify->update(verify, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + ASSERT_EQ(flag, true); + + verify->update(verify, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + flag = verify->verify(verify, nullptr, &out2); + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfFree(out2.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest448, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &input); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out2 = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out2); + + HcfFree(out2.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest927, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(generator); + + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC|SHA256", &sign); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + HcfParamsSpec params; + res = sign->init(sign, ¶ms, keyPair->priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &input, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest928, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(generator); + + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC|SHA256", &sign); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + HcfParamsSpec params; + res = sign->init(sign, ¶ms, keyPair->priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HcfSignatureParams g_params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, +}; + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1001, TestSize.Level0) +{ + int32_t res = HcfSignSpiEcdsaCreate(&g_params, nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1003, TestSize.Level0) +{ + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->engineInit((HcfSignSpi *)&obj, nullptr, ecc256KeyPair_->priKey); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1004, TestSize.Level0) +{ + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->engineInit(spiObj, nullptr, (HcfPriKey *)&obj); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1005, TestSize.Level0) +{ + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = spiObj->engineUpdate(nullptr, &input); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1006, TestSize.Level0) +{ + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = spiObj->engineUpdate((HcfSignSpi *)&obj, &input); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1007, TestSize.Level0) +{ + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->engineUpdate(spiObj, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1008, TestSize.Level0) +{ + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + HcfBlob out = { .data = nullptr, .len = 0 }; + res = spiObj->engineSign((HcfSignSpi *)&obj, &input, &out); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1009, TestSize.Level0) +{ + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(nullptr); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1010, TestSize.Level0) +{ + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(&obj); + + HcfObjDestroy(spiObj); +} + +static void MemoryMallocTestFunc(uint32_t mallocCount, HcfBlob *input) +{ + for (uint32_t i = 0; i < mallocCount; i++) { + ResetRecordMallocNum(); + SetMockMallocIndex(i); + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + if (res != HCF_SUCCESS) { + continue; + } + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfObjDestroy(generator); + if (res != HCF_SUCCESS) { + continue; + } + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC|SHA256", &sign); + if (res != HCF_SUCCESS) { + HcfObjDestroy(keyPair); + continue; + } + res = sign->init(sign, nullptr, keyPair->priKey); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + continue; + } + res = sign->update(sign, input); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + continue; + } + HcfBlob out = { + .data = nullptr, + .len = 0 + }; + res = sign->sign(sign, nullptr, &out); + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + if (res == HCF_SUCCESS) { + HcfFree(out.data); + } + } +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1101, TestSize.Level0) +{ + StartRecordMallocNum(); + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(generator); + + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC|SHA256", &sign); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + HcfParamsSpec params; + res = sign->init(sign, ¶ms, keyPair->priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); + + uint32_t mallocCount = GetMallocNum(); + MemoryMallocTestFunc(mallocCount, &input); + + EndRecordMallocNum(); +} + +static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *input) +{ + for (uint32_t i = 0; i < mallocCount; i++) { + ResetOpensslCallNum(); + SetOpensslCallMockIndex(i); + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + if (res != HCF_SUCCESS) { + continue; + } + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfObjDestroy(generator); + if (res != HCF_SUCCESS) { + continue; + } + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC|SHA256", &sign); + if (res != HCF_SUCCESS) { + HcfObjDestroy(keyPair); + continue; + } + res = sign->init(sign, nullptr, keyPair->priKey); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + continue; + } + res = sign->update(sign, input); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + continue; + } + HcfBlob out = { + .data = nullptr, + .len = 0 + }; + res = sign->sign(sign, input, &out); + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + if (res == HCF_SUCCESS) { + HcfFree(out.data); + } + } +} + +HWTEST_F(CryptoEccNoLengthSignSubTest, CryptoEccNoLengthSignSubTest1102, TestSize.Level0) +{ + StartRecordOpensslCallNum(); + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(generator); + + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC|SHA256", &sign); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + HcfParamsSpec params; + res = sign->init(sign, ¶ms, keyPair->priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &input, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); + + uint32_t mallocCount = GetOpensslCallNum(); + OpensslMockTestFunc(mallocCount, &input); + + EndRecordOpensslCallNum(); +} +} diff --git a/test/unittest/src/crypto_ecc_no_length_sign_test.cpp b/test/unittest/src/ecc/crypto_ecc_no_length_sign_test.cpp similarity index 58% rename from test/unittest/src/crypto_ecc_no_length_sign_test.cpp rename to test/unittest/src/ecc/crypto_ecc_no_length_sign_test.cpp index e133790..12342fc 100644 --- a/test/unittest/src/crypto_ecc_no_length_sign_test.cpp +++ b/test/unittest/src/ecc/crypto_ecc_no_length_sign_test.cpp @@ -36,6 +36,10 @@ using namespace testing::ext; namespace { class CryptoEccNoLengthSignTest : public testing::Test { public: + static void CryptoEccNoLengthSignTestSubEcc224(); + static void CryptoEccNoLengthSignTestSubEcc256(); + static void CryptoEccNoLengthSignTestSubEcc384(); + static void CryptoEccNoLengthSignTestSubEcc521(); static void SetUpTestCase(); static void TearDownTestCase(); void SetUp(); @@ -212,7 +216,8 @@ static HcfResult ConstructEcc521KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) return HCF_SUCCESS; } -void CryptoEccNoLengthSignTest::SetUpTestCase() +// fix CryptoEccNoLengthSignTest::SetUpTestCase too large +void CryptoEccNoLengthSignTest::CryptoEccNoLengthSignTestSubEcc224() { HcfAsyKeyParamsSpec *paramSpec = nullptr; int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); @@ -231,58 +236,78 @@ void CryptoEccNoLengthSignTest::SetUpTestCase() ecc224KeyPair_ = keyPair; HcfObjDestroy(generator); +} - HcfAsyKeyParamsSpec *paramSpec2 = nullptr; - res = ConstructEcc256KeyPairParamsSpec(¶mSpec2); +// fix CryptoEccNoLengthSignTest::SetUpTestCase too large +void CryptoEccNoLengthSignTest::CryptoEccNoLengthSignTestSubEcc256() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); - HcfAsyKeyGeneratorBySpec *generator2 = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec2, &generator2); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator2, nullptr); + ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair2 = nullptr; - res = generator2->generateKeyPair(generator2, &keyPair2); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair2, nullptr); + ASSERT_NE(keyPair, nullptr); - ecc256KeyPair_ = keyPair2; + ecc256KeyPair_ = keyPair; - HcfObjDestroy(generator2); + HcfObjDestroy(generator); +} - HcfAsyKeyParamsSpec *paramSpec3 = nullptr; - res = ConstructEcc384KeyPairParamsSpec(¶mSpec3); +// fix CryptoEccNoLengthSignTest::SetUpTestCase too large +void CryptoEccNoLengthSignTest::CryptoEccNoLengthSignTestSubEcc384() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); - HcfAsyKeyGeneratorBySpec *generator3 = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec3, &generator3); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator3, nullptr); + ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair3 = nullptr; - res = generator3->generateKeyPair(generator3, &keyPair3); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair3, nullptr); + ASSERT_NE(keyPair, nullptr); - ecc384KeyPair_ = keyPair3; - HcfObjDestroy(generator3); + ecc384KeyPair_ = keyPair; + HcfObjDestroy(generator); +} - HcfAsyKeyParamsSpec *paramSpec4 = nullptr; - res = ConstructEcc521KeyPairParamsSpec(¶mSpec4); +// fix CryptoEccNoLengthSignTest::SetUpTestCase too large +void CryptoEccNoLengthSignTest::CryptoEccNoLengthSignTestSubEcc521() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); - HcfAsyKeyGeneratorBySpec *generator4 = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec4, &generator4); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator4, nullptr); + ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair4 = nullptr; - res = generator4->generateKeyPair(generator4, &keyPair4); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair4, nullptr); + ASSERT_NE(keyPair, nullptr); + + ecc521KeyPair_ = keyPair; + HcfObjDestroy(generator); +} - ecc521KeyPair_ = keyPair4; - HcfObjDestroy(generator4); +void CryptoEccNoLengthSignTest::SetUpTestCase() +{ + CryptoEccNoLengthSignTestSubEcc224(); + CryptoEccNoLengthSignTestSubEcc256(); + CryptoEccNoLengthSignTestSubEcc384(); + CryptoEccNoLengthSignTestSubEcc521(); } void CryptoEccNoLengthSignTest::TearDownTestCase() @@ -1389,7 +1414,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest401, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1416,7 +1441,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest402, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1443,7 +1468,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest403, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1470,7 +1495,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest404, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1497,7 +1522,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest405, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1524,7 +1549,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest406, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1551,7 +1576,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest407, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1578,7 +1603,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest408, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1605,7 +1630,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest409, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1632,7 +1657,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest410, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1659,7 +1684,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest411, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1686,7 +1711,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest412, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1713,7 +1738,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest413, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1740,7 +1765,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest414, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1767,1242 +1792,7 @@ HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest415, TestSize.Level ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest416, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest417, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest418, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest419, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest420, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest421, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest422, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest423, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest424, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest425, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest426, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest427, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest428, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest429, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest430, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest431, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest432, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest433, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest434, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest435, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest436, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest437, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest438, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest439, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest440, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest441, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(nullptr, nullptr, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest442, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign((HcfSign *)(&obj), nullptr, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest443, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest444, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob input = { - .data = nullptr, - .len = 1 - }; - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &input, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest445, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob input = { - .data = (uint8_t *)g_mockMessage, - .len = 0 - }; - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &input, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest446, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->sign(sign, nullptr, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest447, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - res = sign->update(sign, &input); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out2 = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out2); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA256", &verify); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - ASSERT_EQ(res, HCF_SUCCESS); - - verify->update(verify, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - ASSERT_EQ(flag, true); - - verify->update(verify, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - flag = verify->verify(verify, nullptr, &out2); - ASSERT_EQ(flag, true); - - free(out.data); - free(out2.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest448, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &input); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out2 = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out2); - - free(out2.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest927, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC|SHA256", &sign); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &input, &out); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest928, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC|SHA256", &sign); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HcfSignatureParams g_params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, -}; - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1001, TestSize.Level0) -{ - int32_t res = HcfSignSpiEcdsaCreate(&g_params, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1003, TestSize.Level0) -{ - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->engineInit((HcfSignSpi *)&obj, nullptr, ecc256KeyPair_->priKey); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1004, TestSize.Level0) -{ - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->engineInit(spiObj, nullptr, (HcfPriKey *)&obj); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1005, TestSize.Level0) -{ - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = spiObj->engineUpdate(nullptr, &input); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1006, TestSize.Level0) -{ - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = spiObj->engineUpdate((HcfSignSpi *)&obj, &input); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1007, TestSize.Level0) -{ - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->engineUpdate(spiObj, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1008, TestSize.Level0) -{ - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - HcfBlob out = { .data = nullptr, .len = 0 }; - res = spiObj->engineSign((HcfSignSpi *)&obj, &input, &out); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1009, TestSize.Level0) -{ - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(nullptr); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1010, TestSize.Level0) -{ - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(&g_params, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(&obj); - - HcfObjDestroy(spiObj); -} - -static void MemoryMallocTestFunc(uint32_t mallocCount, HcfBlob *input) -{ - for (uint32_t i = 0; i < mallocCount; i++) { - ResetRecordMallocNum(); - SetMockMallocIndex(i); - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - if (res != HCF_SUCCESS) { - continue; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - HcfObjDestroy(generator); - if (res != HCF_SUCCESS) { - continue; - } - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC|SHA256", &sign); - if (res != HCF_SUCCESS) { - HcfObjDestroy(keyPair); - continue; - } - res = sign->init(sign, nullptr, keyPair->priKey); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - continue; - } - res = sign->update(sign, input); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - continue; - } - HcfBlob out = { - .data = nullptr, - .len = 0 - }; - res = sign->sign(sign, nullptr, &out); - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - if (res == HCF_SUCCESS) { - free(out.data); - } - } -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1101, TestSize.Level0) -{ - StartRecordMallocNum(); - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC|SHA256", &sign); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); - - uint32_t mallocCount = GetMallocNum(); - MemoryMallocTestFunc(mallocCount, &input); - - EndRecordMallocNum(); -} - -static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *input) -{ - for (uint32_t i = 0; i < mallocCount; i++) { - ResetOpensslCallNum(); - SetOpensslCallMockIndex(i); - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - if (res != HCF_SUCCESS) { - continue; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - HcfObjDestroy(generator); - if (res != HCF_SUCCESS) { - continue; - } - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC|SHA256", &sign); - if (res != HCF_SUCCESS) { - HcfObjDestroy(keyPair); - continue; - } - res = sign->init(sign, nullptr, keyPair->priKey); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - continue; - } - res = sign->update(sign, input); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - continue; - } - HcfBlob out = { - .data = nullptr, - .len = 0 - }; - res = sign->sign(sign, input, &out); - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - if (res == HCF_SUCCESS) { - free(out.data); - } - } -} - -HWTEST_F(CryptoEccNoLengthSignTest, CryptoEccNoLengthSignTest1102, TestSize.Level0) -{ - StartRecordOpensslCallNum(); - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC|SHA256", &sign); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &input, &out); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); - - uint32_t mallocCount = GetOpensslCallNum(); - OpensslMockTestFunc(mallocCount, &input); - - EndRecordOpensslCallNum(); -} } diff --git a/test/unittest/src/crypto_ecc_no_length_verify_test.cpp b/test/unittest/src/ecc/crypto_ecc_no_length_verify_sub_test.cpp similarity index 53% rename from test/unittest/src/crypto_ecc_no_length_verify_test.cpp rename to test/unittest/src/ecc/crypto_ecc_no_length_verify_sub_test.cpp index ed93887..27e45aa 100644 --- a/test/unittest/src/crypto_ecc_no_length_verify_test.cpp +++ b/test/unittest/src/ecc/crypto_ecc_no_length_verify_sub_test.cpp @@ -34,8 +34,12 @@ using namespace std; using namespace testing::ext; namespace { -class CryptoEccNoLengthVerifyTest : public testing::Test { +class CryptoEccNoLengthVerifySubTest : public testing::Test { public: + static void CryptoEccNoLengthSignTestSubEcc224(); + static void CryptoEccNoLengthSignTestSubEcc256(); + static void CryptoEccNoLengthSignTestSubEcc384(); + static void CryptoEccNoLengthSignTestSubEcc521(); static void SetUpTestCase(); static void TearDownTestCase(); void SetUp(); @@ -47,10 +51,10 @@ public: static HcfKeyPair *ecc521KeyPair_; }; -HcfKeyPair *CryptoEccNoLengthVerifyTest::ecc224KeyPair_ = nullptr; -HcfKeyPair *CryptoEccNoLengthVerifyTest::ecc256KeyPair_ = nullptr; -HcfKeyPair *CryptoEccNoLengthVerifyTest::ecc384KeyPair_ = nullptr; -HcfKeyPair *CryptoEccNoLengthVerifyTest::ecc521KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthVerifySubTest::ecc224KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthVerifySubTest::ecc256KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthVerifySubTest::ecc384KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthVerifySubTest::ecc521KeyPair_ = nullptr; static const char *g_mockMessage = "hello world"; static HcfBlob g_mockInput = { @@ -58,8 +62,8 @@ static HcfBlob g_mockInput = { .len = 12 }; -void CryptoEccNoLengthVerifyTest::SetUp() {} -void CryptoEccNoLengthVerifyTest::TearDown() {} +void CryptoEccNoLengthVerifySubTest::SetUp() {} +void CryptoEccNoLengthVerifySubTest::TearDown() {} static const bool IS_BIG_ENDIAN = IsBigEndian(); @@ -212,7 +216,8 @@ static HcfResult ConstructEcc521KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) return HCF_SUCCESS; } -void CryptoEccNoLengthVerifyTest::SetUpTestCase() +// fix CryptoEccNoLengthVerifySubTest::SetUpTestCase too large +void CryptoEccNoLengthVerifySubTest::CryptoEccNoLengthSignTestSubEcc224() { HcfAsyKeyParamsSpec *paramSpec = nullptr; int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); @@ -231,63 +236,81 @@ void CryptoEccNoLengthVerifyTest::SetUpTestCase() ecc224KeyPair_ = keyPair; HcfObjDestroy(generator); +} - HcfAsyKeyParamsSpec *paramSpec2 = nullptr; - res = ConstructEcc256KeyPairParamsSpec(¶mSpec2); +// fix CryptoEccNoLengthVerifySubTest::SetUpTestCase too large +void CryptoEccNoLengthVerifySubTest::CryptoEccNoLengthSignTestSubEcc256() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); - HcfAsyKeyGeneratorBySpec *generator2 = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec2, &generator2); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator2, nullptr); + ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair2 = nullptr; - res = generator2->generateKeyPair(generator2, &keyPair2); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair2, nullptr); + ASSERT_NE(keyPair, nullptr); - ecc256KeyPair_ = keyPair2; + ecc256KeyPair_ = keyPair; - HcfObjDestroy(generator2); + HcfObjDestroy(generator); +} - HcfAsyKeyParamsSpec *paramSpec3 = nullptr; - res = ConstructEcc384KeyPairParamsSpec(¶mSpec3); +// fix CryptoEccNoLengthVerifySubTest::SetUpTestCase too large +void CryptoEccNoLengthVerifySubTest::CryptoEccNoLengthSignTestSubEcc384() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); - HcfAsyKeyGeneratorBySpec *generator3 = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec3, &generator3); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator3, nullptr); + ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair3 = nullptr; - res = generator3->generateKeyPair(generator3, &keyPair3); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair3, nullptr); - - ecc384KeyPair_ = keyPair3; + ASSERT_NE(keyPair, nullptr); - HcfObjDestroy(generator3); + ecc384KeyPair_ = keyPair; + HcfObjDestroy(generator); +} - HcfAsyKeyParamsSpec *paramSpec4 = nullptr; - res = ConstructEcc521KeyPairParamsSpec(¶mSpec4); +// fix CryptoEccNoLengthVerifySubTest::SetUpTestCase too large +void CryptoEccNoLengthVerifySubTest::CryptoEccNoLengthSignTestSubEcc521() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); - HcfAsyKeyGeneratorBySpec *generator4 = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec4, &generator4); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator4, nullptr); + ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair4 = nullptr; - res = generator4->generateKeyPair(generator4, &keyPair4); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair4, nullptr); + ASSERT_NE(keyPair, nullptr); - ecc521KeyPair_ = keyPair4; + ecc521KeyPair_ = keyPair; + HcfObjDestroy(generator); +} - HcfObjDestroy(generator4); +void CryptoEccNoLengthVerifySubTest::SetUpTestCase() +{ + CryptoEccNoLengthSignTestSubEcc224(); + CryptoEccNoLengthSignTestSubEcc256(); + CryptoEccNoLengthSignTestSubEcc384(); + CryptoEccNoLengthSignTestSubEcc521(); } -void CryptoEccNoLengthVerifyTest::TearDownTestCase() +void CryptoEccNoLengthVerifySubTest::TearDownTestCase() { HcfObjDestroy(ecc224KeyPair_); HcfObjDestroy(ecc256KeyPair_); @@ -305,1539 +328,7 @@ static HcfObjectBase obj = { .destroy = nullptr }; -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest001, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest002, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest003, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest004, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest005, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest006, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ecc|SHA512", &verify); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(verify, nullptr); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest007, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA257", &verify); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(verify, nullptr); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest008, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|MD5", &verify); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(verify, nullptr); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest009, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECCSHA256", &verify); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(verify, nullptr); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest010, TestSize.Level0) -{ - int32_t res = HcfVerifyCreate("ECC|SHA256", nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest101, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - const char *className = verify->base.getClass(); - - ASSERT_NE(className, nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest102, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - verify->base.destroy((HcfObjectBase *)verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest103, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - verify->base.destroy(nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest104, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - verify->base.destroy(&obj); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest105, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - const char *algName = verify->getAlgoName(verify); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest106, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - const char *algName = verify->getAlgoName(nullptr); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest107, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - const char *algName = verify->getAlgoName((HcfVerify *)(&obj)); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest201, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest202, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest203, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest204, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest205, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest206, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest207, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest208, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest209, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest210, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest211, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest212, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest213, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest214, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest215, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest216, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest217, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest218, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest219, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest220, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest221, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(nullptr, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest222, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init((HcfVerify *)(&obj), nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest223, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest224, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest225, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, (HcfPubKey *)(&obj)); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest301, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest302, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest303, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest304, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest305, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest306, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest307, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest308, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest309, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest310, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest311, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest312, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest313, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest314, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest315, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest316, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest317, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest318, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest319, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest320, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest321, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(nullptr, &g_mockInput); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest322, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update((HcfVerify *)(&obj), &g_mockInput); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest323, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest324, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest325, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob input = { - .data = nullptr, - .len = 1 - }; - res = verify->update(verify, &input); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest326, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob input = { - .data = (uint8_t *)g_mockMessage, - .len = 0 - }; - res = verify->update(verify, &input); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest401, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest402, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest403, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest404, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest405, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest406, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest407, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest408, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest409, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest410, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest411, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest411, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA1", &sign); @@ -1878,12 +369,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest411, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest412, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest412, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA224", &sign); @@ -1924,12 +415,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest412, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest413, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest413, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -1970,12 +461,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest413, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest414, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest414, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA384", &sign); @@ -2016,12 +507,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest414, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest415, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest415, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA512", &sign); @@ -2062,12 +553,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest415, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest416, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest416, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA1", &sign); @@ -2108,12 +599,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest416, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest417, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest417, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA224", &sign); @@ -2154,12 +645,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest417, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest418, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest418, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -2200,12 +691,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest418, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest419, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest419, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA384", &sign); @@ -2246,12 +737,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest419, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest420, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest420, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA512", &sign); @@ -2292,12 +783,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest420, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest421, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest421, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA1", &sign); @@ -2330,12 +821,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest421, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest422, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest422, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA224", &sign); @@ -2368,12 +859,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest422, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest423, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest423, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -2406,12 +897,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest423, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest424, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest424, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA384", &sign); @@ -2444,12 +935,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest424, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest425, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest425, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA512", &sign); @@ -2482,12 +973,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest425, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest426, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest426, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA1", &sign); @@ -2520,12 +1011,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest426, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest427, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest427, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA224", &sign); @@ -2558,12 +1049,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest427, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest428, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest428, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -2596,12 +1087,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest428, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest429, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest429, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA384", &sign); @@ -2634,12 +1125,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest429, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest430, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest430, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA512", &sign); @@ -2672,12 +1163,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest430, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest431, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest431, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA1", &sign); @@ -2710,12 +1201,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest431, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest432, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest432, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA224", &sign); @@ -2748,12 +1239,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest432, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest433, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest433, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -2786,12 +1277,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest433, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest434, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest434, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA384", &sign); @@ -2824,12 +1315,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest434, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest435, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest435, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA512", &sign); @@ -2862,12 +1353,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest435, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest436, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest436, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA1", &sign); @@ -2900,12 +1391,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest436, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest437, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest437, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA224", &sign); @@ -2938,12 +1429,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest437, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest438, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest438, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -2976,12 +1467,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest438, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest439, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest439, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA384", &sign); @@ -3014,12 +1505,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest439, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest440, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest440, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA512", &sign); @@ -3052,12 +1543,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest440, TestSize.L ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest441, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest441, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -3098,12 +1589,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest441, TestSize.L ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest442, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest442, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -3144,12 +1635,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest442, TestSize.L ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest443, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest443, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -3186,12 +1677,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest443, TestSize.L ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest444, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest444, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -3232,12 +1723,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest444, TestSize.L ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest445, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest445, TestSize.Level0) { HcfSign *sign = nullptr; int32_t res = HcfSignCreate("ECC|SHA256", &sign); @@ -3278,12 +1769,12 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest445, TestSize.L ASSERT_EQ(flag, false); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest446, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest446, TestSize.Level0) { HcfVerify *verify = nullptr; int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); @@ -3306,7 +1797,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest446, TestSize.L HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest447, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest447, TestSize.Level0) { HcfVerify *verify = nullptr; int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); @@ -3333,7 +1824,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest447, TestSize.L HcfObjDestroy(verify); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest448, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest448, TestSize.Level0) { HcfVerify *verify = nullptr; int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); @@ -3367,14 +1858,14 @@ HcfSignatureParams g_params = { .mgf1md = HCF_OPENSSL_DIGEST_SHA256, }; -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest501, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest501, TestSize.Level0) { int32_t res = HcfVerifySpiEcdsaCreate(&g_params, nullptr); ASSERT_EQ(res, HCF_INVALID_PARAMS); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest503, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest503, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); @@ -3388,7 +1879,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest503, TestSize.L HcfObjDestroy(spiObj); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest504, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest504, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); @@ -3402,7 +1893,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest504, TestSize.L HcfObjDestroy(spiObj); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest505, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest505, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); @@ -3421,7 +1912,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest505, TestSize.L HcfObjDestroy(spiObj); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest506, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest506, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); @@ -3440,7 +1931,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest506, TestSize.L HcfObjDestroy(spiObj); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest507, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest507, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); @@ -3454,7 +1945,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest507, TestSize.L HcfObjDestroy(spiObj); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest508, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest508, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); @@ -3474,7 +1965,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest508, TestSize.L HcfObjDestroy(spiObj); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest509, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest509, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); @@ -3493,7 +1984,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest509, TestSize.L HcfObjDestroy(spiObj); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest510, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest510, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); @@ -3506,7 +1997,7 @@ HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest510, TestSize.L HcfObjDestroy(spiObj); } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest511, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest511, TestSize.Level0) { HcfVerifySpi *spiObj = nullptr; int32_t res = HcfVerifySpiEcdsaCreate(&g_params, &spiObj); @@ -3526,7 +2017,7 @@ static bool GetSignTestData(HcfBlob *out) if (res != HCF_SUCCESS) { return false; } - res = sign->init(sign, nullptr, CryptoEccNoLengthVerifyTest::ecc224KeyPair_->priKey); + res = sign->init(sign, nullptr, CryptoEccNoLengthVerifySubTest::ecc224KeyPair_->priKey); if (res != HCF_SUCCESS) { HcfObjDestroy(sign); return false; @@ -3551,7 +2042,7 @@ static void MemoryMockTestFunc(uint32_t mallocCount, HcfBlob *out) if (res != HCF_SUCCESS) { continue; } - res = verify->init(verify, nullptr, CryptoEccNoLengthVerifyTest::ecc224KeyPair_->pubKey); + res = verify->init(verify, nullptr, CryptoEccNoLengthVerifySubTest::ecc224KeyPair_->pubKey); if (res != HCF_SUCCESS) { HcfObjDestroy(verify); continue; @@ -3566,7 +2057,7 @@ static void MemoryMockTestFunc(uint32_t mallocCount, HcfBlob *out) } } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest601, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest601, TestSize.Level0) { HcfBlob out = { .data = nullptr, .len = 0 }; GetSignTestData(&out); @@ -3606,7 +2097,7 @@ static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *out) if (res != HCF_SUCCESS) { continue; } - res = verify->init(verify, nullptr, CryptoEccNoLengthVerifyTest::ecc224KeyPair_->pubKey); + res = verify->init(verify, nullptr, CryptoEccNoLengthVerifySubTest::ecc224KeyPair_->pubKey); if (res != HCF_SUCCESS) { HcfObjDestroy(verify); continue; @@ -3621,7 +2112,7 @@ static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *out) } } -HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest602, TestSize.Level0) +HWTEST_F(CryptoEccNoLengthVerifySubTest, CryptoEccNoLengthVerifySubTest602, TestSize.Level0) { HcfBlob out = { .data = nullptr, .len = 0 }; ASSERT_EQ(GetSignTestData(&out), true); diff --git a/test/unittest/src/ecc/crypto_ecc_no_length_verify_test.cpp b/test/unittest/src/ecc/crypto_ecc_no_length_verify_test.cpp new file mode 100644 index 0000000..d6767e3 --- /dev/null +++ b/test/unittest/src/ecc/crypto_ecc_no_length_verify_test.cpp @@ -0,0 +1,1862 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "asy_key_generator.h" +#include "blob.h" +#include "detailed_ecc_key_params.h" +#include "ecc_openssl_common.h" +#include "ecc_openssl_common_param_spec.h" +#include "ecc_common.h" +#include "ecdsa_openssl.h" +#include "memory.h" +#include "securec.h" +#include "signature.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" +#include "openssl_common.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoEccNoLengthVerifyTest : public testing::Test { +public: + static void CryptoEccNoLengthSignTestSubEcc224(); + static void CryptoEccNoLengthSignTestSubEcc256(); + static void CryptoEccNoLengthSignTestSubEcc384(); + static void CryptoEccNoLengthSignTestSubEcc521(); + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); + + static HcfKeyPair *ecc224KeyPair_; + static HcfKeyPair *ecc256KeyPair_; + static HcfKeyPair *ecc384KeyPair_; + static HcfKeyPair *ecc521KeyPair_; +}; + +HcfKeyPair *CryptoEccNoLengthVerifyTest::ecc224KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthVerifyTest::ecc256KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthVerifyTest::ecc384KeyPair_ = nullptr; +HcfKeyPair *CryptoEccNoLengthVerifyTest::ecc521KeyPair_ = nullptr; + +static const char *g_mockMessage = "hello world"; +static HcfBlob g_mockInput = { + .data = (uint8_t *)g_mockMessage, + .len = 12 +}; + +void CryptoEccNoLengthVerifyTest::SetUp() {} +void CryptoEccNoLengthVerifyTest::TearDown() {} + +static const bool IS_BIG_ENDIAN = IsBigEndian(); + +static string g_eccAlgName = "ECC"; +static string g_eccFieldType = "Fp"; +static int32_t g_ecc224CorrectH = 1; +static int32_t g_ecc256CorrectH = 1; +static int32_t g_ecc384CorrectH = 1; +static int32_t g_ecc521CorrectH = 1; + +HcfEccKeyPairParamsSpec g_ecc224KeyPairSpec; +HcfEccKeyPairParamsSpec g_ecc256KeyPairSpec; +HcfEccKeyPairParamsSpec g_ecc384KeyPairSpec; +HcfEccKeyPairParamsSpec g_ecc521KeyPairSpec; +HcfECFieldFp g_fieldFp; + +static HcfResult ConstructEcc224KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc224KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp224r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp224r1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_secp224r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp224r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp224r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp224r1_len; + eccKeyPairSpec->base.h = g_ecc224CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkX : g_ecc224CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp224r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkY : g_ecc224CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp224r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigSk : g_ecc224CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp224r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +static HcfResult ConstructEcc256KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc256KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.h = g_ecc256CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkX : g_ecc256CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkY : g_ecc256CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigSk : g_ecc256CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_X9_62_prime256v1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +static HcfResult ConstructEcc384KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc384KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp384r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp384r1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_secp384r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp384r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp384r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp384r1_len; + eccKeyPairSpec->base.h = g_ecc384CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkX : g_ecc384CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp384r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkY : g_ecc384CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp384r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigSk : g_ecc384CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp384r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +static HcfResult ConstructEcc521KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc521KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp521r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp521r1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_secp521r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp521r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp521r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp521r1_len; + eccKeyPairSpec->base.h = g_ecc521CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkX : g_ecc521CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp521r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkY : g_ecc521CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp521r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigSk : g_ecc521CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp521r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +// fix CryptoEccNoLengthVerifyTest::SetUpTestCase too large +void CryptoEccNoLengthVerifyTest::CryptoEccNoLengthSignTestSubEcc224() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc224KeyPairParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc224KeyPair_ = keyPair; + + HcfObjDestroy(generator); +} + +// fix CryptoEccNoLengthVerifyTest::SetUpTestCase too large +void CryptoEccNoLengthVerifyTest::CryptoEccNoLengthSignTestSubEcc256() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc256KeyPairParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc256KeyPair_ = keyPair; + + HcfObjDestroy(generator); +} + +// fix CryptoEccNoLengthVerifyTest::SetUpTestCase too large +void CryptoEccNoLengthVerifyTest::CryptoEccNoLengthSignTestSubEcc384() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc384KeyPairParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc384KeyPair_ = keyPair; + HcfObjDestroy(generator); +} + +// fix CryptoEccNoLengthVerifyTest::SetUpTestCase too large +void CryptoEccNoLengthVerifyTest::CryptoEccNoLengthSignTestSubEcc521() +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + int32_t res = ConstructEcc521KeyPairParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc521KeyPair_ = keyPair; + HcfObjDestroy(generator); +} + +void CryptoEccNoLengthVerifyTest::SetUpTestCase() +{ + CryptoEccNoLengthSignTestSubEcc224(); + CryptoEccNoLengthSignTestSubEcc256(); + CryptoEccNoLengthSignTestSubEcc384(); + CryptoEccNoLengthSignTestSubEcc521(); +} + +void CryptoEccNoLengthVerifyTest::TearDownTestCase() +{ + HcfObjDestroy(ecc224KeyPair_); + HcfObjDestroy(ecc256KeyPair_); + HcfObjDestroy(ecc384KeyPair_); + HcfObjDestroy(ecc521KeyPair_); +} + +static const char *GetMockClass(void) +{ + return "HcfMock"; +} + +static HcfObjectBase obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest001, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest002, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest003, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest004, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest005, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest006, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ecc|SHA512", &verify); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(verify, nullptr); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest007, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA257", &verify); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(verify, nullptr); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest008, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|MD5", &verify); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(verify, nullptr); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest009, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECCSHA256", &verify); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(verify, nullptr); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest010, TestSize.Level0) +{ + int32_t res = HcfVerifyCreate("ECC|SHA256", nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest101, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + const char *className = verify->base.getClass(); + + ASSERT_NE(className, nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest102, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + verify->base.destroy((HcfObjectBase *)verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest103, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + verify->base.destroy(nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest104, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + verify->base.destroy(&obj); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest105, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + const char *algName = verify->getAlgoName(verify); + + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest106, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + const char *algName = verify->getAlgoName(nullptr); + + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest107, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + const char *algName = verify->getAlgoName((HcfVerify *)(&obj)); + + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest201, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest202, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest203, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest204, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest205, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest206, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest207, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest208, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest209, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest210, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest211, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest212, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest213, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest214, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest215, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest216, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest217, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest218, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest219, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest220, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest221, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(nullptr, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest222, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init((HcfVerify *)(&obj), nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest223, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest224, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest225, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, (HcfPubKey *)(&obj)); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest301, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest302, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest303, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest304, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest305, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest306, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest307, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest308, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest309, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest310, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest311, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest312, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest313, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest314, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest315, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest316, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest317, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest318, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest319, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest320, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest321, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(nullptr, &g_mockInput); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest322, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update((HcfVerify *)(&obj), &g_mockInput); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest323, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest324, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest325, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob input = { + .data = nullptr, + .len = 1 + }; + res = verify->update(verify, &input); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest326, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob input = { + .data = (uint8_t *)g_mockMessage, + .len = 0 + }; + res = verify->update(verify, &input); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest401, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest402, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest403, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest404, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest405, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest406, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest407, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest408, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest409, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccNoLengthVerifyTest, CryptoEccNoLengthVerifyTest410, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} +} diff --git a/test/unittest/src/ecc/crypto_ecc_sign_sub_test.cpp b/test/unittest/src/ecc/crypto_ecc_sign_sub_test.cpp new file mode 100644 index 0000000..c557a31 --- /dev/null +++ b/test/unittest/src/ecc/crypto_ecc_sign_sub_test.cpp @@ -0,0 +1,1426 @@ +/* + * Copyright (C) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "asy_key_generator.h" +#include "blob.h" +#include "ecdsa_openssl.h" +#include "memory.h" +#include "securec.h" +#include "signature.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoEccSignSubTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); + + static HcfKeyPair *ecc224KeyPair_; + static HcfKeyPair *ecc256KeyPair_; + static HcfKeyPair *ecc384KeyPair_; + static HcfKeyPair *ecc521KeyPair_; +}; + +HcfKeyPair *CryptoEccSignSubTest::ecc224KeyPair_ = nullptr; +HcfKeyPair *CryptoEccSignSubTest::ecc256KeyPair_ = nullptr; +HcfKeyPair *CryptoEccSignSubTest::ecc384KeyPair_ = nullptr; +HcfKeyPair *CryptoEccSignSubTest::ecc521KeyPair_ = nullptr; + +static const char *g_mockMessage = "hello world"; +static HcfBlob g_mockInput = { + .data = (uint8_t *)g_mockMessage, + .len = 12 +}; + +void CryptoEccSignSubTest::SetUp() {} +void CryptoEccSignSubTest::TearDown() {} + +void CryptoEccSignSubTest::SetUpTestCase() +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc224KeyPair_ = keyPair; + + HcfObjDestroy(generator); + + HcfAsyKeyGenerator *generator2 = nullptr; + res = HcfAsyKeyGeneratorCreate("ECC256", &generator2); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator2, nullptr); + + HcfKeyPair *keyPair2 = nullptr; + res = generator2->generateKeyPair(generator2, nullptr, &keyPair2); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair2, nullptr); + + ecc256KeyPair_ = keyPair2; + + HcfObjDestroy(generator2); + + HcfAsyKeyGenerator *generator3 = nullptr; + res = HcfAsyKeyGeneratorCreate("ECC384", &generator3); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator3, nullptr); + + HcfKeyPair *keyPair3 = nullptr; + res = generator3->generateKeyPair(generator3, nullptr, &keyPair3); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair3, nullptr); + + ecc384KeyPair_ = keyPair3; + + HcfObjDestroy(generator3); + + HcfAsyKeyGenerator *generator4 = nullptr; + res = HcfAsyKeyGeneratorCreate("ECC521", &generator4); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator4, nullptr); + + HcfKeyPair *keyPair4 = nullptr; + res = generator4->generateKeyPair(generator4, nullptr, &keyPair4); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair4, nullptr); + + ecc521KeyPair_ = keyPair4; + + HcfObjDestroy(generator4); +} + +void CryptoEccSignSubTest::TearDownTestCase() +{ + HcfObjDestroy(ecc224KeyPair_); + HcfObjDestroy(ecc256KeyPair_); + HcfObjDestroy(ecc384KeyPair_); + HcfObjDestroy(ecc521KeyPair_); +} + +static const char *GetMockClass(void) +{ + return "HcfMock"; +} + +static HcfObjectBase obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest416, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest417, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest418, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest419, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest420, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest421, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest422, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest423, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest424, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest425, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest426, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest427, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest428, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest429, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest430, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest431, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest432, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest433, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest434, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest435, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest436, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest437, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest438, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest439, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest440, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest441, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(nullptr, nullptr, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest442, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign((HcfSign *)(&obj), nullptr, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest443, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest444, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob input = { + .data = nullptr, + .len = 1 + }; + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &input, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest445, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob input = { + .data = (uint8_t *)g_mockMessage, + .len = 0 + }; + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &input, &out); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest446, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->sign(sign, nullptr, nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest447, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + res = sign->update(sign, &input); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out2 = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out2); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA256", &verify); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + ASSERT_EQ(res, HCF_SUCCESS); + + verify->update(verify, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + ASSERT_EQ(flag, true); + + verify->update(verify, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + flag = verify->verify(verify, nullptr, &out2); + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfFree(out2.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest448, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &input); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out2 = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out2); + + HcfFree(out2.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest927, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(generator); + + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC256|SHA256", &sign); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + HcfParamsSpec params; + res = sign->init(sign, ¶ms, keyPair->priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &input, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest928, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(generator); + + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC224|SHA256", &sign); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + HcfParamsSpec params; + res = sign->init(sign, ¶ms, keyPair->priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1001, TestSize.Level0) +{ + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(nullptr, &spiObj); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + ASSERT_EQ(spiObj, nullptr); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1002, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + int32_t res = HcfSignSpiEcdsaCreate(¶ms, nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1004, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->engineInit((HcfSignSpi *)&obj, nullptr, ecc256KeyPair_->priKey); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1005, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->engineInit(spiObj, nullptr, (HcfPriKey *)&obj); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1006, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = spiObj->engineUpdate(nullptr, &input); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1007, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = spiObj->engineUpdate((HcfSignSpi *)&obj, &input); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1008, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->engineUpdate(spiObj, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1009, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + HcfBlob out = { .data = nullptr, .len = 0 }; + res = spiObj->engineSign((HcfSignSpi *)&obj, &input, &out); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1010, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(nullptr); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1011, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfSignSpi *spiObj = nullptr; + int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(&obj); + + HcfObjDestroy(spiObj); +} + +static void MemoryMallocTestFunc(uint32_t mallocCount, HcfBlob *input) +{ + for (uint32_t i = 0; i < mallocCount; i++) { + ResetRecordMallocNum(); + SetMockMallocIndex(i); + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + if (res != HCF_SUCCESS) { + continue; + } + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfObjDestroy(generator); + if (res != HCF_SUCCESS) { + continue; + } + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC224|SHA256", &sign); + if (res != HCF_SUCCESS) { + HcfObjDestroy(keyPair); + continue; + } + res = sign->init(sign, nullptr, keyPair->priKey); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + continue; + } + res = sign->update(sign, input); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + continue; + } + HcfBlob out = { + .data = nullptr, + .len = 0 + }; + res = sign->sign(sign, nullptr, &out); + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + if (res == HCF_SUCCESS) { + HcfFree(out.data); + } + } +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1101, TestSize.Level0) +{ + StartRecordMallocNum(); + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(generator); + + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC224|SHA256", &sign); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + HcfParamsSpec params; + res = sign->init(sign, ¶ms, keyPair->priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); + + uint32_t mallocCount = GetMallocNum(); + MemoryMallocTestFunc(mallocCount, &input); + + EndRecordMallocNum(); +} + +static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *input) +{ + for (uint32_t i = 0; i < mallocCount; i++) { + ResetOpensslCallNum(); + SetOpensslCallMockIndex(i); + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + if (res != HCF_SUCCESS) { + continue; + } + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + HcfObjDestroy(generator); + if (res != HCF_SUCCESS) { + continue; + } + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC224|SHA256", &sign); + if (res != HCF_SUCCESS) { + HcfObjDestroy(keyPair); + continue; + } + res = sign->init(sign, nullptr, keyPair->priKey); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + continue; + } + res = sign->update(sign, input); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + continue; + } + HcfBlob out = { + .data = nullptr, + .len = 0 + }; + res = sign->sign(sign, input, &out); + HcfObjDestroy(sign); + HcfObjDestroy(keyPair); + if (res == HCF_SUCCESS) { + HcfFree(out.data); + } + } +} + +HWTEST_F(CryptoEccSignSubTest, CryptoEccSignSubTest1102, TestSize.Level0) +{ + StartRecordOpensslCallNum(); + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(generator); + + HcfSign *sign = nullptr; + res = HcfSignCreate("ECC224|SHA256", &sign); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + HcfParamsSpec params; + res = sign->init(sign, ¶ms, keyPair->priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = sign->update(sign, &input); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &input, &out); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfFree(out.data); + HcfObjDestroy(sign); + + uint32_t mallocCount = GetOpensslCallNum(); + OpensslMockTestFunc(mallocCount, &input); + + EndRecordOpensslCallNum(); +} +} diff --git a/test/unittest/src/crypto_ecc_sign_test.cpp b/test/unittest/src/ecc/crypto_ecc_sign_test.cpp similarity index 55% rename from test/unittest/src/crypto_ecc_sign_test.cpp rename to test/unittest/src/ecc/crypto_ecc_sign_test.cpp index aa756a1..26c4fd8 100644 --- a/test/unittest/src/crypto_ecc_sign_test.cpp +++ b/test/unittest/src/ecc/crypto_ecc_sign_test.cpp @@ -1412,7 +1412,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest401, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1439,7 +1439,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest402, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1466,7 +1466,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest403, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1493,7 +1493,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest404, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1520,7 +1520,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest405, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1547,7 +1547,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest406, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1574,7 +1574,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest407, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1601,7 +1601,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest408, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1628,7 +1628,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest409, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1655,7 +1655,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest410, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1682,7 +1682,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest411, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1709,7 +1709,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest412, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1736,7 +1736,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest413, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1763,7 +1763,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest414, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } @@ -1790,1298 +1790,7 @@ HWTEST_F(CryptoEccSignTest, CryptoEccSignTest415, TestSize.Level0) ASSERT_NE(out.data, nullptr); ASSERT_NE(out.len, (const unsigned int)0); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); } - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest416, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest417, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest418, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest419, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest420, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest421, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest422, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest423, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest424, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest425, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest426, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest427, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest428, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest429, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest430, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest431, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest432, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest433, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest434, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest435, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest436, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest437, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest438, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest439, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest440, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest441, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(nullptr, nullptr, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest442, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign((HcfSign *)(&obj), nullptr, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest443, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest444, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob input = { - .data = nullptr, - .len = 1 - }; - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &input, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest445, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob input = { - .data = (uint8_t *)g_mockMessage, - .len = 0 - }; - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &input, &out); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest446, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->sign(sign, nullptr, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest447, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - res = sign->update(sign, &input); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out2 = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out2); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA256", &verify); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - ASSERT_EQ(res, HCF_SUCCESS); - - verify->update(verify, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - ASSERT_EQ(flag, true); - - verify->update(verify, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - flag = verify->verify(verify, nullptr, &out2); - ASSERT_EQ(flag, true); - - free(out.data); - free(out2.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest448, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &input); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out2 = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out2); - - free(out2.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest927, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC256|SHA256", &sign); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &input, &out); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest928, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC224|SHA256", &sign); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1001, TestSize.Level0) -{ - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(nullptr, &spiObj); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(spiObj, nullptr); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1002, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - int32_t res = HcfSignSpiEcdsaCreate(¶ms, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1004, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->engineInit((HcfSignSpi *)&obj, nullptr, ecc256KeyPair_->priKey); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1005, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->engineInit(spiObj, nullptr, (HcfPriKey *)&obj); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1006, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = spiObj->engineUpdate(nullptr, &input); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1007, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = spiObj->engineUpdate((HcfSignSpi *)&obj, &input); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1008, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->engineUpdate(spiObj, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1009, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - HcfBlob out = { .data = nullptr, .len = 0 }; - res = spiObj->engineSign((HcfSignSpi *)&obj, &input, &out); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1010, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(nullptr); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1011, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfSignSpi *spiObj = nullptr; - int32_t res = HcfSignSpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(&obj); - - HcfObjDestroy(spiObj); -} - -static void MemoryMallocTestFunc(uint32_t mallocCount, HcfBlob *input) -{ - for (uint32_t i = 0; i < mallocCount; i++) { - ResetRecordMallocNum(); - SetMockMallocIndex(i); - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - if (res != HCF_SUCCESS) { - continue; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - HcfObjDestroy(generator); - if (res != HCF_SUCCESS) { - continue; - } - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC224|SHA256", &sign); - if (res != HCF_SUCCESS) { - HcfObjDestroy(keyPair); - continue; - } - res = sign->init(sign, nullptr, keyPair->priKey); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - continue; - } - res = sign->update(sign, input); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - continue; - } - HcfBlob out = { - .data = nullptr, - .len = 0 - }; - res = sign->sign(sign, nullptr, &out); - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - if (res == HCF_SUCCESS) { - free(out.data); - } - } -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1101, TestSize.Level0) -{ - StartRecordMallocNum(); - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC224|SHA256", &sign); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); - - uint32_t mallocCount = GetMallocNum(); - MemoryMallocTestFunc(mallocCount, &input); - - EndRecordMallocNum(); -} - -static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *input) -{ - for (uint32_t i = 0; i < mallocCount; i++) { - ResetOpensslCallNum(); - SetOpensslCallMockIndex(i); - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - if (res != HCF_SUCCESS) { - continue; - } - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - HcfObjDestroy(generator); - if (res != HCF_SUCCESS) { - continue; - } - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC224|SHA256", &sign); - if (res != HCF_SUCCESS) { - HcfObjDestroy(keyPair); - continue; - } - res = sign->init(sign, nullptr, keyPair->priKey); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - continue; - } - res = sign->update(sign, input); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - continue; - } - HcfBlob out = { - .data = nullptr, - .len = 0 - }; - res = sign->sign(sign, input, &out); - HcfObjDestroy(sign); - HcfObjDestroy(keyPair); - if (res == HCF_SUCCESS) { - free(out.data); - } - } -} - -HWTEST_F(CryptoEccSignTest, CryptoEccSignTest1102, TestSize.Level0) -{ - StartRecordOpensslCallNum(); - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(generator); - - HcfSign *sign = nullptr; - res = HcfSignCreate("ECC224|SHA256", &sign); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - HcfParamsSpec params; - res = sign->init(sign, ¶ms, keyPair->priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = sign->update(sign, &input); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &input, &out); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - free(out.data); - HcfObjDestroy(sign); - - uint32_t mallocCount = GetOpensslCallNum(); - OpensslMockTestFunc(mallocCount, &input); - - EndRecordOpensslCallNum(); -} } diff --git a/test/unittest/src/ecc/crypto_ecc_verify_sub_test.cpp b/test/unittest/src/ecc/crypto_ecc_verify_sub_test.cpp new file mode 100644 index 0000000..385624d --- /dev/null +++ b/test/unittest/src/ecc/crypto_ecc_verify_sub_test.cpp @@ -0,0 +1,1965 @@ +/* + * Copyright (C) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "asy_key_generator.h" +#include "blob.h" +#include "ecdsa_openssl.h" +#include "memory.h" +#include "securec.h" +#include "signature.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" + +using namespace std; +using namespace testing::ext; + +namespace { +class CryptoEccVerifySubTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); + + static HcfKeyPair *ecc224KeyPair_; + static HcfKeyPair *ecc256KeyPair_; + static HcfKeyPair *ecc384KeyPair_; + static HcfKeyPair *ecc521KeyPair_; +}; + +HcfKeyPair *CryptoEccVerifySubTest::ecc224KeyPair_ = nullptr; +HcfKeyPair *CryptoEccVerifySubTest::ecc256KeyPair_ = nullptr; +HcfKeyPair *CryptoEccVerifySubTest::ecc384KeyPair_ = nullptr; +HcfKeyPair *CryptoEccVerifySubTest::ecc521KeyPair_ = nullptr; + +static const char *g_mockMessage = "hello world"; +static HcfBlob g_mockInput = { + .data = (uint8_t *)g_mockMessage, + .len = 12 +}; + +void CryptoEccVerifySubTest::SetUp() {} +void CryptoEccVerifySubTest::TearDown() {} + +void CryptoEccVerifySubTest::SetUpTestCase() +{ + HcfAsyKeyGenerator *generator = nullptr; + int32_t res = HcfAsyKeyGeneratorCreate("ECC224", &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + ecc224KeyPair_ = keyPair; + + HcfObjDestroy(generator); + + HcfAsyKeyGenerator *generator2 = nullptr; + res = HcfAsyKeyGeneratorCreate("ECC256", &generator2); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator2, nullptr); + + HcfKeyPair *keyPair2 = nullptr; + res = generator2->generateKeyPair(generator2, nullptr, &keyPair2); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair2, nullptr); + + ecc256KeyPair_ = keyPair2; + + HcfObjDestroy(generator2); + + HcfAsyKeyGenerator *generator3 = nullptr; + res = HcfAsyKeyGeneratorCreate("ECC384", &generator3); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator3, nullptr); + + HcfKeyPair *keyPair3 = nullptr; + res = generator3->generateKeyPair(generator3, nullptr, &keyPair3); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair3, nullptr); + + ecc384KeyPair_ = keyPair3; + + HcfObjDestroy(generator3); + + HcfAsyKeyGenerator *generator4 = nullptr; + res = HcfAsyKeyGeneratorCreate("ECC521", &generator4); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator4, nullptr); + + HcfKeyPair *keyPair4 = nullptr; + res = generator4->generateKeyPair(generator4, nullptr, &keyPair4); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair4, nullptr); + + ecc521KeyPair_ = keyPair4; + + HcfObjDestroy(generator4); +} + +void CryptoEccVerifySubTest::TearDownTestCase() +{ + HcfObjDestroy(ecc224KeyPair_); + HcfObjDestroy(ecc256KeyPair_); + HcfObjDestroy(ecc384KeyPair_); + HcfObjDestroy(ecc521KeyPair_); +} + +static const char *GetMockClass(void) +{ + return "HcfMock"; +} + +static HcfObjectBase obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest412, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC384|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest413, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC384|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest414, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC384|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest415, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC384|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest416, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest417, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest418, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest419, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest420, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest421, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC224|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest422, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC224|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest423, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC224|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest424, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC224|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest425, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC224|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest426, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest427, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest428, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest429, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest430, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest431, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC384|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest432, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC384|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest433, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC384|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest434, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC384|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest435, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC384|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC384|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest436, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA1", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA1", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest437, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA224", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest438, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest439, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA384", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA384", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest440, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC521|SHA512", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC521|SHA512", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest441, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(nullptr, nullptr, &out); + + ASSERT_EQ(flag, false); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest442, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify((HcfVerify *)(&obj), nullptr, &out); + + ASSERT_EQ(flag, false); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest443, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, &out); + + ASSERT_EQ(flag, false); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest444, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob input = { + .data = nullptr, + .len = 1 + }; + bool flag = verify->verify(verify, &input, &out); + + ASSERT_EQ(flag, false); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest445, TestSize.Level0) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC256|SHA256", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = sign->update(sign, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, nullptr, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("ECC256|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob input = { + .data = (uint8_t *)g_mockMessage, + .len = 0 + }; + bool flag = verify->verify(verify, &input, &out); + + ASSERT_EQ(flag, false); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest446, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC256|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, nullptr, nullptr); + + ASSERT_EQ(flag, false); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest447, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC256|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob mockOut = { + .data = nullptr, + .len = 1 + }; + bool flag = verify->verify(verify, nullptr, &mockOut); + + ASSERT_EQ(flag, false); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest448, TestSize.Level0) +{ + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC256|SHA256", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob mockOut = { + .data = (uint8_t *)g_mockMessage, + .len = 0 + }; + bool flag = verify->verify(verify, nullptr, &mockOut); + + ASSERT_EQ(flag, false); + + HcfObjDestroy(verify); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest501, TestSize.Level0) +{ + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(nullptr, &spiObj); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); + ASSERT_EQ(spiObj, nullptr); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest502, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, nullptr); + + ASSERT_EQ(res, HCF_INVALID_PARAMS); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest504, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->engineInit((HcfVerifySpi *)&obj, nullptr, ecc256KeyPair_->pubKey); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest505, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->engineInit(spiObj, nullptr, (HcfPubKey *)&obj); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest506, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = spiObj->engineUpdate(nullptr, &input); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest507, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + res = spiObj->engineUpdate((HcfVerifySpi *)&obj, &input); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest508, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + res = spiObj->engineUpdate(spiObj, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest509, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + HcfBlob out = { .data = nullptr, .len = 0 }; + bool isOk = spiObj->engineVerify(nullptr, &input, &out); + ASSERT_EQ(isOk, false); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest510, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + const char *message = "hello world"; + HcfBlob input = { + .data = (uint8_t *)message, + .len = 12 + }; + bool isOk = spiObj->engineVerify((HcfVerifySpi *)&obj, &input, &input); + ASSERT_EQ(isOk, false); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest511, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(nullptr); + + HcfObjDestroy(spiObj); +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest512, TestSize.Level0) +{ + HcfSignatureParams params = { + .algo = HCF_ALG_ECC, + .padding = HCF_ALG_NOPADDING, + .md = HCF_OPENSSL_DIGEST_SHA256, + .mgf1md = HCF_OPENSSL_DIGEST_SHA256, + }; + HcfVerifySpi *spiObj = nullptr; + int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + spiObj->base.destroy(&obj); + + HcfObjDestroy(spiObj); +} + +static bool GetSignTestData(HcfBlob *out) +{ + HcfSign *sign = nullptr; + int32_t res = HcfSignCreate("ECC224|SHA224", &sign); + if (res != HCF_SUCCESS) { + return false; + } + res = sign->init(sign, nullptr, CryptoEccVerifySubTest::ecc224KeyPair_->priKey); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + return false; + } + res = sign->update(sign, &g_mockInput); + if (res != HCF_SUCCESS) { + HcfObjDestroy(sign); + return false; + } + res = sign->sign(sign, &g_mockInput, out); + HcfObjDestroy(sign); + return res == HCF_SUCCESS; +} + +static void MemoryMockTestFunc(uint32_t mallocCount, HcfBlob *out) +{ + for (int i = 0; i < mallocCount; i++) { + ResetRecordMallocNum(); + SetMockMallocIndex(i); + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC224|SHA224", &verify); + if (res != HCF_SUCCESS) { + continue; + } + res = verify->init(verify, nullptr, CryptoEccVerifySubTest::ecc224KeyPair_->pubKey); + if (res != HCF_SUCCESS) { + HcfObjDestroy(verify); + continue; + } + res = verify->update(verify, &g_mockInput); + if (res != HCF_SUCCESS) { + HcfObjDestroy(verify); + continue; + } + (void)verify->verify(verify, nullptr, out); + HcfObjDestroy(verify); + } +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest601, TestSize.Level0) +{ + HcfBlob out = { .data = nullptr, .len = 0 }; + GetSignTestData(&out); + StartRecordMallocNum(); + + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC224|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + HcfObjDestroy(verify); + + uint32_t mallocCount = GetMallocNum(); + MemoryMockTestFunc(mallocCount, &out); + EndRecordMallocNum(); +} + +static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *out) +{ + for (int i = 0; i < mallocCount; i++) { + ResetOpensslCallNum(); + SetOpensslCallMockIndex(i); + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC224|SHA224", &verify); + if (res != HCF_SUCCESS) { + continue; + } + res = verify->init(verify, nullptr, CryptoEccVerifySubTest::ecc224KeyPair_->pubKey); + if (res != HCF_SUCCESS) { + HcfObjDestroy(verify); + continue; + } + res = verify->update(verify, &g_mockInput); + if (res != HCF_SUCCESS) { + HcfObjDestroy(verify); + continue; + } + (void)verify->verify(verify, &g_mockInput, out); + HcfObjDestroy(verify); + } +} + +HWTEST_F(CryptoEccVerifySubTest, CryptoEccVerifySubTest602, TestSize.Level0) +{ + HcfBlob out = { .data = nullptr, .len = 0 }; + ASSERT_EQ(GetSignTestData(&out), true); + StartRecordOpensslCallNum(); + + HcfVerify *verify = nullptr; + int32_t res = HcfVerifyCreate("ECC224|SHA224", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + + res = verify->update(verify, &g_mockInput); + + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + + ASSERT_EQ(flag, true); + HcfObjDestroy(verify); + + uint32_t mallocCount = GetOpensslCallNum(); + OpensslMockTestFunc(mallocCount, &out); + EndRecordOpensslCallNum(); +} +} diff --git a/test/unittest/src/crypto_ecc_verify_test.cpp b/test/unittest/src/ecc/crypto_ecc_verify_test.cpp similarity index 49% rename from test/unittest/src/crypto_ecc_verify_test.cpp rename to test/unittest/src/ecc/crypto_ecc_verify_test.cpp index 73e5ef8..2250e84 100644 --- a/test/unittest/src/crypto_ecc_verify_test.cpp +++ b/test/unittest/src/ecc/crypto_ecc_verify_test.cpp @@ -1430,7 +1430,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest401, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1476,7 +1476,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest402, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1522,7 +1522,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest403, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1568,7 +1568,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest404, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1614,7 +1614,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest405, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1660,7 +1660,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest406, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1706,7 +1706,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest407, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1752,7 +1752,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest408, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1798,7 +1798,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest409, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1844,7 +1844,7 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest410, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } @@ -1890,1838 +1890,8 @@ HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest411, TestSize.Level0) ASSERT_EQ(flag, true); - free(out.data); + HcfFree(out.data); HcfObjDestroy(sign); HcfObjDestroy(verify); } - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest412, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC384|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest413, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC384|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest414, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC384|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest415, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC384|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest416, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest417, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest418, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest419, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest420, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest421, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC224|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest422, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC224|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest423, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC224|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest424, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC224|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest425, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc224KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC224|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest426, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest427, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest428, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest429, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest430, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest431, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC384|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest432, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC384|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest433, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC384|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest434, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC384|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest435, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC384|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc384KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC384|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc384KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest436, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA1", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA1", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest437, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA224", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest438, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest439, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA384", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA384", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest440, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC521|SHA512", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc521KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC521|SHA512", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc521KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest441, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(nullptr, nullptr, &out); - - ASSERT_EQ(flag, false); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest442, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify((HcfVerify *)(&obj), nullptr, &out); - - ASSERT_EQ(flag, false); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest443, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, &out); - - ASSERT_EQ(flag, false); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest444, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob input = { - .data = nullptr, - .len = 1 - }; - bool flag = verify->verify(verify, &input, &out); - - ASSERT_EQ(flag, false); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest445, TestSize.Level0) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC256|SHA256", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, ecc256KeyPair_->priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = sign->update(sign, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, nullptr, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("ECC256|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob input = { - .data = (uint8_t *)g_mockMessage, - .len = 0 - }; - bool flag = verify->verify(verify, &input, &out); - - ASSERT_EQ(flag, false); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest446, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC256|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, nullptr, nullptr); - - ASSERT_EQ(flag, false); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest447, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC256|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob mockOut = { - .data = nullptr, - .len = 1 - }; - bool flag = verify->verify(verify, nullptr, &mockOut); - - ASSERT_EQ(flag, false); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest448, TestSize.Level0) -{ - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC256|SHA256", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc256KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob mockOut = { - .data = (uint8_t *)g_mockMessage, - .len = 0 - }; - bool flag = verify->verify(verify, nullptr, &mockOut); - - ASSERT_EQ(flag, false); - - HcfObjDestroy(verify); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest501, TestSize.Level0) -{ - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(nullptr, &spiObj); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - ASSERT_EQ(spiObj, nullptr); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest502, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest504, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->engineInit((HcfVerifySpi *)&obj, nullptr, ecc256KeyPair_->pubKey); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest505, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->engineInit(spiObj, nullptr, (HcfPubKey *)&obj); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest506, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = spiObj->engineUpdate(nullptr, &input); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest507, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - res = spiObj->engineUpdate((HcfVerifySpi *)&obj, &input); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest508, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - res = spiObj->engineUpdate(spiObj, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest509, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - HcfBlob out = { .data = nullptr, .len = 0 }; - bool isOk = spiObj->engineVerify(nullptr, &input, &out); - ASSERT_EQ(isOk, false); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest510, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - const char *message = "hello world"; - HcfBlob input = { - .data = (uint8_t *)message, - .len = 12 - }; - bool isOk = spiObj->engineVerify((HcfVerifySpi *)&obj, &input, &input); - ASSERT_EQ(isOk, false); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest511, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(nullptr); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest512, TestSize.Level0) -{ - HcfSignatureParams params = { - .algo = HCF_ALG_ECC, - .padding = HCF_ALG_NOPADDING, - .md = HCF_OPENSSL_DIGEST_SHA256, - .mgf1md = HCF_OPENSSL_DIGEST_SHA256, - }; - HcfVerifySpi *spiObj = nullptr; - int32_t res = HcfVerifySpiEcdsaCreate(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - spiObj->base.destroy(&obj); - - HcfObjDestroy(spiObj); -} - -static bool GetSignTestData(HcfBlob *out) -{ - HcfSign *sign = nullptr; - int32_t res = HcfSignCreate("ECC224|SHA224", &sign); - if (res != HCF_SUCCESS) { - return false; - } - res = sign->init(sign, nullptr, CryptoEccVerifyTest::ecc224KeyPair_->priKey); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - return false; - } - res = sign->update(sign, &g_mockInput); - if (res != HCF_SUCCESS) { - HcfObjDestroy(sign); - return false; - } - res = sign->sign(sign, &g_mockInput, out); - HcfObjDestroy(sign); - return res == HCF_SUCCESS; -} - -static void MemoryMockTestFunc(uint32_t mallocCount, HcfBlob *out) -{ - for (int i = 0; i < mallocCount; i++) { - ResetRecordMallocNum(); - SetMockMallocIndex(i); - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC224|SHA224", &verify); - if (res != HCF_SUCCESS) { - continue; - } - res = verify->init(verify, nullptr, CryptoEccVerifyTest::ecc224KeyPair_->pubKey); - if (res != HCF_SUCCESS) { - HcfObjDestroy(verify); - continue; - } - res = verify->update(verify, &g_mockInput); - if (res != HCF_SUCCESS) { - HcfObjDestroy(verify); - continue; - } - (void)verify->verify(verify, nullptr, out); - HcfObjDestroy(verify); - } -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest601, TestSize.Level0) -{ - HcfBlob out = { .data = nullptr, .len = 0 }; - GetSignTestData(&out); - StartRecordMallocNum(); - - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC224|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - HcfObjDestroy(verify); - - uint32_t mallocCount = GetMallocNum(); - MemoryMockTestFunc(mallocCount, &out); - EndRecordMallocNum(); -} - -static void OpensslMockTestFunc(uint32_t mallocCount, HcfBlob *out) -{ - for (int i = 0; i < mallocCount; i++) { - ResetOpensslCallNum(); - SetOpensslCallMockIndex(i); - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC224|SHA224", &verify); - if (res != HCF_SUCCESS) { - continue; - } - res = verify->init(verify, nullptr, CryptoEccVerifyTest::ecc224KeyPair_->pubKey); - if (res != HCF_SUCCESS) { - HcfObjDestroy(verify); - continue; - } - res = verify->update(verify, &g_mockInput); - if (res != HCF_SUCCESS) { - HcfObjDestroy(verify); - continue; - } - (void)verify->verify(verify, &g_mockInput, out); - HcfObjDestroy(verify); - } -} - -HWTEST_F(CryptoEccVerifyTest, CryptoEccVerifyTest602, TestSize.Level0) -{ - HcfBlob out = { .data = nullptr, .len = 0 }; - ASSERT_EQ(GetSignTestData(&out), true); - StartRecordOpensslCallNum(); - - HcfVerify *verify = nullptr; - int32_t res = HcfVerifyCreate("ECC224|SHA224", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, ecc224KeyPair_->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - res = verify->update(verify, &g_mockInput); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - HcfObjDestroy(verify); - - uint32_t mallocCount = GetOpensslCallNum(); - OpensslMockTestFunc(mallocCount, &out); - EndRecordOpensslCallNum(); -} } diff --git a/test/unittest/src/ecc/ecc_asy_key_common.cpp b/test/unittest/src/ecc/ecc_asy_key_common.cpp new file mode 100644 index 0000000..5c70a8d --- /dev/null +++ b/test/unittest/src/ecc/ecc_asy_key_common.cpp @@ -0,0 +1,789 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "securec.h" + + +#include "asy_key_generator.h" +#include "detailed_ecc_key_params.h" +#include "ecc_asy_key_common.h" +#include "ecc_asy_key_generator_openssl.h" +#include "ecc_openssl_common.h" +#include "ecc_openssl_common_param_spec.h" +#include "ecc_common.h" +#include "blob.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "params_parser.h" + +static const bool IS_BIG_ENDIAN = IsBigEndian(); + +HcfResult ConstructEcc192CommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = &g_ecc192CommSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); + eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + eccCommSpec->field = tmpField; + eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigP : g_ecc192CorrectLittleP); + ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_SECP192R1_LEN; + eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigA : g_ecc192CorrectLittleA); + eccCommSpec->a.len = NID_SECP192R1_LEN; + eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigB : g_ecc192CorrectLittleB); + eccCommSpec->b.len = NID_SECP192R1_LEN; + eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigGX : g_ecc192CorrectLittleGX); + eccCommSpec->g.x.len = NID_SECP192R1_LEN; + eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigGY : g_ecc192CorrectLittleGY); + eccCommSpec->g.y.len = NID_SECP192R1_LEN; + eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc192CorrectBigN : g_ecc192CorrectLittleN); + eccCommSpec->n.len = NID_SECP192R1_LEN; + eccCommSpec->h = g_ecc192CorrectH; + + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc224CommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = &g_ecc224CommSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); + eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + eccCommSpec->field = tmpField; + eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); + ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp224r1_len; + eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); + eccCommSpec->a.len = NID_secp224r1_len; + eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); + eccCommSpec->b.len = NID_secp224r1_len; + eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); + eccCommSpec->g.x.len = NID_secp224r1_len; + eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); + eccCommSpec->g.y.len = NID_secp224r1_len; + eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); + eccCommSpec->n.len = NID_secp224r1_len; + eccCommSpec->h = g_ecc224CorrectH; + + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc224PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc224PubKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; + eccPubKeySpec->base.field = tmpField; + eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_secp224r1_len; + eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); + eccPubKeySpec->base.a.len = NID_secp224r1_len; + eccPubKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); + eccPubKeySpec->base.b.len = NID_secp224r1_len; + eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); + eccPubKeySpec->base.g.x.len = NID_secp224r1_len; + eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); + eccPubKeySpec->base.g.y.len = NID_secp224r1_len; + eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); + eccPubKeySpec->base.n.len = NID_secp224r1_len; + eccPubKeySpec->base.h = g_ecc224CorrectH; + eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkX : g_ecc224CorrectLittlePkX); + eccPubKeySpec->pk.x.len = NID_secp224r1_len; + eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkY : g_ecc224CorrectLittlePkY); + eccPubKeySpec->pk.y.len = NID_secp224r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc224PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc224PriKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; + eccPriKeySpec->base.field = tmpField; + eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_secp224r1_len; + eccPriKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); + eccPriKeySpec->base.a.len = NID_secp224r1_len; + eccPriKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); + eccPriKeySpec->base.b.len = NID_secp224r1_len; + eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); + eccPriKeySpec->base.g.x.len = NID_secp224r1_len; + eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); + eccPriKeySpec->base.g.y.len = NID_secp224r1_len; + eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); + eccPriKeySpec->base.n.len = NID_secp224r1_len; + eccPriKeySpec->base.h = g_ecc224CorrectH; + eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigSk : g_ecc224CorrectLittleSk); + eccPriKeySpec->sk.len = NID_secp224r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc224KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc224KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp224r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp224r1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigB : g_ecc224CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_secp224r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp224r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp224r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp224r1_len; + eccKeyPairSpec->base.h = g_ecc224CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkX : g_ecc224CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp224r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkY : g_ecc224CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp224r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigSk : g_ecc224CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp224r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc256CommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = &g_ecc256CommSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); + eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + eccCommSpec->field = tmpField; + eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); + ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_X9_62_prime256v1_len; + eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); + eccCommSpec->a.len = NID_X9_62_prime256v1_len; + eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); + eccCommSpec->b.len = NID_X9_62_prime256v1_len; + eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); + eccCommSpec->g.x.len = NID_X9_62_prime256v1_len; + eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); + eccCommSpec->g.y.len = NID_X9_62_prime256v1_len; + eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); + eccCommSpec->n.len = NID_X9_62_prime256v1_len; + eccCommSpec->h = g_ecc256CorrectH; + + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc256PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc256PubKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; + eccPubKeySpec->base.field = tmpField; + eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_X9_62_prime256v1_len; + eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); + eccPubKeySpec->base.a.len = NID_X9_62_prime256v1_len; + eccPubKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); + eccPubKeySpec->base.b.len = NID_X9_62_prime256v1_len; + eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); + eccPubKeySpec->base.g.x.len = NID_X9_62_prime256v1_len; + eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); + eccPubKeySpec->base.g.y.len = NID_X9_62_prime256v1_len; + eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); + eccPubKeySpec->base.n.len = NID_X9_62_prime256v1_len; + eccPubKeySpec->base.h = g_ecc256CorrectH; + eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkX : g_ecc256CorrectLittlePkX); + eccPubKeySpec->pk.x.len = NID_X9_62_prime256v1_len; + eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkY : g_ecc256CorrectLittlePkY); + eccPubKeySpec->pk.y.len = NID_X9_62_prime256v1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc256PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc256PriKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; + eccPriKeySpec->base.field = tmpField; + eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_X9_62_prime256v1_len; + eccPriKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); + eccPriKeySpec->base.a.len = NID_X9_62_prime256v1_len; + eccPriKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); + eccPriKeySpec->base.b.len = NID_X9_62_prime256v1_len; + eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); + eccPriKeySpec->base.g.x.len = NID_X9_62_prime256v1_len; + eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); + eccPriKeySpec->base.g.y.len = NID_X9_62_prime256v1_len; + eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); + eccPriKeySpec->base.n.len = NID_X9_62_prime256v1_len; + eccPriKeySpec->base.h = g_ecc256CorrectH; + eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigSk : g_ecc256CorrectLittleSk); + eccPriKeySpec->sk.len = NID_X9_62_prime256v1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc256KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc256KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigB : g_ecc256CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->base.h = g_ecc256CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkX : g_ecc256CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigPkY : g_ecc256CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_X9_62_prime256v1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigSk : g_ecc256CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_X9_62_prime256v1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc384CommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = &g_ecc384CommSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); + eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + eccCommSpec->field = tmpField; + eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); + ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp384r1_len; + eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); + eccCommSpec->a.len = NID_secp384r1_len; + eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); + eccCommSpec->b.len = NID_secp384r1_len; + eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); + eccCommSpec->g.x.len = NID_secp384r1_len; + eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); + eccCommSpec->g.y.len = NID_secp384r1_len; + eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); + eccCommSpec->n.len = NID_secp384r1_len; + eccCommSpec->h = g_ecc384CorrectH; + + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc384PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc384PubKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; + eccPubKeySpec->base.field = tmpField; + eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_secp384r1_len; + eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); + eccPubKeySpec->base.a.len = NID_secp384r1_len; + eccPubKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); + eccPubKeySpec->base.b.len = NID_secp384r1_len; + eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); + eccPubKeySpec->base.g.x.len = NID_secp384r1_len; + eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); + eccPubKeySpec->base.g.y.len = NID_secp384r1_len; + eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); + eccPubKeySpec->base.n.len = NID_secp384r1_len; + eccPubKeySpec->base.h = g_ecc384CorrectH; + eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkX : g_ecc384CorrectLittlePkX); + eccPubKeySpec->pk.x.len = NID_secp384r1_len; + eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkY : g_ecc384CorrectLittlePkY); + eccPubKeySpec->pk.y.len = NID_secp384r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc384PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc384PriKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; + eccPriKeySpec->base.field = tmpField; + eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_secp384r1_len; + eccPriKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); + eccPriKeySpec->base.a.len = NID_secp384r1_len; + eccPriKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); + eccPriKeySpec->base.b.len = NID_secp384r1_len; + eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); + eccPriKeySpec->base.g.x.len = NID_secp384r1_len; + eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); + eccPriKeySpec->base.g.y.len = NID_secp384r1_len; + eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); + eccPriKeySpec->base.n.len = NID_secp384r1_len; + eccPriKeySpec->base.h = g_ecc384CorrectH; + eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigSk : g_ecc384CorrectLittleSk); + eccPriKeySpec->sk.len = NID_secp384r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc384KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc384KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp384r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp384r1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigB : g_ecc384CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_secp384r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp384r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp384r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp384r1_len; + eccKeyPairSpec->base.h = g_ecc384CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkX : g_ecc384CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp384r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkY : g_ecc384CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp384r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigSk : g_ecc384CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp384r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc521CommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = &g_ecc521CommSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); + eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + eccCommSpec->field = tmpField; + eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); + ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp521r1_len; + eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); + eccCommSpec->a.len = NID_secp521r1_len; + eccCommSpec->b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); + eccCommSpec->b.len = NID_secp521r1_len; + eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); + eccCommSpec->g.x.len = NID_secp521r1_len; + eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); + eccCommSpec->g.y.len = NID_secp521r1_len; + eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); + eccCommSpec->n.len = NID_secp521r1_len; + eccCommSpec->h = g_ecc521CorrectH; + + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc521PubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc521PubKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; + eccPubKeySpec->base.field = tmpField; + eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_secp521r1_len; + eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); + eccPubKeySpec->base.a.len = NID_secp521r1_len; + eccPubKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); + eccPubKeySpec->base.b.len = NID_secp521r1_len; + eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); + eccPubKeySpec->base.g.x.len = NID_secp521r1_len; + eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); + eccPubKeySpec->base.g.y.len = NID_secp521r1_len; + eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); + eccPubKeySpec->base.n.len = NID_secp521r1_len; + eccPubKeySpec->base.h = g_ecc521CorrectH; + eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkX : g_ecc521CorrectLittlePkX); + eccPubKeySpec->pk.x.len = NID_secp521r1_len; + eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkY : g_ecc521CorrectLittlePkY); + eccPubKeySpec->pk.y.len = NID_secp521r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc521PriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc521PriKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; + eccPriKeySpec->base.field = tmpField; + eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_secp521r1_len; + eccPriKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); + eccPriKeySpec->base.a.len = NID_secp521r1_len; + eccPriKeySpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); + eccPriKeySpec->base.b.len = NID_secp521r1_len; + eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); + eccPriKeySpec->base.g.x.len = NID_secp521r1_len; + eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); + eccPriKeySpec->base.g.y.len = NID_secp521r1_len; + eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); + eccPriKeySpec->base.n.len = NID_secp521r1_len; + eccPriKeySpec->base.h = g_ecc521CorrectH; + eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigSk : g_ecc521CorrectLittleSk); + eccPriKeySpec->sk.len = NID_secp521r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc521KeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc521KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp521r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp521r1_len; + eccKeyPairSpec->base.b.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigB : g_ecc521CorrectLittleB); + eccKeyPairSpec->base.b.len = NID_secp521r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp521r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp521r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp521r1_len; + eccKeyPairSpec->base.h = g_ecc521CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkX : g_ecc521CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp521r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkY : g_ecc521CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp521r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigSk : g_ecc521CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp521r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc224ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = &g_ecc224CommSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); + eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + eccCommSpec->field = tmpField; + eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); + ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp224r1_len; + eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); + eccCommSpec->a.len = NID_secp224r1_len; + eccCommSpec->b.data = nullptr; + eccCommSpec->b.len = 0; + eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); + eccCommSpec->g.x.len = NID_secp224r1_len; + eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); + eccCommSpec->g.y.len = NID_secp224r1_len; + eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); + eccCommSpec->n.len = NID_secp224r1_len; + eccCommSpec->h = g_ecc224CorrectH; + + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc256ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = &g_ecc256CommSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); + eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + eccCommSpec->field = tmpField; + eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigP : g_ecc256CorrectLittleP); + ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_X9_62_prime256v1_len; + eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigA : g_ecc256CorrectLittleA); + eccCommSpec->a.len = NID_X9_62_prime256v1_len; + eccCommSpec->b.data = 0; + eccCommSpec->b.len = 0; + eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGX : g_ecc256CorrectLittleGX); + eccCommSpec->g.x.len = NID_X9_62_prime256v1_len; + eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigGY : g_ecc256CorrectLittleGY); + eccCommSpec->g.y.len = NID_X9_62_prime256v1_len; + eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc256CorrectBigN : g_ecc256CorrectLittleN); + eccCommSpec->n.len = NID_X9_62_prime256v1_len; + eccCommSpec->h = g_ecc256CorrectH; + + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc384ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = &g_ecc384CommSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); + eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + eccCommSpec->field = tmpField; + eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); + ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp384r1_len; + eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); + eccCommSpec->a.len = NID_secp384r1_len; + eccCommSpec->b.data = nullptr; + eccCommSpec->b.len = 0; + eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); + eccCommSpec->g.x.len = NID_secp384r1_len; + eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); + eccCommSpec->g.y.len = NID_secp384r1_len; + eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); + eccCommSpec->n.len = NID_secp384r1_len; + eccCommSpec->h = g_ecc384CorrectH; + + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc521ErrCommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = &g_ecc521CommSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccCommSpec->base.algName = const_cast(g_eccAlgName.c_str()); + eccCommSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + eccCommSpec->field = tmpField; + eccCommSpec->field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccCommSpec->field))->p.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); + ((HcfECFieldFp *)(eccCommSpec->field))->p.len = NID_secp521r1_len; + eccCommSpec->a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); + eccCommSpec->a.len = NID_secp521r1_len; + eccCommSpec->b.data = nullptr; + eccCommSpec->b.len = 0; + eccCommSpec->g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); + eccCommSpec->g.x.len = NID_secp521r1_len; + eccCommSpec->g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); + eccCommSpec->g.y.len = NID_secp521r1_len; + eccCommSpec->n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); + eccCommSpec->n.len = NID_secp521r1_len; + eccCommSpec->h = g_ecc521CorrectH; + + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc384ErrKeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc384KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc384CorrectBigP : g_ecc384CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp384r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigA : g_ecc384CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp384r1_len; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGX : g_ecc384CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp384r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigGY : g_ecc384CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp384r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigN : g_ecc384CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp384r1_len; + eccKeyPairSpec->base.h = g_ecc384CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkX : g_ecc384CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp384r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigPkY : g_ecc384CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp384r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc384CorrectBigSk : g_ecc384CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp384r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc521ErrKeyPairParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_ecc521KeyPairSpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccKeyPairSpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = tmpField; + eccKeyPairSpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc521CorrectBigP : g_ecc521CorrectLittleP); + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = NID_secp521r1_len; + eccKeyPairSpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigA : g_ecc521CorrectLittleA); + eccKeyPairSpec->base.a.len = NID_secp521r1_len; + eccKeyPairSpec->base.b.data = nullptr; + eccKeyPairSpec->base.b.len = 0; + eccKeyPairSpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGX : g_ecc521CorrectLittleGX); + eccKeyPairSpec->base.g.x.len = NID_secp521r1_len; + eccKeyPairSpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigGY : g_ecc521CorrectLittleGY); + eccKeyPairSpec->base.g.y.len = NID_secp521r1_len; + eccKeyPairSpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigN : g_ecc521CorrectLittleN); + eccKeyPairSpec->base.n.len = NID_secp521r1_len; + eccKeyPairSpec->base.h = g_ecc521CorrectH; + eccKeyPairSpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkX : g_ecc521CorrectLittlePkX); + eccKeyPairSpec->pk.x.len = NID_secp521r1_len; + eccKeyPairSpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigPkY : g_ecc521CorrectLittlePkY); + eccKeyPairSpec->pk.y.len = NID_secp521r1_len; + eccKeyPairSpec->sk.data = (IS_BIG_ENDIAN ? g_ecc521CorrectBigSk : g_ecc521CorrectLittleSk); + eccKeyPairSpec->sk.len = NID_secp521r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc224ErrPubKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_ecc224PubKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPubKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; + eccPubKeySpec->base.field = tmpField; + eccPubKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = NID_secp224r1_len; + eccPubKeySpec->base.a.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigA : g_ecc224CorrectLittleA); + eccPubKeySpec->base.a.len = NID_secp224r1_len; + eccPubKeySpec->base.b.data = nullptr; + eccPubKeySpec->base.b.len = 0; + eccPubKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); + eccPubKeySpec->base.g.x.len = NID_secp224r1_len; + eccPubKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); + eccPubKeySpec->base.g.y.len = NID_secp224r1_len; + eccPubKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); + eccPubKeySpec->base.n.len = NID_secp224r1_len; + eccPubKeySpec->base.h = g_ecc224CorrectH; + eccPubKeySpec->pk.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkX : g_ecc224CorrectLittlePkX); + eccPubKeySpec->pk.x.len = NID_secp224r1_len; + eccPubKeySpec->pk.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigPkY : g_ecc224CorrectLittlePkY); + eccPubKeySpec->pk.y.len = NID_secp224r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; + return HCF_SUCCESS; +} + +HcfResult ConstructEcc224ErrPriKeyParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_ecc224PriKeySpec; + HcfECField *tmpField = (HcfECField *)(&g_fieldFp); + + eccPriKeySpec->base.base.algName = const_cast(g_eccAlgName.c_str()); + eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; + eccPriKeySpec->base.field = tmpField; + eccPriKeySpec->base.field->fieldType = const_cast(g_eccFieldType.c_str()); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = + (IS_BIG_ENDIAN ? g_ecc224CorrectBigP : g_ecc224CorrectLittleP); + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = NID_secp224r1_len; + eccPriKeySpec->base.a.data = nullptr; + eccPriKeySpec->base.a.len = 0; + eccPriKeySpec->base.b.data = nullptr; + eccPriKeySpec->base.b.len = 0; + eccPriKeySpec->base.g.x.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGX : g_ecc224CorrectLittleGX); + eccPriKeySpec->base.g.x.len = NID_secp224r1_len; + eccPriKeySpec->base.g.y.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigGY : g_ecc224CorrectLittleGY); + eccPriKeySpec->base.g.y.len = NID_secp224r1_len; + eccPriKeySpec->base.n.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigN : g_ecc224CorrectLittleN); + eccPriKeySpec->base.n.len = NID_secp224r1_len; + eccPriKeySpec->base.h = g_ecc224CorrectH; + eccPriKeySpec->sk.data = (IS_BIG_ENDIAN ? g_ecc224CorrectBigSk : g_ecc224CorrectLittleSk); + eccPriKeySpec->sk.len = NID_secp224r1_len; + + *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; + return HCF_SUCCESS; +} diff --git a/test/unittest/src/ecc_common_param_spec.c b/test/unittest/src/ecc_common_param_spec.c new file mode 100644 index 0000000..237549f --- /dev/null +++ b/test/unittest/src/ecc_common_param_spec.c @@ -0,0 +1,270 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ecc_common_param_spec.h" +#include "securec.h" +#include "asy_key_generator.h" +#include "ecc_key_util.h" +#include "memory.h" +#include "memory_mock.h" + +static char *g_brainpool160r1AlgName = "ECC_BrainPoolP160r1"; +HcfEccCommParamsSpec *g_eccCommSpec = NULL; + +HcfResult ConstructEccKeyPairCommParamsSpec(const char *algoName, HcfEccCommParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = NULL; + HcfEccKeyUtilCreate(algoName, &eccCommSpec); + if (eccCommSpec == NULL) { + return HCF_INVALID_PARAMS; + } + *spec = eccCommSpec; + return HCF_SUCCESS; +} + +static HcfResult ConstructEccKeyPairBigInt(HcfKeyPair *keyPair, HcfEccKeyPairParamsSpec *eccKeyPairSpec) +{ + HcfBigInteger retBigInt = { .data = NULL, .len = 0 }; + HcfResult res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); + if (res != HCF_SUCCESS) { + return res; + } + eccKeyPairSpec->pk.x.data = retBigInt.data; + eccKeyPairSpec->pk.x.len = retBigInt.len; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); + if (res != HCF_SUCCESS) { + HcfFree(eccKeyPairSpec->pk.x.data); + eccKeyPairSpec->pk.x.data = NULL; + eccKeyPairSpec->pk.x.len = 0; + return res; + } + eccKeyPairSpec->pk.y.data = retBigInt.data; + eccKeyPairSpec->pk.y.len = retBigInt.len; + + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); + if (res != HCF_SUCCESS) { + HcfFree(eccKeyPairSpec->pk.x.data); + eccKeyPairSpec->pk.x.data = NULL; + eccKeyPairSpec->pk.x.len = 0; + HcfFree(eccKeyPairSpec->pk.y.data); + eccKeyPairSpec->pk.y.data = NULL; + eccKeyPairSpec->pk.y.len = 0; + return res; + } + eccKeyPairSpec->sk.data = retBigInt.data; + eccKeyPairSpec->sk.len = retBigInt.len; + return HCF_SUCCESS; +} + +HcfResult ConstructEccKeyPairParamsSpec(const char *algoName, HcfEccCommParamsSpec *eccCommSpec, + HcfAsyKeyParamsSpec **spec) +{ + if (eccCommSpec == NULL) { + return HCF_INVALID_PARAMS; + } + HcfAsyKeyGenerator *generator = NULL; + HcfResult res = HCF_ERR_CRYPTO_OPERATION; + if (HcfAsyKeyGeneratorCreate(algoName, &generator) != HCF_SUCCESS) { + return res; + } + HcfKeyPair *keyPair = NULL; + if (generator->generateKeyPair(generator, NULL, &keyPair) != HCF_SUCCESS) { + HcfObjDestroy(generator); + return res; + } + + HcfEccKeyPairParamsSpec *eccKeyPairSpec = (HcfEccKeyPairParamsSpec*)HcfMalloc(sizeof(HcfEccKeyPairParamsSpec), 0); + if (eccKeyPairSpec != NULL) { + eccKeyPairSpec->base.base.algName = eccCommSpec->base.algName; + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = eccCommSpec->field; + eccKeyPairSpec->base.field->fieldType = eccCommSpec->field->fieldType; + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = ((HcfECFieldFp *)(eccCommSpec->field))->p.data; + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = ((HcfECFieldFp *)(eccCommSpec->field))->p.len; + eccKeyPairSpec->base.a.data = eccCommSpec->a.data; + eccKeyPairSpec->base.a.len = eccCommSpec->a.len; + eccKeyPairSpec->base.b.data = eccCommSpec->b.data; + eccKeyPairSpec->base.b.len = eccCommSpec->b.len; + eccKeyPairSpec->base.g.x.data = eccCommSpec->g.x.data; + eccKeyPairSpec->base.g.x.len = eccCommSpec->g.x.len; + eccKeyPairSpec->base.g.y.data = eccCommSpec->g.y.data; + eccKeyPairSpec->base.g.y.len = eccCommSpec->g.y.len; + eccKeyPairSpec->base.n.data = eccCommSpec->n.data; + eccKeyPairSpec->base.n.len = eccCommSpec->n.len; + eccKeyPairSpec->base.h = eccCommSpec->h; + if (ConstructEccKeyPairBigInt(keyPair, eccKeyPairSpec) != HCF_SUCCESS) { + HcfFree(eccKeyPairSpec); + } else { + *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; + res = HCF_SUCCESS; + } + } + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return res; +} + +static HcfResult ConstructEccPubKeyBigInt(HcfKeyPair *keyPair, HcfEccPubKeyParamsSpec *eccPubKeySpec) +{ + HcfBigInteger retBigInt = { .data = NULL, .len = 0 }; + HcfResult res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); + if (res != HCF_SUCCESS) { + return res; + } + eccPubKeySpec->pk.x.data = retBigInt.data; + eccPubKeySpec->pk.x.len = retBigInt.len; + + res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); + if (res != HCF_SUCCESS) { + HcfFree(eccPubKeySpec->pk.x.data); + eccPubKeySpec->pk.x.data = NULL; + eccPubKeySpec->pk.x.len = 0; + return res; + } + eccPubKeySpec->pk.y.data = retBigInt.data; + eccPubKeySpec->pk.y.len = retBigInt.len; + return HCF_SUCCESS; +} + +HcfResult ConstructEccPubKeyParamsSpec(const char *algoName, HcfEccCommParamsSpec *eccCommSpec, + HcfAsyKeyParamsSpec **spec) +{ + if (eccCommSpec == NULL) { + return HCF_INVALID_PARAMS; + } + + HcfResult res = HCF_ERR_CRYPTO_OPERATION; + HcfAsyKeyGenerator *generator = NULL; + if (HcfAsyKeyGeneratorCreate(algoName, &generator) != HCF_SUCCESS) { + return res; + } + + HcfKeyPair *keyPair = NULL; + if (generator->generateKeyPair(generator, NULL, &keyPair) != HCF_SUCCESS) { + HcfObjDestroy(generator); + return res; + } + + HcfEccPubKeyParamsSpec *eccPubKeySpec = (HcfEccPubKeyParamsSpec*)HcfMalloc(sizeof(HcfEccPubKeyParamsSpec), 0); + if (eccPubKeySpec != NULL) { + eccPubKeySpec->base.base.algName = eccCommSpec->base.algName; + eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; + eccPubKeySpec->base.field = eccCommSpec->field; + eccPubKeySpec->base.field->fieldType = eccCommSpec->field->fieldType; + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = ((HcfECFieldFp *)(eccCommSpec->field))->p.data; + ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = ((HcfECFieldFp *)(eccCommSpec->field))->p.len; + eccPubKeySpec->base.a.data = eccCommSpec->a.data; + eccPubKeySpec->base.a.len = eccCommSpec->a.len; + eccPubKeySpec->base.b.data = eccCommSpec->b.data; + eccPubKeySpec->base.b.len = eccCommSpec->b.len; + eccPubKeySpec->base.g.x.data = eccCommSpec->g.x.data; + eccPubKeySpec->base.g.x.len = eccCommSpec->g.x.len; + eccPubKeySpec->base.g.y.data = eccCommSpec->g.y.data; + eccPubKeySpec->base.g.y.len = eccCommSpec->g.y.len; + eccPubKeySpec->base.n.data = eccCommSpec->n.data; + eccPubKeySpec->base.n.len = eccCommSpec->n.len; + eccPubKeySpec->base.h = eccCommSpec->h; + if (ConstructEccPubKeyBigInt(keyPair, eccPubKeySpec) != HCF_SUCCESS) { + HcfFree(eccPubKeySpec); + } else { + *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; + res = HCF_SUCCESS; + } + } + + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return res; +} + +HcfResult ConstructEccPriKeyParamsSpec(const char *algoName, HcfEccCommParamsSpec *eccCommSpec, + HcfAsyKeyParamsSpec **spec) +{ + if (eccCommSpec == NULL) { + return HCF_INVALID_PARAMS; + } + + HcfResult res = HCF_ERR_CRYPTO_OPERATION; + HcfAsyKeyGenerator *generator = NULL; + if (HcfAsyKeyGeneratorCreate(algoName, &generator) != HCF_SUCCESS) { + return res; + } + + HcfKeyPair *keyPair = NULL; + if (generator->generateKeyPair(generator, NULL, &keyPair) != HCF_SUCCESS) { + HcfObjDestroy(generator); + return res; + } + + HcfEccPriKeyParamsSpec *eccPriKeySpec = (HcfEccPriKeyParamsSpec*)HcfMalloc(sizeof(HcfEccPriKeyParamsSpec), 0); + if (eccPriKeySpec != NULL) { + eccPriKeySpec->base.base.algName = eccCommSpec->base.algName; + eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; + eccPriKeySpec->base.field = eccCommSpec->field; + eccPriKeySpec->base.field->fieldType = eccCommSpec->field->fieldType; + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = ((HcfECFieldFp *)(eccCommSpec->field))->p.data; + ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = ((HcfECFieldFp *)(eccCommSpec->field))->p.len; + eccPriKeySpec->base.a.data = eccCommSpec->a.data; + eccPriKeySpec->base.a.len = eccCommSpec->a.len; + eccPriKeySpec->base.b.data = eccCommSpec->b.data; + eccPriKeySpec->base.b.len = eccCommSpec->b.len; + eccPriKeySpec->base.g.x.data = eccCommSpec->g.x.data; + eccPriKeySpec->base.g.x.len = eccCommSpec->g.x.len; + eccPriKeySpec->base.g.y.data = eccCommSpec->g.y.data; + eccPriKeySpec->base.g.y.len = eccCommSpec->g.y.len; + eccPriKeySpec->base.n.data = eccCommSpec->n.data; + eccPriKeySpec->base.n.len = eccCommSpec->n.len; + eccPriKeySpec->base.h = eccCommSpec->h; + HcfBigInteger retBigInt = { .data = NULL, .len = 0 }; + if (keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt) != HCF_SUCCESS) { + HcfFree(eccPriKeySpec); + } else { + eccPriKeySpec->sk.data = retBigInt.data; + eccPriKeySpec->sk.len = retBigInt.len; + *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; + res = HCF_SUCCESS; + } + } + HcfObjDestroy(generator); + HcfObjDestroy(keyPair); + return res; +} + +HcfResult GenerateBrainpoolP160r1KeyPair(HcfKeyPair **keyPair) +{ + HcfResult res = ConstructEccKeyPairCommParamsSpec("NID_brainpoolP160r1", &g_eccCommSpec); + if (res != HCF_SUCCESS) { + return res; + } + HcfAsyKeyParamsSpec *paramSpec = NULL; + res = ConstructEccKeyPairParamsSpec(g_brainpool160r1AlgName, g_eccCommSpec, ¶mSpec); + if (res != HCF_SUCCESS) { + return res; + } + HcfAsyKeyGeneratorBySpec *generator = NULL; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + if (res != HCF_SUCCESS) { + return res; + } + res = generator->generateKeyPair(generator, keyPair); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generator); + return res; + } + HcfObjDestroy(generator); + DestroyEccKeyPairSpec((HcfEccKeyPairParamsSpec *)paramSpec); + return HCF_SUCCESS; +} diff --git a/test/unittest/src/memory_mock.c b/test/unittest/src/memory_mock.c index 50f5d6b..dec9502 100755 --- a/test/unittest/src/memory_mock.c +++ b/test/unittest/src/memory_mock.c @@ -1,84 +1,79 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "memory.h" -#include "memory_mock.h" - -#include "log.h" -#include "securec.h" - -static bool g_isMock = false; -static uint32_t g_mallocMockIndex = __INT32_MAX__; -static uint32_t g_mallocNum = 0; -static bool g_isRecordMallocNum = false; - -void SetMockFlag(bool flag) -{ - g_isMock = flag; -} - -void *HcfMalloc(uint32_t size, char val) -{ - if (g_isMock) { - return NULL; - } - if (g_isRecordMallocNum) { - if (g_mallocNum == g_mallocMockIndex) { - LOGD("mock malloc return NULL."); - return NULL; - } - g_mallocNum++; - } - void *addr = malloc(size); - if (addr != NULL) { - (void)memset_s(addr, size, val, size); - } - return addr; -} - -void HcfFree(void *addr) -{ - if (addr != NULL) { - free(addr); - } -} - -void StartRecordMallocNum(void) -{ - ResetRecordMallocNum(); - g_isRecordMallocNum = true; -} - -void EndRecordMallocNum(void) -{ - ResetRecordMallocNum(); - g_isRecordMallocNum = false; -} - -uint32_t GetMallocNum(void) -{ - return g_mallocNum; -} - -void ResetRecordMallocNum(void) -{ - g_mallocNum = 0; - g_mallocMockIndex = __INT32_MAX__; -} - -void SetMockMallocIndex(uint32_t index) -{ - g_mallocMockIndex = index; +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "memory.h" +#include "memory_mock.h" + +#include "log.h" +#include "securec.h" + +static bool g_isMock = false; +static uint32_t g_mallocMockIndex = __INT32_MAX__; +static uint32_t g_mallocNum = 0; +static bool g_isRecordMallocNum = false; + +void *HcfMalloc(uint32_t size, char val) +{ + if (g_isMock) { + return NULL; + } + if (g_isRecordMallocNum) { + if (g_mallocNum == g_mallocMockIndex) { + LOGD("mock malloc return NULL."); + return NULL; + } + g_mallocNum++; + } + void *addr = malloc(size); + if (addr != NULL) { + (void)memset_s(addr, size, val, size); + } + return addr; +} + +void HcfFree(void *addr) +{ + if (addr != NULL) { + free(addr); + } +} + +void StartRecordMallocNum(void) +{ + ResetRecordMallocNum(); + g_isRecordMallocNum = true; +} + +void EndRecordMallocNum(void) +{ + ResetRecordMallocNum(); + g_isRecordMallocNum = false; +} + +uint32_t GetMallocNum(void) +{ + return g_mallocNum; +} + +void ResetRecordMallocNum(void) +{ + g_mallocNum = 0; + g_mallocMockIndex = __INT32_MAX__; +} + +void SetMockMallocIndex(uint32_t index) +{ + g_mallocMockIndex = index; } \ No newline at end of file diff --git a/test/unittest/src/openssl_adapter_mock.c b/test/unittest/src/openssl_adapter_mock.c index 67a087d..1c94553 100644 --- a/test/unittest/src/openssl_adapter_mock.c +++ b/test/unittest/src/openssl_adapter_mock.c @@ -529,7 +529,7 @@ int Openssl_EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, size_t * } if (g_isNeedSpecialMock) { int res = EVP_DigestSignFinal(ctx, sigret, siglen); - *siglen = *siglen * 2; + *siglen = *siglen * g_double; g_isNeedSpecialMock = false; return res; } @@ -553,7 +553,7 @@ int Openssl_EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, } if (g_isNeedSpecialMock) { int res = EVP_DigestSign(ctx, sig, siglen, tbs, tbslen); - *siglen = *siglen * 2; + *siglen = *siglen * g_double; g_isNeedSpecialMock = false; return res; } @@ -756,7 +756,7 @@ int Openssl_EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keyle } if (g_isNeedSpecialMock) { int res = EVP_PKEY_derive(ctx, key, keylen); - *keylen = *keylen * 2; + *keylen = *keylen * g_double; g_isNeedSpecialMock = false; return res; } diff --git a/test/unittest/src/rsa_common_param_spec.cpp b/test/unittest/src/rsa_common_param_spec.cpp new file mode 100644 index 0000000..487b893 --- /dev/null +++ b/test/unittest/src/rsa_common_param_spec.cpp @@ -0,0 +1,412 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "rsa_common_param_spec.h" +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "asy_key_generator_spi.h" +#include "blob.h" +#include "detailed_rsa_key_params.h" +#include "memory.h" +#include "openssl_class.h" +#include "openssl_common.h" + +void RemoveLastChar(const unsigned char *str, unsigned char *dest, uint32_t destLen) +{ + for (size_t i = 0; i < destLen; i++) { + dest[i] = str[i]; + } + return; +} + +void EndianSwap(unsigned char *pData, int startIndex, int length) +{ + int cnt = length / 2; + int start = startIndex; + int end = startIndex + length - 1; + unsigned char tmp; + for (int i = 0; i < cnt; i++) { + tmp = pData[start + i]; + pData[start + i] = pData[end - i]; + pData[end - i] = tmp; + } +} + +// 512 defined the length of byte array +void GenerateRsa512CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) +{ + RemoveLastChar(CORRECT_512_N, dataN, RSA_512_N_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataN, 0, RSA_512_N_BYTE_SIZE); + } + returnSpec->n.data = dataN; + returnSpec->n.len = RSA_512_N_BYTE_SIZE; + returnSpec->base.algName = const_cast(g_rsaAlgName); + returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + return; +} + +void GenerateRsa512CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa512CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_512_E_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_512_E_BYTE_SIZE); + } + returnPubSpec->pk.data = dataE; + returnPubSpec->pk.len = RSA_512_E_BYTE_SIZE; + returnPubSpec->base = rsaCommSpec; + returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; +} + +void GenerateRsa512CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa512CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_512_E_BYTE_SIZE); + RemoveLastChar(CORRECT_512_D, dataD, RSA_512_D_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_512_E_BYTE_SIZE); + EndianSwap(dataD, 0, RSA_512_D_BYTE_SIZE); + } + returnPairSpec->pk.data = dataE; + returnPairSpec->pk.len = RSA_512_E_BYTE_SIZE; + returnPairSpec->sk.data = dataD; + returnPairSpec->sk.len = RSA_512_D_BYTE_SIZE; + returnPairSpec->base = rsaCommSpec; + returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; +} + +// 768 defined the length of byte array +void GenerateRsa768CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) +{ + RemoveLastChar(CORRECT_768_N, dataN, RSA_768_N_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataN, 0, RSA_768_N_BYTE_SIZE); + } + returnSpec->n.data = dataN; + returnSpec->n.len = RSA_768_N_BYTE_SIZE; + returnSpec->base.algName = const_cast(g_rsaAlgName); + returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + return; +} + +void GenerateRsa768CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa768CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_768_E_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_768_E_BYTE_SIZE); + } + returnPubSpec->pk.data = dataE; + returnPubSpec->pk.len = RSA_768_E_BYTE_SIZE; + returnPubSpec->base = rsaCommSpec; + returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; +} + +void GenerateRsa768CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa768CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_768_E_BYTE_SIZE); + RemoveLastChar(CORRECT_768_D, dataD, RSA_768_D_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_768_E_BYTE_SIZE); + EndianSwap(dataD, 0, RSA_768_D_BYTE_SIZE); + } + returnPairSpec->pk.data = dataE; + returnPairSpec->pk.len = RSA_768_E_BYTE_SIZE; + returnPairSpec->sk.data = dataD; + returnPairSpec->sk.len = RSA_768_D_BYTE_SIZE; + returnPairSpec->base = rsaCommSpec; + returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; +} + +// 1024 defined the length of byte array +void GenerateRsa1024CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) +{ + RemoveLastChar(CORRECT_1024_N, dataN, RSA_1024_N_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataN, 0, RSA_1024_N_BYTE_SIZE); + } + returnSpec->n.data = dataN; + returnSpec->n.len = RSA_1024_N_BYTE_SIZE; + returnSpec->base.algName = const_cast(g_rsaAlgName); + returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + return; +} + +void GenerateRsa1024CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa1024CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_1024_E_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_1024_E_BYTE_SIZE); + } + returnPubSpec->pk.data = dataE; + returnPubSpec->pk.len = RSA_1024_E_BYTE_SIZE; + returnPubSpec->base = rsaCommSpec; + returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; +} + +void GenerateRsa1024CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa1024CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_1024_E_BYTE_SIZE); + RemoveLastChar(CORRECT_1024_D, dataD, RSA_1024_D_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_1024_E_BYTE_SIZE); + EndianSwap(dataD, 0, RSA_1024_D_BYTE_SIZE); + } + returnPairSpec->pk.data = dataE; + returnPairSpec->pk.len = RSA_1024_E_BYTE_SIZE; + returnPairSpec->sk.data = dataD; + returnPairSpec->sk.len = RSA_1024_D_BYTE_SIZE; + returnPairSpec->base = rsaCommSpec; + returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; +} + +// 2048 defined the length of byte array +void GenerateRsa2048CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) +{ + RemoveLastChar(CORRECT_2048_N, dataN, RSA_2048_N_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataN, 0, RSA_2048_N_BYTE_SIZE); + } + returnSpec->n.data = dataN; + returnSpec->n.len = RSA_2048_N_BYTE_SIZE; + returnSpec->base.algName = const_cast(g_rsaAlgName); + returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + return; +} + +void GenerateRsa2048CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_2048_E_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_2048_E_BYTE_SIZE); + } + returnPubSpec->pk.data = dataE; + returnPubSpec->pk.len = RSA_2048_E_BYTE_SIZE; + returnPubSpec->base = rsaCommSpec; + returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; +} + +void GenerateRsa2048CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_2048_E_BYTE_SIZE); + RemoveLastChar(CORRECT_2048_D, dataD, RSA_2048_D_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_2048_E_BYTE_SIZE); + EndianSwap(dataD, 0, RSA_2048_D_BYTE_SIZE); + } + returnPairSpec->pk.data = dataE; + returnPairSpec->pk.len = RSA_2048_E_BYTE_SIZE; + returnPairSpec->sk.data = dataD; + returnPairSpec->sk.len = RSA_2048_D_BYTE_SIZE; + returnPairSpec->base = rsaCommSpec; + returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; +} + +// 3072 defined the length of byte array +void GenerateRsa3072CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) +{ + RemoveLastChar(CORRECT_3072_N, dataN, RSA_3072_N_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataN, 0, RSA_3072_N_BYTE_SIZE); + } + returnSpec->n.data = dataN; + returnSpec->n.len = RSA_3072_N_BYTE_SIZE; + returnSpec->base.algName = const_cast(g_rsaAlgName); + returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + return; +} + +void GenerateRsa3072CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa3072CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_3072_E_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_3072_E_BYTE_SIZE); + } + returnPubSpec->pk.data = dataE; + returnPubSpec->pk.len = RSA_3072_E_BYTE_SIZE; + returnPubSpec->base = rsaCommSpec; + returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; +} + +void GenerateRsa3072CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa3072CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_3072_E_BYTE_SIZE); + RemoveLastChar(CORRECT_3072_D, dataD, RSA_3072_D_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_3072_E_BYTE_SIZE); + EndianSwap(dataD, 0, RSA_3072_D_BYTE_SIZE); + } + returnPairSpec->pk.data = dataE; + returnPairSpec->pk.len = RSA_3072_E_BYTE_SIZE; + returnPairSpec->sk.data = dataD; + returnPairSpec->sk.len = RSA_3072_D_BYTE_SIZE; + returnPairSpec->base = rsaCommSpec; + returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; +} + +// 4096 defined the length of byte array +void GenerateRsa4096CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) +{ + RemoveLastChar(CORRECT_4096_N, dataN, RSA_4096_N_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataN, 0, RSA_4096_N_BYTE_SIZE); + } + returnSpec->n.data = dataN; + returnSpec->n.len = RSA_4096_N_BYTE_SIZE; + returnSpec->base.algName = const_cast(g_rsaAlgName); + returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + return; +} + +void GenerateRsa4096CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa4096CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_4096_E_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_4096_E_BYTE_SIZE); + } + returnPubSpec->pk.data = dataE; + returnPubSpec->pk.len = RSA_4096_E_BYTE_SIZE; + returnPubSpec->base = rsaCommSpec; + returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; +} + +void GenerateRsa4096CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa4096CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_4096_E_BYTE_SIZE); + RemoveLastChar(CORRECT_4096_D, dataD, RSA_4096_D_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_4096_E_BYTE_SIZE); + EndianSwap(dataD, 0, RSA_4096_D_BYTE_SIZE); + } + returnPairSpec->pk.data = dataE; + returnPairSpec->pk.len = RSA_4096_E_BYTE_SIZE; + returnPairSpec->sk.data = dataD; + returnPairSpec->sk.len = RSA_4096_D_BYTE_SIZE; + returnPairSpec->base = rsaCommSpec; + returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; +} + +// 8192 defined the length of byte array +void GenerateRsa8192CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec) +{ + RemoveLastChar(CORRECT_8192_N, dataN, RSA_8192_N_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataN, 0, RSA_8192_N_BYTE_SIZE); + } + returnSpec->n.data = dataN; + returnSpec->n.len = RSA_8192_N_BYTE_SIZE; + returnSpec->base.algName = const_cast(g_rsaAlgName); + returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC; + return; +} + +void GenerateRsa8192CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE, + HcfRsaPubKeyParamsSpec *returnPubSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa8192CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_8192_E_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_8192_E_BYTE_SIZE); + } + returnPubSpec->pk.data = dataE; + returnPubSpec->pk.len = RSA_8192_E_BYTE_SIZE; + returnPubSpec->base = rsaCommSpec; + returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; +} + +void GenerateRsa8192CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD, + HcfRsaKeyPairParamsSpec *returnPairSpec) +{ + HcfRsaCommParamsSpec rsaCommSpec = {}; + GenerateRsa8192CorrectCommonKeySpec(dataN, &rsaCommSpec); + RemoveLastChar(CORRECT_E, dataE, RSA_8192_E_BYTE_SIZE); + RemoveLastChar(CORRECT_8192_D, dataD, RSA_8192_D_BYTE_SIZE); + if (!IsBigEndian()) { + // the device is not big endian + EndianSwap(dataE, 0, RSA_8192_E_BYTE_SIZE); + EndianSwap(dataD, 0, RSA_8192_D_BYTE_SIZE); + } + returnPairSpec->pk.data = dataE; + returnPairSpec->pk.len = RSA_8192_E_BYTE_SIZE; + returnPairSpec->sk.data = dataD; + returnPairSpec->sk.len = RSA_8192_D_BYTE_SIZE; + returnPairSpec->base = rsaCommSpec; + returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; +} + +bool CheckGeneratorBySpecKeyFunc(HcfAsyKeyGeneratorBySpec *generator) +{ + if (generator->generateKeyPair == nullptr || generator->generatePriKey == nullptr || + generator->generatePubKey == nullptr) { + return false; + } + return true; +} \ No newline at end of file diff --git a/test/unittest/src/sm2/crypto_sm2_asy_key_generator_by_spec_sub_test.cpp b/test/unittest/src/sm2/crypto_sm2_asy_key_generator_by_spec_sub_test.cpp new file mode 100644 index 0000000..d37d92f --- /dev/null +++ b/test/unittest/src/sm2/crypto_sm2_asy_key_generator_by_spec_sub_test.cpp @@ -0,0 +1,1523 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "securec.h" + +#include "asy_key_generator.h" +#include "sm2_asy_key_generator_openssl.h" +#include "ecc_openssl_common.h" +#include "ecc_openssl_common_param_spec.h" +#include "ecc_common.h" +#include "ecc_common_param_spec.h" +#include "ecc_key_util.h" +#include "key_utils.h" +#include "blob.h" +#include "cipher.h" +#include "cipher_sm2_openssl.h" +#include "sm2_openssl.h" +#include "signature.h" +#include "key_pair.h" +#include "memory.h" +#include "memory_mock.h" +#include "openssl_adapter_mock.h" +#include "openssl_class.h" +#include "openssl_common.h" +#include "params_parser.h" + +using namespace std; +using namespace testing::ext; + +namespace { +constexpr int ZERO = 0; +constexpr int ONE = 1; +constexpr int TWO = 2; +constexpr int THREE = 3; +constexpr int FOUR = 4; +constexpr int FIVE = 5; +constexpr int SIX = 6; +constexpr int SEVEN = 7; +constexpr int EIGHT = 8; + +class CryptoSm2AsyKeyGeneratorBySpecSubTest : public testing::Test { +public: + static void SetUpTestCase(){}; + static void TearDownTestCase(){}; + void SetUp(); + void TearDown(); +}; + +void CryptoSm2AsyKeyGeneratorBySpecSubTest::SetUp() {} +void CryptoSm2AsyKeyGeneratorBySpecSubTest::TearDown() {} + +static const char *GetMockClass(void) +{ + return "HcfSymKeyGenerator"; +} + +HcfObjectBase g_obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; + +static const char *g_mockMessage = "hello world"; +static HcfBlob g_mockInput = { + .data = (uint8_t *)g_mockMessage, + .len = 12 +}; + +static string g_sm2AlgName = "SM2_256"; +static string g_sm2CurveName = "NID_sm2"; + +HcfEccCommParamsSpec *g_eccCommSpec = nullptr; + +static HcfResult ConstructSm2256CommParamsSpec(HcfAsyKeyParamsSpec **spec) +{ + HcfEccCommParamsSpec *eccCommSpec = nullptr; + HcfEccKeyUtilCreate(g_sm2CurveName.c_str(), &eccCommSpec); + if (eccCommSpec == nullptr) { + return HCF_INVALID_PARAMS; + } + *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; + return HCF_SUCCESS; +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest066, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfBlob blob = { .data = nullptr, .len = 0 }; + res = pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(blob.data, nullptr); + ASSERT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest067, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + res = pubKey->base.getEncoded(&(pubKey->base), nullptr); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest068, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest069, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(nullptr, &priKey); + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest070, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + res = generator->generatePriKey(generator, nullptr); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest071, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + res = generator->generatePriKey(nullptr, nullptr); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest072, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *className = priKey->base.base.getClass(); + ASSERT_NE(className, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest073, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + priKey->base.base.destroy((HcfObjectBase *)(&(priKey->base.base))); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest074, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + priKey->base.base.destroy(nullptr); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest075, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + priKey->base.base.destroy(&g_obj); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest076, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + res = priKey->base.getEncoded(&(priKey->base), nullptr); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest077, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + priKey->clearMem(priKey); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest078, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + priKey->clearMem(nullptr); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest079, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *format = priKey->base.getFormat(&priKey->base); + ASSERT_NE(format, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest080, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *format = priKey->base.getFormat(nullptr); + ASSERT_EQ(format, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest081, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *format = priKey->base.getFormat((HcfKey *)&g_obj); + ASSERT_EQ(format, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest082, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *algName = priKey->base.getAlgorithm(&priKey->base); + ASSERT_NE(algName, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest083, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *algName = priKey->base.getAlgorithm(nullptr); + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest084, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + const char *algName = priKey->base.getAlgorithm((HcfKey *)&g_obj); + ASSERT_EQ(algName, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest085, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = {.data = nullptr, .len = 0}; + res = priKey->base.getEncoded(&(priKey->base), &blob); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(blob.data, nullptr); + ASSERT_NE(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest086, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = {.data = nullptr, .len = 0}; + res = priKey->base.getEncoded(nullptr, &blob); + + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(blob.data, nullptr); + ASSERT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest087, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfBlob blob = {.data = nullptr, .len = 0}; + res = priKey->base.getEncoded((HcfKey *)&g_obj, &blob); + ASSERT_NE(res, HCF_SUCCESS); + ASSERT_EQ(blob.data, nullptr); + ASSERT_EQ(blob.len, 0); + + HcfFree(blob.data); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest088, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + res = priKey->base.getEncoded(&(priKey->base), nullptr); + ASSERT_NE(res, HCF_SUCCESS); + + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest089, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generatorBySpec, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob pubKeyBlob = {.data = nullptr, .len = 0}; + HcfBlob priKeyBlob = {.data = nullptr, .len = 0}; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); + ASSERT_EQ(res, HCF_SUCCESS); + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGenerator *generator = nullptr; + res = HcfAsyKeyGeneratorCreate("SM2_256", &generator); + HcfKeyPair *outKeyPair = nullptr; + res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outKeyPair, nullptr); + HcfBlob outPubKeyBlob = { .data = nullptr, .len = 0 }; + res = outKeyPair->pubKey->base.getEncoded(&(outKeyPair->pubKey->base), &outPubKeyBlob); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outPubKeyBlob.data, nullptr); + ASSERT_NE(outPubKeyBlob.len, 0); + HcfBlob outPriKeyBlob = { .data = nullptr, .len = 0 }; + res = outKeyPair->priKey->base.getEncoded(&(outKeyPair->priKey->base), &outPriKeyBlob); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(outPriKeyBlob.data, nullptr); + ASSERT_NE(outPriKeyBlob.len, 0); + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); + HcfFree(outPubKeyBlob.data); + HcfFree(outPriKeyBlob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(outKeyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorBySpec); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest090, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + uint8_t plan[] = "this is sm2 cipher test!\0"; + HcfBlob input = {.data = (uint8_t *)plan, .len = strlen((char *)plan)}; + HcfBlob encoutput = {.data = nullptr, .len = 0}; + HcfCipher *cipher = nullptr; + res = HcfCipherCreate("SM2|SM3", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + + res = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)keyPair->pubKey, nullptr); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->doFinal(cipher, &input, &encoutput); + EXPECT_EQ(res, HCF_SUCCESS); + HcfObjDestroy(cipher); + + HcfBlob decoutput = {.data = nullptr, .len = 0}; + cipher = nullptr; + res = HcfCipherCreate("SM2|SM3", &cipher); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)keyPair->priKey, nullptr); + EXPECT_EQ(res, HCF_SUCCESS); + res = cipher->doFinal(cipher, &encoutput, &decoutput); + EXPECT_EQ(res, HCF_SUCCESS); + HcfObjDestroy(cipher); + EXPECT_STREQ((char *)plan, (char *)decoutput.data); + + HcfFree(encoutput.data); + HcfFree(decoutput.data); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest091, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generator, nullptr); + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfSign *sign = nullptr; + res = HcfSignCreate("SM2|SM3", &sign); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(sign, nullptr); + + res = sign->init(sign, nullptr, keyPair->priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + uint8_t pSourceData[] = "1234567812345678\0"; + HcfBlob pSource = {.data = (uint8_t *)pSourceData, .len = strlen((char *)pSourceData)}; + res = sign->setSignSpecUint8Array(sign, SM2_USER_ID_UINT8ARR, pSource); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfBlob out = { .data = nullptr, .len = 0 }; + res = sign->sign(sign, &g_mockInput, &out); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(out.data, nullptr); + ASSERT_NE(out.len, (const unsigned int)0); + + HcfVerify *verify = nullptr; + res = HcfVerifyCreate("SM2|SM3", &verify); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(verify, nullptr); + + res = verify->init(verify, nullptr, keyPair->pubKey); + ASSERT_EQ(res, HCF_SUCCESS); + + bool flag = verify->verify(verify, &g_mockInput, &out); + ASSERT_EQ(flag, true); + + HcfFree(out.data); + HcfObjDestroy(sign); + HcfObjDestroy(verify); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest092, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_SM2, + .bits = HCF_ALG_SM2_256, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfAsyKeyGeneratorSpiSm2Create(¶ms, &spiObj); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest093, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_SM2, + .bits = HCF_ALG_SM2_256, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfAsyKeyGeneratorSpiSm2Create(¶ms, &spiObj); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfPubKey *pubKey = nullptr; + res = spiObj->engineGeneratePubKeyBySpec(spiObj, paramSpec, &pubKey); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest094, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_SM2, + .bits = HCF_ALG_SM2_256, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfAsyKeyGeneratorSpiSm2Create(¶ms, &spiObj); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfPriKey *priKey = nullptr; + res = spiObj->engineGeneratePriKeyBySpec(spiObj, paramSpec, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest095, TestSize.Level0) +{ + HcfAsyKeyGenParams params = { + .algo = HCF_ALG_SM2, + .bits = 0, + .primes = HCF_OPENSSL_PRIMES_2, + }; + + HcfAsyKeyGeneratorSpi *spiObj = nullptr; + HcfResult res = HcfAsyKeyGeneratorSpiSm2Create(¶ms, &spiObj); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(spiObj, nullptr); + + HcfAsyKeyParamsSpec *paramSpec = nullptr; + res = ConstructSm2256CommParamsSpec(¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfKeyPair *keyPair = nullptr; + res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfObjDestroy(spiObj); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest096, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPriKey *priKey = nullptr; + res = generator->generatePriKey(generator, &priKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_CURVE_NAME_STR; + + res = priKey->getAsyKeySpecString(priKey, item, &retStr); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + + HcfFree(retStr); + HcfObjDestroy(priKey); + HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest097, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfPubKey *pubKey = nullptr; + res = generator->generatePubKey(generator, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + res = pubKey->getAsyKeySpecString(pubKey, ECC_CURVE_NAME_STR, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + char *retStr = nullptr; + res = pubKey->getAsyKeySpecString(pubKey, ECC_FIELD_SIZE_INT, &retStr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest098, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + char *retStr = nullptr; + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + retStr = nullptr; + res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retStr, nullptr); + HcfFree(retStr); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest099, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + AsyKeySpecItem item = ECC_FIELD_TYPE_STR; + + res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest100, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + int retInt = 0; + AsyKeySpecItem item = ECC_FIELD_SIZE_INT; + res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + retInt = 0; + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(retInt, 0); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest101, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + + HcfAsyKeyGeneratorBySpec *generator = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, ECC_FIELD_SIZE_INT, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + int retInt = 0; + res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, ECC_FIELD_TYPE_STR, &retInt); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, nullptr); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, DSA_SK_BN, &retBigInt); + ASSERT_EQ(res, HCF_INVALID_PARAMS); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); +} + +static HcfResult ConstructSm2256KeyPairParamsSpecByGet(HcfEccKeyPairParamsSpec *eccKeyPairSpec, + HcfBigInteger *params, int h) +{ + eccKeyPairSpec->base.base.algName = g_eccCommSpec->base.algName; + eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; + eccKeyPairSpec->base.field = g_eccCommSpec->field; + eccKeyPairSpec->base.field->fieldType = g_eccCommSpec->field->fieldType; + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = params[ZERO].data; + ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = params[ZERO].len; + eccKeyPairSpec->base.a.data = params[ONE].data; + eccKeyPairSpec->base.a.len = params[ONE].len; + eccKeyPairSpec->base.b.data = params[TWO].data; + eccKeyPairSpec->base.b.len = params[TWO].len; + eccKeyPairSpec->base.g.x.data = params[THREE].data; + eccKeyPairSpec->base.g.x.len = params[THREE].len; + eccKeyPairSpec->base.g.y.data = params[FOUR].data; + eccKeyPairSpec->base.g.y.len = params[FOUR].len; + + eccKeyPairSpec->base.n.data = params[FIVE].data; + eccKeyPairSpec->base.n.len = params[FIVE].len; + eccKeyPairSpec->base.h = h; + eccKeyPairSpec->pk.x.data = params[SIX].data; + eccKeyPairSpec->pk.x.len = params[SIX].len; + eccKeyPairSpec->pk.y.data = params[SEVEN].data; + eccKeyPairSpec->pk.y.len = params[SEVEN].len; + + eccKeyPairSpec->sk.data = params[EIGHT].data; + eccKeyPairSpec->sk.len = params[EIGHT].len; + return HCF_SUCCESS; +} + +static void GetParams(HcfPriKey *priKey, HcfPubKey *pubKey, HcfBigInteger *params, int *retH) +{ + HcfBigInteger retFp = { .data = nullptr, .len = 0 }; + HcfBigInteger retA = { .data = nullptr, .len = 0 }; + HcfBigInteger retB = { .data = nullptr, .len = 0 }; + HcfBigInteger retGX = { .data = nullptr, .len = 0 }; + HcfBigInteger retGY = { .data = nullptr, .len = 0 }; + HcfBigInteger retN = { .data = nullptr, .len = 0 }; + HcfBigInteger retSk = { .data = nullptr, .len = 0 }; + HcfBigInteger retPkX = { .data = nullptr, .len = 0 }; + HcfBigInteger retPkY = { .data = nullptr, .len = 0 }; + HcfResult res = priKey->getAsyKeySpecBigInteger(priKey, ECC_FP_P_BN, &retFp); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_A_BN, &retA); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_B_BN, &retB); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_G_X_BN, &retGX); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_G_Y_BN, &retGY); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_N_BN, &retN); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, ECC_PK_X_BN, &retPkX); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecBigInteger(pubKey, ECC_PK_Y_BN, &retPkY); + EXPECT_EQ(res, HCF_SUCCESS); + res = priKey->getAsyKeySpecBigInteger(priKey, ECC_SK_BN, &retSk); + EXPECT_EQ(res, HCF_SUCCESS); + res = pubKey->getAsyKeySpecInt(pubKey, ECC_H_INT, retH); + EXPECT_EQ(res, HCF_SUCCESS); + params[ZERO].data = retFp.data; + params[ZERO].len = retFp.len; + params[ONE].data = retA.data; + params[ONE].len = retA.len; + params[TWO].data = retB.data; + params[TWO].len = retB.len; + params[THREE].data = retGX.data; + params[THREE].len = retGX.len; + params[FOUR].data = retGY.data; + params[FOUR].len = retGY.len; + params[FIVE].data = retN.data; + params[FIVE].len = retN.len; + params[SIX].data = retPkX.data; + params[SIX].len = retPkX.len; + params[SEVEN].data = retPkY.data; + params[SEVEN].len = retPkY.len; + params[EIGHT].data = retSk.data; + params[EIGHT].len = retSk.len; +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest102, TestSize.Level0) +{ + HcfAsyKeyGenerator *generator = nullptr; + HcfResult res = HcfAsyKeyGeneratorCreate(g_sm2AlgName.c_str(), &generator); + + HcfKeyPair *keyPair = nullptr; + res = generator->generateKeyPair(generator, nullptr, &keyPair); + + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(keyPair, nullptr); + + int retH = 0; + HcfBigInteger params[9]; + GetParams(keyPair->priKey, keyPair->pubKey, params, &retH); + + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfEccKeyPairParamsSpec eccKeyPairSpec = {}; + res = ConstructSm2256KeyPairParamsSpecByGet(&eccKeyPairSpec, params, retH); + HcfAsyKeyGeneratorBySpec *generatorSpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&eccKeyPairSpec), &generatorSpec); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(generatorSpec, nullptr); + + HcfKeyPair *dupKeyPair = nullptr; + res = generatorSpec->generateKeyPair(generatorSpec, &dupKeyPair); + EXPECT_EQ(res, HCF_SUCCESS); + EXPECT_NE(dupKeyPair, nullptr); + + HcfObjDestroy(dupKeyPair); + HcfObjDestroy(keyPair); + HcfObjDestroy(generator); + HcfObjDestroy(generatorSpec); + FreeEccCommParamsSpec(reinterpret_cast(g_eccCommSpec)); +} + +static void OpensslMockTestFunc(uint32_t mallocCount, HcfAsyKeyParamsSpec *paramSpec) +{ + for (uint32_t i = 0; i < mallocCount - THREE; i++) { + ResetOpensslCallNum(); + SetOpensslCallMockIndex(i); + + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + if (res != HCF_SUCCESS) { + continue; + } + HcfKeyPair *keyPair = nullptr; + res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generatorBySpec); + continue; + } + HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); + if (res != HCF_SUCCESS) { + HcfObjDestroy(keyPair); + HcfObjDestroy(generatorBySpec); + continue; + } + HcfBlob priKeyBlob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); + if (res != HCF_SUCCESS) { + HcfFree(pubKeyBlob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generatorBySpec); + continue; + } + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generatorBySpec); + } +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest103, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + StartRecordOpensslCallNum(); + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generatorBySpec, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; + res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKeyBlob.data, nullptr); + ASSERT_NE(pubKeyBlob.len, 0); + + HcfBlob priKeyBlob = { .data = nullptr, .len = 0 }; + res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKeyBlob.data, nullptr); + ASSERT_NE(priKeyBlob.len, 0); + + HcfFree(pubKeyBlob.data); + HcfFree(priKeyBlob.data); + HcfObjDestroy(keyPair); + HcfObjDestroy(generatorBySpec); + + uint32_t mallocCount = GetOpensslCallNum(); + OpensslMockTestFunc(mallocCount, paramSpec); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); + + EndRecordOpensslCallNum(); +} + +static void OpensslMockTestFunc1(uint32_t mallocCount, HcfAsyKeyParamsSpec *paramSpec) +{ + for (uint32_t i = 0; i < mallocCount - 1; i++) { + ResetOpensslCallNum(); + SetOpensslCallMockIndex(i); + + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + if (res != HCF_SUCCESS) { + continue; + } + HcfKeyPair *keyPair = nullptr; + res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generatorBySpec); + continue; + } + HcfObjDestroy(keyPair); + HcfObjDestroy(generatorBySpec); + } +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest104, TestSize.Level0) +{ + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + StartRecordOpensslCallNum(); + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generatorBySpec, nullptr); + + HcfKeyPair *keyPair = nullptr; + res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(keyPair, nullptr); + + HcfObjDestroy(keyPair); + HcfObjDestroy(generatorBySpec); + + uint32_t mallocCount = GetOpensslCallNum(); + OpensslMockTestFunc1(mallocCount, paramSpec); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); + + EndRecordOpensslCallNum(); +} + +static void OpensslMockTestFunc2(uint32_t mallocCount, HcfAsyKeyParamsSpec *paramSpec) +{ + for (uint32_t i = 0; i < mallocCount - FIVE; i++) { + ResetOpensslCallNum(); + SetOpensslCallMockIndex(i); + + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + if (res != HCF_SUCCESS) { + continue; + } + HcfPriKey *priKey = nullptr; + res = generatorBySpec->generatePriKey(generatorBySpec, &priKey); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generatorBySpec); + continue; + } + HcfObjDestroy(priKey); + HcfObjDestroy(generatorBySpec); + } +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest105, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPriKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + StartRecordOpensslCallNum(); + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generatorBySpec, nullptr); + + HcfPriKey *priKey = nullptr; + res = generatorBySpec->generatePriKey(generatorBySpec, &priKey); + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(priKey, nullptr); + + HcfObjDestroy(priKey); + HcfObjDestroy(generatorBySpec); + + uint32_t mallocCount = GetOpensslCallNum(); + OpensslMockTestFunc2(mallocCount, paramSpec); + DestroyEccPriKeySpec(reinterpret_cast(paramSpec)); + + EndRecordOpensslCallNum(); +} + +static void OpensslMockTestFunc3(uint32_t mallocCount, HcfAsyKeyParamsSpec *paramSpec) +{ + for (uint32_t i = 0; i < mallocCount - 1; i++) { + ResetOpensslCallNum(); + SetOpensslCallMockIndex(i); + + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + if (res != HCF_SUCCESS) { + continue; + } + HcfPubKey *pubKey = nullptr; + res = generatorBySpec->generatePubKey(generatorBySpec, &pubKey); + if (res != HCF_SUCCESS) { + HcfObjDestroy(generatorBySpec); + continue; + } + HcfObjDestroy(pubKey); + HcfObjDestroy(generatorBySpec); + } +} + +HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecSubTest, CryptoSm2AsyKeyGeneratorBySpecTest106, TestSize.Level0) +{ + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); + HcfAsyKeyParamsSpec *paramSpec = nullptr; + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(paramSpec, nullptr); + + StartRecordOpensslCallNum(); + HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; + res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(generatorBySpec, nullptr); + + HcfPubKey *pubKey = nullptr; + res = generatorBySpec->generatePubKey(generatorBySpec, &pubKey); + + ASSERT_EQ(res, HCF_SUCCESS); + ASSERT_NE(pubKey, nullptr); + + HcfObjDestroy(pubKey); + HcfObjDestroy(generatorBySpec); + + uint32_t mallocCount = GetOpensslCallNum(); + OpensslMockTestFunc3(mallocCount, paramSpec); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); + + EndRecordOpensslCallNum(); +} +} diff --git a/test/unittest/src/crypto_sm2_asy_key_generator_by_spec_test.cpp b/test/unittest/src/sm2/crypto_sm2_asy_key_generator_by_spec_test.cpp similarity index 44% rename from test/unittest/src/crypto_sm2_asy_key_generator_by_spec_test.cpp rename to test/unittest/src/sm2/crypto_sm2_asy_key_generator_by_spec_test.cpp index 427af9b..c86b00c 100644 --- a/test/unittest/src/crypto_sm2_asy_key_generator_by_spec_test.cpp +++ b/test/unittest/src/sm2/crypto_sm2_asy_key_generator_by_spec_test.cpp @@ -19,10 +19,10 @@ #include "asy_key_generator.h" #include "sm2_asy_key_generator_openssl.h" -#include "detailed_ecc_key_params.h" #include "ecc_openssl_common.h" #include "ecc_openssl_common_param_spec.h" #include "ecc_common.h" +#include "ecc_common_param_spec.h" #include "ecc_key_util.h" #include "key_utils.h" #include "blob.h" @@ -42,20 +42,11 @@ using namespace std; using namespace testing::ext; namespace { -constexpr int ZERO = 0; -constexpr int ONE = 1; -constexpr int TWO = 2; -constexpr int THREE = 3; -constexpr int FOUR = 4; -constexpr int FIVE = 5; -constexpr int SIX = 6; -constexpr int SEVEN = 7; -constexpr int EIGHT = 8; class CryptoSm2AsyKeyGeneratorBySpecTest : public testing::Test { public: - static void SetUpTestCase(); - static void TearDownTestCase(); + static void SetUpTestCase(){}; + static void TearDownTestCase(){}; void SetUp(); void TearDown(); }; @@ -73,174 +64,22 @@ HcfObjectBase g_obj = { .destroy = nullptr }; -static const char *g_mockMessage = "hello world"; -static HcfBlob g_mockInput = { - .data = (uint8_t *)g_mockMessage, - .len = 12 -}; - static string g_sm2AlgName = "SM2_256"; static string g_sm2CurveName = "NID_sm2"; -HcfEccPubKeyParamsSpec g_sm2256PubKeySpec; -HcfEccPriKeyParamsSpec g_sm2256PriKeySpec; -HcfEccKeyPairParamsSpec g_sm2256KeyPairSpec; -HcfEccCommParamsSpec g_sm2256CommSpec; HcfEccCommParamsSpec *g_eccCommSpec = nullptr; static HcfResult ConstructSm2256CommParamsSpec(HcfAsyKeyParamsSpec **spec) { - HcfEccCommParamsSpec *eccCommSpec = &g_sm2256CommSpec; + HcfEccCommParamsSpec *eccCommSpec = nullptr; HcfEccKeyUtilCreate(g_sm2CurveName.c_str(), &eccCommSpec); - + if (eccCommSpec == nullptr) { + return HCF_INVALID_PARAMS; + } *spec = (HcfAsyKeyParamsSpec *)eccCommSpec; return HCF_SUCCESS; } -static HcfResult ConstructSm2256KeyPairCommParamsSpec(const string &algoName, HcfEccCommParamsSpec **spec) -{ - HcfEccCommParamsSpec *eccCommSpec = nullptr; - - HcfEccKeyUtilCreate(algoName.c_str(), &eccCommSpec); - - *spec = eccCommSpec; - return HCF_SUCCESS; -} - -static HcfResult ConstructSm2256KeyPairParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - HcfEccKeyPairParamsSpec *eccKeyPairSpec = &g_sm2256KeyPairSpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccKeyPairSpec->base.base.algName = g_eccCommSpec->base.algName; - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = g_eccCommSpec->field; - eccKeyPairSpec->base.field->fieldType = g_eccCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.data; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.len; - eccKeyPairSpec->base.a.data = g_eccCommSpec->a.data; - eccKeyPairSpec->base.a.len = g_eccCommSpec->a.len; - eccKeyPairSpec->base.b.data = g_eccCommSpec->b.data; - eccKeyPairSpec->base.b.len = g_eccCommSpec->b.len; - eccKeyPairSpec->base.g.x.data = g_eccCommSpec->g.x.data; - eccKeyPairSpec->base.g.x.len = g_eccCommSpec->g.x.len; - eccKeyPairSpec->base.g.y.data = g_eccCommSpec->g.y.data; - eccKeyPairSpec->base.g.y.len = g_eccCommSpec->g.y.len; - eccKeyPairSpec->base.n.data = g_eccCommSpec->n.data; - eccKeyPairSpec->base.n.len = g_eccCommSpec->n.len; - eccKeyPairSpec->base.h = g_eccCommSpec->h; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); - eccKeyPairSpec->pk.x.data = retBigInt.data; - eccKeyPairSpec->pk.x.len = retBigInt.len; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); - eccKeyPairSpec->pk.y.data =retBigInt.data; - eccKeyPairSpec->pk.y.len = retBigInt.len; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); - eccKeyPairSpec->sk.data = retBigInt.data; - eccKeyPairSpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)eccKeyPairSpec; - HcfObjDestroy(generator); - return HCF_SUCCESS; -} - -static HcfResult ConstructSm2256PriKeyParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - HcfEccPriKeyParamsSpec *eccPriKeySpec = &g_sm2256PriKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccPriKeySpec->base.base.algName = g_eccCommSpec->base.algName; - eccPriKeySpec->base.base.specType = HCF_PRIVATE_KEY_SPEC; - eccPriKeySpec->base.field = g_eccCommSpec->field; - eccPriKeySpec->base.field->fieldType = g_eccCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.data = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.data; - ((HcfECFieldFp *)(eccPriKeySpec->base.field))->p.len = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.len; - eccPriKeySpec->base.a.data = g_eccCommSpec->a.data; - eccPriKeySpec->base.a.len = g_eccCommSpec->a.len; - eccPriKeySpec->base.b.data = g_eccCommSpec->b.data; - eccPriKeySpec->base.b.len = g_eccCommSpec->b.len; - eccPriKeySpec->base.g.x.data = g_eccCommSpec->g.x.data; - eccPriKeySpec->base.g.x.len = g_eccCommSpec->g.x.len; - eccPriKeySpec->base.g.y.data = g_eccCommSpec->g.y.data; - eccPriKeySpec->base.g.y.len = g_eccCommSpec->g.y.len; - eccPriKeySpec->base.n.data = g_eccCommSpec->n.data; - eccPriKeySpec->base.n.len = g_eccCommSpec->n.len; - eccPriKeySpec->base.h = g_eccCommSpec->h; - - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, &retBigInt); - eccPriKeySpec->sk.data = retBigInt.data; - eccPriKeySpec->sk.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)eccPriKeySpec; - HcfObjDestroy(generator); - return HCF_SUCCESS; -} - -static HcfResult ConstructSm2256PubKeyParamsSpec(const string &algoName, HcfAsyKeyParamsSpec **spec) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate(algoName.c_str(), &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - HcfEccPubKeyParamsSpec *eccPubKeySpec = &g_sm2256PubKeySpec; - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - - eccPubKeySpec->base.base.algName = g_eccCommSpec->base.algName; - eccPubKeySpec->base.base.specType = HCF_PUBLIC_KEY_SPEC; - eccPubKeySpec->base.field = g_eccCommSpec->field; - eccPubKeySpec->base.field->fieldType = g_eccCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.data = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.data; - ((HcfECFieldFp *)(eccPubKeySpec->base.field))->p.len = ((HcfECFieldFp *)(g_eccCommSpec->field))->p.len; - eccPubKeySpec->base.a.data = g_eccCommSpec->a.data; - eccPubKeySpec->base.a.len = g_eccCommSpec->a.len; - eccPubKeySpec->base.b.data = g_eccCommSpec->b.data; - eccPubKeySpec->base.b.len = g_eccCommSpec->b.len; - eccPubKeySpec->base.g.x.data = g_eccCommSpec->g.x.data; - eccPubKeySpec->base.g.x.len = g_eccCommSpec->g.x.len; - eccPubKeySpec->base.g.y.data = g_eccCommSpec->g.y.data; - eccPubKeySpec->base.g.y.len = g_eccCommSpec->g.y.len; - eccPubKeySpec->base.n.data = g_eccCommSpec->n.data; - eccPubKeySpec->base.n.len = g_eccCommSpec->n.len; - eccPubKeySpec->base.h = g_eccCommSpec->h; - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_X_BN, &retBigInt); - eccPubKeySpec->pk.x.data = retBigInt.data; - eccPubKeySpec->pk.x.len = retBigInt.len; - - res = keyPair->pubKey->getAsyKeySpecBigInteger(keyPair->pubKey, ECC_PK_Y_BN, &retBigInt); - eccPubKeySpec->pk.y.data =retBigInt.data; - eccPubKeySpec->pk.y.len = retBigInt.len; - - *spec = (HcfAsyKeyParamsSpec *)eccPubKeySpec; - HcfObjDestroy(generator); - return HCF_SUCCESS; -} - -void CryptoSm2AsyKeyGeneratorBySpecTest::SetUpTestCase() -{ - ConstructSm2256KeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); -} - -void CryptoSm2AsyKeyGeneratorBySpecTest::TearDownTestCase() -{ - FreeEccCommParamsSpec(g_eccCommSpec); -} - /** * @tc.name: CryptoEccAsyKeyGeneratorBySpecTest.CryptoSm2AsyKeyGeneratorBySpecTest001 * @tc.desc: Verify that the creation of the sm2 key pair generator is normal. @@ -250,7 +89,7 @@ void CryptoSm2AsyKeyGeneratorBySpecTest::TearDownTestCase() HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest001, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -262,13 +101,14 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 ASSERT_NE(generator, nullptr); HcfObjDestroy(generator); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest002, TestSize.Level0) { HcfAsyKeyGeneratorBySpec *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(nullptr, &generator); + HcfResult res = HcfAsyKeyGeneratorBySpecCreate(nullptr, &generator); ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(generator, nullptr); @@ -279,20 +119,20 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest003, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, nullptr); - ASSERT_NE(res, HCF_SUCCESS); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest004, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -307,12 +147,13 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 ASSERT_NE(className, nullptr); HcfObjDestroy(generator); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest005, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -324,12 +165,13 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 ASSERT_NE(generator, nullptr); generator->base.destroy((HcfObjectBase *)generator); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest006, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -342,12 +184,13 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 generator->base.destroy(nullptr); HcfObjDestroy(generator); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest007, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -365,7 +208,7 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest008, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -376,16 +219,16 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 ASSERT_NE(generator, nullptr); const char *algName = generator->getAlgName(generator); - ASSERT_NE(algName, nullptr); HcfObjDestroy(generator); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest009, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -397,7 +240,6 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 ASSERT_NE(generator, nullptr); const char *algName = generator->getAlgName(nullptr); - ASSERT_EQ(algName, nullptr); HcfObjDestroy(generator); @@ -407,7 +249,7 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest010, TestSize.Level0) { HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); + HcfResult res = ConstructSm2256CommParamsSpec(¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -418,17 +260,18 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 ASSERT_NE(generator, nullptr); const char *algName = generator->getAlgName((HcfAsyKeyGeneratorBySpec *)&g_obj); - ASSERT_EQ(algName, nullptr); HcfObjDestroy(generator); + FreeEccCommParamsSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest011, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -444,12 +287,15 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest012, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -472,63 +318,62 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest013, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); res = generator->generateKeyPair(generator, nullptr); - ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest014, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); res = generator->generateKeyPair(nullptr, nullptr); - ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest015, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -537,102 +382,99 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest016, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy((HcfObjectBase *)(&(keyPair->base))); - HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest017, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(nullptr); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest018, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->base.destroy(&g_obj); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest019, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -641,25 +483,25 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest020, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -668,364 +510,351 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest021, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(nullptr); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest022, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->pubKey->base.base.destroy(&g_obj); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest023, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *format = keyPair->pubKey->base.getFormat(&(keyPair->pubKey->base)); - ASSERT_NE(format, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest024, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *format = keyPair->pubKey->base.getFormat(nullptr); - ASSERT_EQ(format, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest025, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *format = keyPair->pubKey->base.getFormat((HcfKey *)&g_obj); - ASSERT_EQ(format, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest026, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *algName = keyPair->pubKey->base.getAlgorithm(&(keyPair->pubKey->base)); - ASSERT_NE(algName, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest027, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *algName = keyPair->pubKey->base.getAlgorithm(nullptr); - ASSERT_EQ(algName, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest028, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *algName = keyPair->pubKey->base.getAlgorithm((HcfKey *)&g_obj); - ASSERT_EQ(algName, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest029, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &blob); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); - + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest030, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->base.getEncoded(nullptr, &blob); - ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - free(blob.data); - + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest031, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); - ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - free(blob.data); - + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest032, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), nullptr); - ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest033, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); @@ -1036,83 +865,80 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem(keyPair->priKey); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest034, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->clearMem(nullptr); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest035, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest036, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); @@ -1121,514 +947,497 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest037, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy((HcfObjectBase *)(&(keyPair->priKey->base.base))); keyPair->priKey = nullptr; - HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest038, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(nullptr); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest039, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); keyPair->priKey->base.base.destroy(&g_obj); - HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest040, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *format = keyPair->priKey->base.getFormat(&(keyPair->priKey->base)); - ASSERT_NE(format, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest041, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *format = keyPair->priKey->base.getFormat(nullptr); - ASSERT_EQ(format, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest042, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *format = keyPair->priKey->base.getFormat((HcfKey *)&g_obj); - ASSERT_EQ(format, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest043, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *algName = keyPair->priKey->base.getAlgorithm(&(keyPair->priKey->base)); - ASSERT_NE(algName, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest044, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *algName = keyPair->priKey->base.getAlgorithm(nullptr); - ASSERT_EQ(algName, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest045, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); const char *algName = keyPair->priKey->base.getAlgorithm((HcfKey *)&g_obj); - ASSERT_EQ(algName, nullptr); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest046, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &blob); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - free(blob.data); - + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest047, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->priKey->base.getEncoded(nullptr, &blob); - ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - free(blob.data); - + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest048, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); HcfBlob blob = { .data = nullptr, .len = 0 }; res = keyPair->priKey->base.getEncoded((HcfKey *)&g_obj, &blob); - ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - free(blob.data); - + HcfFree(blob.data); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest049, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccKeyPairParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(keyPair, nullptr); res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), nullptr); - ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(keyPair); HcfObjDestroy(generator); + DestroyEccKeyPairSpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest050, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest051, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(nullptr, &pubKey); - ASSERT_NE(res, HCF_SUCCESS); ASSERT_EQ(pubKey, nullptr); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest052, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); res = generator->generatePubKey(generator, nullptr); - ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest053, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); res = generator->generatePubKey(nullptr, nullptr); - ASSERT_NE(res, HCF_SUCCESS); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest054, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); const char *className = pubKey->base.base.getClass(); - ASSERT_NE(className, nullptr); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest055, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); @@ -1639,247 +1448,238 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 ASSERT_NE(pubKey, nullptr); pubKey->base.base.destroy((HcfObjectBase *)(&(pubKey->base.base))); - HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest056, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); pubKey->base.base.destroy(nullptr); - HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest057, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); pubKey->base.base.destroy(&g_obj); - HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest058, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); const char *format = pubKey->base.getFormat(&(pubKey->base)); - ASSERT_NE(format, nullptr); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest059, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); const char *format = pubKey->base.getFormat(nullptr); - ASSERT_EQ(format, nullptr); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest060, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); const char *format = pubKey->base.getFormat((HcfKey *)&g_obj); - ASSERT_EQ(format, nullptr); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest061, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); const char *algName = pubKey->base.getAlgorithm(&(pubKey->base)); - ASSERT_NE(algName, nullptr); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest062, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); const char *algName = pubKey->base.getAlgorithm(nullptr); - ASSERT_EQ(algName, nullptr); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest063, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); const char *algName = pubKey->base.getAlgorithm((HcfKey *)&g_obj); - ASSERT_EQ(algName, nullptr); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest064, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); @@ -1889,30 +1689,29 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(blob.data, nullptr); ASSERT_NE(blob.len, 0); - - free(blob.data); + HcfFree(blob.data); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest065, TestSize.Level0) { + ConstructEccKeyPairCommParamsSpec("NID_sm2", &g_eccCommSpec); + ASSERT_NE(g_eccCommSpec, nullptr); HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - + HcfResult res = ConstructEccPubKeyParamsSpec(g_sm2AlgName.c_str(), g_eccCommSpec, ¶mSpec); ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(paramSpec, nullptr); HcfAsyKeyGeneratorBySpec *generator = nullptr; res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(generator, nullptr); HcfPubKey *pubKey = nullptr; res = generator->generatePubKey(generator, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); ASSERT_NE(pubKey, nullptr); @@ -1923,1425 +1722,9 @@ HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest0 ASSERT_EQ(blob.data, nullptr); ASSERT_EQ(blob.len, 0); - free(blob.data); - + HcfFree(blob.data); HcfObjDestroy(pubKey); HcfObjDestroy(generator); + DestroyEccPubKeySpec(reinterpret_cast(paramSpec)); } - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest066, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfBlob blob = { .data = nullptr, .len = 0 }; - res = pubKey->base.getEncoded((HcfKey *)&g_obj, &blob); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(blob.data, nullptr); - ASSERT_EQ(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest067, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - res = pubKey->base.getEncoded(&(pubKey->base), nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest068, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest069, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(nullptr, &priKey); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest070, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - res = generator->generatePriKey(generator, nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest071, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - res = generator->generatePriKey(nullptr, nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest072, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *className = priKey->base.base.getClass(); - - ASSERT_NE(className, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest073, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - priKey->base.base.destroy((HcfObjectBase *)(&(priKey->base.base))); - - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest074, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - priKey->base.base.destroy(nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest075, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - priKey->base.base.destroy(&g_obj); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest076, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - res = priKey->base.getEncoded(&(priKey->base), nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest077, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - priKey->clearMem(priKey); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest078, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - priKey->clearMem(nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest079, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *format = priKey->base.getFormat(&priKey->base); - - ASSERT_NE(format, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest080, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *format = priKey->base.getFormat(nullptr); - - ASSERT_EQ(format, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest081, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *format = priKey->base.getFormat((HcfKey *)&g_obj); - - ASSERT_EQ(format, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest082, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *algName = priKey->base.getAlgorithm(&priKey->base); - - ASSERT_NE(algName, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest083, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *algName = priKey->base.getAlgorithm(nullptr); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest084, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - const char *algName = priKey->base.getAlgorithm((HcfKey *)&g_obj); - - ASSERT_EQ(algName, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest085, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = {.data = nullptr, .len = 0}; - res = priKey->base.getEncoded(&(priKey->base), &blob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(blob.data, nullptr); - ASSERT_NE(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest086, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = {.data = nullptr, .len = 0}; - res = priKey->base.getEncoded(nullptr, &blob); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(blob.data, nullptr); - ASSERT_EQ(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest087, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfBlob blob = {.data = nullptr, .len = 0}; - res = priKey->base.getEncoded((HcfKey *)&g_obj, &blob); - - ASSERT_NE(res, HCF_SUCCESS); - ASSERT_EQ(blob.data, nullptr); - ASSERT_EQ(blob.len, 0); - - free(blob.data); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest088, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - res = priKey->base.getEncoded(&(priKey->base), nullptr); - - ASSERT_NE(res, HCF_SUCCESS); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest089, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generatorBySpec, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob pubKeyBlob = {.data = nullptr, .len = 0}; - HcfBlob priKeyBlob = {.data = nullptr, .len = 0}; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); - ASSERT_EQ(res, HCF_SUCCESS); - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGenerator *generator = nullptr; - res = HcfAsyKeyGeneratorCreate("SM2_256", &generator); - HcfKeyPair *outKeyPair = nullptr; - res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &outKeyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outKeyPair, nullptr); - HcfBlob outPubKeyBlob = { .data = nullptr, .len = 0 }; - res = outKeyPair->pubKey->base.getEncoded(&(outKeyPair->pubKey->base), &outPubKeyBlob); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outPubKeyBlob.data, nullptr); - ASSERT_NE(outPubKeyBlob.len, 0); - HcfBlob outPriKeyBlob = { .data = nullptr, .len = 0 }; - res = outKeyPair->priKey->base.getEncoded(&(outKeyPair->priKey->base), &outPriKeyBlob); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(outPriKeyBlob.data, nullptr); - ASSERT_NE(outPriKeyBlob.len, 0); - free(pubKeyBlob.data); - free(priKeyBlob.data); - free(outPubKeyBlob.data); - free(outPriKeyBlob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(outKeyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorBySpec); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest090, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - uint8_t plan[] = "this is sm2 cipher test!\0"; - HcfBlob input = {.data = (uint8_t *)plan, .len = strlen((char *)plan)}; - HcfBlob encoutput = {.data = nullptr, .len = 0}; - HcfCipher *cipher = nullptr; - res = HcfCipherCreate("SM2|SM3", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - - res = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)keyPair->pubKey, nullptr); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->doFinal(cipher, &input, &encoutput); - EXPECT_EQ(res, HCF_SUCCESS); - HcfObjDestroy(cipher); - - HcfBlob decoutput = {.data = nullptr, .len = 0}; - cipher = nullptr; - res = HcfCipherCreate("SM2|SM3", &cipher); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)keyPair->priKey, nullptr); - EXPECT_EQ(res, HCF_SUCCESS); - res = cipher->doFinal(cipher, &encoutput, &decoutput); - EXPECT_EQ(res, HCF_SUCCESS); - HcfObjDestroy(cipher); - EXPECT_STREQ((char *)plan, (char *)decoutput.data); - - HcfFree(encoutput.data); - HcfFree(decoutput.data); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest091, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generator, nullptr); - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfSign *sign = nullptr; - res = HcfSignCreate("SM2|SM3", &sign); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(sign, nullptr); - - res = sign->init(sign, nullptr, keyPair->priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - uint8_t pSourceData[] = "1234567812345678\0"; - HcfBlob pSource = {.data = (uint8_t *)pSourceData, .len = strlen((char *)pSourceData)}; - res = sign->setSignSpecUint8Array(sign, SM2_USER_ID_UINT8ARR, pSource); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfBlob out = { .data = nullptr, .len = 0 }; - res = sign->sign(sign, &g_mockInput, &out); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(out.data, nullptr); - ASSERT_NE(out.len, (const unsigned int)0); - - HcfVerify *verify = nullptr; - res = HcfVerifyCreate("SM2|SM3", &verify); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(verify, nullptr); - - res = verify->init(verify, nullptr, keyPair->pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - - bool flag = verify->verify(verify, &g_mockInput, &out); - - ASSERT_EQ(flag, true); - - free(out.data); - HcfObjDestroy(sign); - HcfObjDestroy(verify); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest092, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_SM2, - .bits = HCF_ALG_SM2_256, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiSm2Create(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest093, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_SM2, - .bits = HCF_ALG_SM2_256, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiSm2Create(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfPubKey *pubKey = nullptr; - res = spiObj->engineGeneratePubKeyBySpec(spiObj, paramSpec, &pubKey); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest094, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_SM2, - .bits = HCF_ALG_SM2_256, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiSm2Create(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfPriKey *priKey = nullptr; - res = spiObj->engineGeneratePriKeyBySpec(spiObj, paramSpec, &priKey); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest095, TestSize.Level0) -{ - HcfAsyKeyGenParams params = { - .algo = HCF_ALG_SM2, - .bits = 0, - .primes = HCF_OPENSSL_PRIMES_2, - }; - - HcfAsyKeyGeneratorSpi *spiObj = nullptr; - int32_t res = HcfAsyKeyGeneratorSpiSm2Create(¶ms, &spiObj); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(spiObj, nullptr); - - HcfAsyKeyParamsSpec *paramSpec = nullptr; - res = ConstructSm2256CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfKeyPair *keyPair = nullptr; - res = spiObj->engineGenerateKeyPairBySpec(spiObj, paramSpec, &keyPair); - ASSERT_EQ(res, HCF_SUCCESS); - - HcfObjDestroy(spiObj); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest096, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPriKey *priKey = nullptr; - res = generator->generatePriKey(generator, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_CURVE_NAME_STR; - - res = priKey->getAsyKeySpecString(priKey, item, &retStr); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest097, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfPubKey *pubKey = nullptr; - res = generator->generatePubKey(generator, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - res = pubKey->getAsyKeySpecString(pubKey, ECC_CURVE_NAME_STR, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - char *retStr = nullptr; - res = pubKey->getAsyKeySpecString(pubKey, ECC_FIELD_SIZE_INT, &retStr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest098, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - char *retStr = nullptr; - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = keyPair->priKey->getAsyKeySpecString(keyPair->priKey, item, &retStr); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - retStr = nullptr; - res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, &retStr); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retStr, nullptr); - - free(retStr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest099, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - AsyKeySpecItem item = ECC_FIELD_TYPE_STR; - - res = keyPair->pubKey->getAsyKeySpecString(keyPair->pubKey, item, nullptr); - - ASSERT_EQ(res, HCF_INVALID_PARAMS); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest100, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - int retInt = 0; - AsyKeySpecItem item = ECC_FIELD_SIZE_INT; - res = keyPair->pubKey->getAsyKeySpecInt(keyPair->pubKey, item, &retInt); - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - retInt = 0; - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, item, &retInt); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(retInt, 0); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest101, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - - HcfAsyKeyGeneratorBySpec *generator = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, ECC_FIELD_SIZE_INT, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - int retInt = 0; - res = keyPair->priKey->getAsyKeySpecInt(keyPair->priKey, ECC_FIELD_TYPE_STR, &retInt); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - HcfBigInteger retBigInt = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, ECC_SK_BN, nullptr); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - res = keyPair->priKey->getAsyKeySpecBigInteger(keyPair->priKey, DSA_SK_BN, &retBigInt); - ASSERT_EQ(res, HCF_INVALID_PARAMS); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); -} - -static HcfResult ConstructSm2256KeyPairParamsSpecByGet(HcfEccKeyPairParamsSpec *eccKeyPairSpec, - HcfBigInteger *params, int h) -{ - eccKeyPairSpec->base.base.algName = g_eccCommSpec->base.algName; - eccKeyPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC; - eccKeyPairSpec->base.field = g_eccCommSpec->field; - eccKeyPairSpec->base.field->fieldType = g_eccCommSpec->field->fieldType; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.data = params[ZERO].data; - ((HcfECFieldFp *)(eccKeyPairSpec->base.field))->p.len = params[ZERO].len; - eccKeyPairSpec->base.a.data = params[ONE].data; - eccKeyPairSpec->base.a.len = params[ONE].len; - eccKeyPairSpec->base.b.data = params[TWO].data; - eccKeyPairSpec->base.b.len = params[TWO].len; - eccKeyPairSpec->base.g.x.data = params[THREE].data; - eccKeyPairSpec->base.g.x.len = params[THREE].len; - eccKeyPairSpec->base.g.y.data = params[FOUR].data; - eccKeyPairSpec->base.g.y.len = params[FOUR].len; - - eccKeyPairSpec->base.n.data = params[FIVE].data; - eccKeyPairSpec->base.n.len = params[FIVE].len; - eccKeyPairSpec->base.h = h; - eccKeyPairSpec->pk.x.data = params[SIX].data; - eccKeyPairSpec->pk.x.len = params[SIX].len; - eccKeyPairSpec->pk.y.data = params[SEVEN].data; - eccKeyPairSpec->pk.y.len = params[SEVEN].len; - - eccKeyPairSpec->sk.data = params[EIGHT].data; - eccKeyPairSpec->sk.len = params[EIGHT].len; - return HCF_SUCCESS; -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest102, TestSize.Level0) -{ - HcfAsyKeyGenerator *generator = nullptr; - int32_t res = HcfAsyKeyGeneratorCreate(g_sm2AlgName.c_str(), &generator); - - HcfKeyPair *keyPair = nullptr; - res = generator->generateKeyPair(generator, nullptr, &keyPair); - - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(keyPair, nullptr); - HcfPriKey *priKey = keyPair->priKey; - HcfPubKey *pubKey = keyPair->pubKey; - HcfBigInteger retFp = { .data = nullptr, .len = 0 }; - HcfBigInteger retA = { .data = nullptr, .len = 0 }; - HcfBigInteger retB = { .data = nullptr, .len = 0 }; - HcfBigInteger retGX = { .data = nullptr, .len = 0 }; - HcfBigInteger retGY = { .data = nullptr, .len = 0 }; - HcfBigInteger retN = { .data = nullptr, .len = 0 }; - HcfBigInteger retSk = { .data = nullptr, .len = 0 }; - HcfBigInteger retPkX = { .data = nullptr, .len = 0 }; - HcfBigInteger retPkY = { .data = nullptr, .len = 0 }; - int retH = 0; - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_FP_P_BN, &retFp); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_A_BN, &retA); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_B_BN, &retB); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_G_X_BN, &retGX); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_G_Y_BN, &retGY); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_N_BN, &retN); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, ECC_PK_X_BN, &retPkX); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecBigInteger(pubKey, ECC_PK_Y_BN, &retPkY); - EXPECT_EQ(res, HCF_SUCCESS); - res = priKey->getAsyKeySpecBigInteger(priKey, ECC_SK_BN, &retSk); - EXPECT_EQ(res, HCF_SUCCESS); - res = pubKey->getAsyKeySpecInt(pubKey, ECC_H_INT, &retH); - EXPECT_EQ(res, HCF_SUCCESS); - HcfBigInteger params[9]; - params[0].data = retFp.data; - params[0].len = retFp.len; - params[1].data = retA.data; - params[1].len = retA.len; - params[2].data = retB.data; - params[2].len = retB.len; - params[3].data = retGX.data; - params[3].len = retGX.len; - params[4].data = retGY.data; - params[4].len = retGY.len; - params[5].data = retN.data; - params[5].len = retN.len; - params[6].data = retPkX.data; - params[6].len = retPkX.len; - params[7].data = retPkY.data; - params[7].len = retPkY.len; - params[8].data = retSk.data; - params[8].len = retSk.len; - - HcfEccKeyPairParamsSpec eccKeyPairSpec = {}; - res = ConstructSm2256KeyPairParamsSpecByGet(&eccKeyPairSpec, params, retH); - HcfAsyKeyGeneratorBySpec *generatorSpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast(&eccKeyPairSpec), &generatorSpec); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(generatorSpec, nullptr); - - HcfKeyPair *dupKeyPair = nullptr; - res = generatorSpec->generateKeyPair(generatorSpec, &dupKeyPair); - EXPECT_EQ(res, HCF_SUCCESS); - EXPECT_NE(dupKeyPair, nullptr); - - HcfObjDestroy(dupKeyPair); - HcfObjDestroy(keyPair); - HcfObjDestroy(generator); - HcfObjDestroy(generatorSpec); -} - -static void OpensslMockTestFunc(uint32_t mallocCount, HcfAsyKeyParamsSpec *paramSpec) -{ - for (int i = 0; i < mallocCount - THREE; i++) { - ResetOpensslCallNum(); - SetOpensslCallMockIndex(i); - - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - if (res != HCF_SUCCESS) { - continue; - } - HcfKeyPair *keyPair = nullptr; - res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generatorBySpec); - continue; - } - HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generatorBySpec); - continue; - } - HcfBlob priKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generatorBySpec); - continue; - } - free(pubKeyBlob.data); - free(priKeyBlob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generatorBySpec); - } -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest103, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256KeyPairParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - StartRecordOpensslCallNum(); - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generatorBySpec, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfBlob pubKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->pubKey->base.getEncoded(&(keyPair->pubKey->base), &pubKeyBlob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKeyBlob.data, nullptr); - ASSERT_NE(pubKeyBlob.len, 0); - - HcfBlob priKeyBlob = { .data = nullptr, .len = 0 }; - res = keyPair->priKey->base.getEncoded(&(keyPair->priKey->base), &priKeyBlob); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKeyBlob.data, nullptr); - ASSERT_NE(priKeyBlob.len, 0); - - free(pubKeyBlob.data); - free(priKeyBlob.data); - HcfObjDestroy(keyPair); - HcfObjDestroy(generatorBySpec); - - uint32_t mallocCount = GetOpensslCallNum(); - OpensslMockTestFunc(mallocCount, paramSpec); - - EndRecordOpensslCallNum(); -} - -static void OpensslMockTestFunc1(uint32_t mallocCount, HcfAsyKeyParamsSpec *paramSpec) -{ - for (int i = 0; i < mallocCount - 1; i++) { - ResetOpensslCallNum(); - SetOpensslCallMockIndex(i); - - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - if (res != HCF_SUCCESS) { - continue; - } - HcfKeyPair *keyPair = nullptr; - res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generatorBySpec); - continue; - } - HcfObjDestroy(keyPair); - HcfObjDestroy(generatorBySpec); - } -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest104, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256CommParamsSpec(¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - StartRecordOpensslCallNum(); - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generatorBySpec, nullptr); - - HcfKeyPair *keyPair = nullptr; - res = generatorBySpec->generateKeyPair(generatorBySpec, &keyPair); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(keyPair, nullptr); - - HcfObjDestroy(keyPair); - HcfObjDestroy(generatorBySpec); - - uint32_t mallocCount = GetOpensslCallNum(); - OpensslMockTestFunc1(mallocCount, paramSpec); - - EndRecordOpensslCallNum(); -} - -static void OpensslMockTestFunc2(uint32_t mallocCount, HcfAsyKeyParamsSpec *paramSpec) -{ - for (int i = 0; i < mallocCount - FIVE; i++) { - ResetOpensslCallNum(); - SetOpensslCallMockIndex(i); - - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - if (res != HCF_SUCCESS) { - continue; - } - HcfPriKey *priKey = nullptr; - res = generatorBySpec->generatePriKey(generatorBySpec, &priKey); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generatorBySpec); - continue; - } - HcfObjDestroy(priKey); - HcfObjDestroy(generatorBySpec); - } -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest105, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PriKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - StartRecordOpensslCallNum(); - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generatorBySpec, nullptr); - - HcfPriKey *priKey = nullptr; - res = generatorBySpec->generatePriKey(generatorBySpec, &priKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(priKey, nullptr); - - HcfObjDestroy(priKey); - HcfObjDestroy(generatorBySpec); - - uint32_t mallocCount = GetOpensslCallNum(); - OpensslMockTestFunc2(mallocCount, paramSpec); - - EndRecordOpensslCallNum(); -} - -static void OpensslMockTestFunc3(uint32_t mallocCount, HcfAsyKeyParamsSpec *paramSpec) -{ - for (int i = 0; i < mallocCount - 1; i++) { - ResetOpensslCallNum(); - SetOpensslCallMockIndex(i); - - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - int32_t res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - if (res != HCF_SUCCESS) { - continue; - } - HcfPubKey *pubKey = nullptr; - res = generatorBySpec->generatePubKey(generatorBySpec, &pubKey); - if (res != HCF_SUCCESS) { - HcfObjDestroy(generatorBySpec); - continue; - } - HcfObjDestroy(pubKey); - HcfObjDestroy(generatorBySpec); - } -} - -HWTEST_F(CryptoSm2AsyKeyGeneratorBySpecTest, CryptoSm2AsyKeyGeneratorBySpecTest106, TestSize.Level0) -{ - HcfAsyKeyParamsSpec *paramSpec = nullptr; - int32_t res = ConstructSm2256PubKeyParamsSpec(g_sm2AlgName, ¶mSpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(paramSpec, nullptr); - - StartRecordOpensslCallNum(); - HcfAsyKeyGeneratorBySpec *generatorBySpec = nullptr; - res = HcfAsyKeyGeneratorBySpecCreate(paramSpec, &generatorBySpec); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(generatorBySpec, nullptr); - - HcfPubKey *pubKey = nullptr; - res = generatorBySpec->generatePubKey(generatorBySpec, &pubKey); - - ASSERT_EQ(res, HCF_SUCCESS); - ASSERT_NE(pubKey, nullptr); - - HcfObjDestroy(pubKey); - HcfObjDestroy(generatorBySpec); - - uint32_t mallocCount = GetOpensslCallNum(); - OpensslMockTestFunc3(mallocCount, paramSpec); - - EndRecordOpensslCallNum(); -} -} +} \ No newline at end of file diff --git a/test/unittest/src/sm4_common.cpp b/test/unittest/src/sm4_common.cpp new file mode 100644 index 0000000..278e32e --- /dev/null +++ b/test/unittest/src/sm4_common.cpp @@ -0,0 +1,303 @@ +/* + * Copyright (C) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "securec.h" +#include "aes_openssl.h" +#include "blob.h" +#include "cipher.h" +#include "detailed_iv_params.h" +#include "detailed_gcm_params.h" +#include "detailed_ccm_params.h" +#include "log.h" +#include "memory.h" +#include "sym_common_defines.h" +#include "sym_key_generator.h" +#include "sm4_common.h" +#include "sm4_openssl.h" + +using namespace std; + +HcfResult GenerateSm4SymKey(HcfSymKey **key) +{ + HcfSymKeyGenerator *generator = nullptr; + + HcfResult ret = HcfSymKeyGeneratorCreate("SM4_128", &generator); + if (ret != HCF_SUCCESS) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + return ret; + } + + ret = generator->generateSymKey(generator, key); + if (ret != HCF_SUCCESS) { + LOGE("generateSymKey failed!"); + } + HcfObjDestroy(generator); + return ret; +} + +int32_t GenerateSymKeyForSm4(const char *algoName, HcfSymKey **key) +{ + HcfSymKeyGenerator *generator = nullptr; + + int32_t ret = HcfSymKeyGeneratorCreate(algoName, &generator); + if (ret != 0) { + LOGE("HcfSymKeyGeneratorCreate failed!"); + return ret; + } + + ret = generator->generateSymKey(generator, key); + if (ret != 0) { + LOGE("generateSymKey failed!"); + } + HcfObjDestroy((HcfObjectBase *)generator); + return ret; +} + + +// use ECB, test abnormal input +int32_t Sm4EncryptWithInput(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, + uint8_t *cipherText, int *cipherTextLen) +{ + HcfBlob output = { .data = nullptr, .len = 0 }; + int32_t maxLen = *cipherTextLen; + int32_t ret = cipher->init(cipher, ENCRYPT_MODE, &(key->key), nullptr); + if (ret != 0) { + LOGE("init failed! %d", ret); + return ret; + } + + ret = cipher->update(cipher, input, &output); + if (ret != 0) { + LOGE("update failed!"); + return ret; + } + *cipherTextLen = output.len; + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + HcfBlobDataFree(&output); + } + + ret = cipher->doFinal(cipher, nullptr, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText + *cipherTextLen, maxLen - *cipherTextLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + *cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + + return 0; +} + +// test encrypt and decrypt with null plain text +int32_t Sm4DecryptEmptyMsg(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen) +{ + HcfBlob input = { .data = cipherText, .len = cipherTextLen }; + HcfBlob output = { .data = nullptr, .len = 0 }; + int32_t ret = cipher->init(cipher, DECRYPT_MODE, &(key->key), params); + if (ret != 0) { + LOGE("init failed! %d", ret); + return ret; + } + + ret = cipher->doFinal(cipher, &input, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.len == 0 && output.data == nullptr) { + ret = 0; + } else { + ret = -1; + } + HcfBlobDataFree(&output); + return ret; +} + + +int32_t Sm4Encrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int *cipherTextLen) +{ + uint8_t plainText[] = "this is test!"; + HcfBlob input = {.data = (uint8_t *)plainText, .len = 13}; + HcfBlob output = {}; + int32_t maxLen = *cipherTextLen; + int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! "); + return ret; + } + + ret = cipher->update(cipher, &input, &output); + if (ret != 0) { + LOGE("update failed!"); + return ret; + } + *cipherTextLen = output.len; + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + HcfBlobDataFree(&output); + } + + ret = cipher->doFinal(cipher, nullptr, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText + *cipherTextLen, maxLen - *cipherTextLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + *cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + return 0; +} + +int32_t Sm4Decrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen) +{ + uint8_t plainText[] = "this is test!"; + HcfBlob input = {.data = (uint8_t *)cipherText, .len = cipherTextLen}; + HcfBlob output = {}; + int32_t maxLen = cipherTextLen; + int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! "); + return ret; + } + + ret = cipher->update(cipher, &input, &output); + if (ret != 0) { + LOGE("update failed!"); + return ret; + } + cipherTextLen = output.len; + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + HcfBlobDataFree(&output); + } + + ret = cipher->doFinal(cipher, nullptr, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText + cipherTextLen, maxLen - cipherTextLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + + if (cipherTextLen != sizeof(plainText) - 1) { + return -1; + } + return memcmp(cipherText, plainText, cipherTextLen); +} + +int32_t Sm4NoUpdateEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int *cipherTextLen) +{ + uint8_t plainText[] = "this is test!"; + HcfBlob input = {.data = (uint8_t *)plainText, .len = 13}; + HcfBlob output = {}; + int32_t maxLen = *cipherTextLen; + int32_t ret = cipher->init(cipher, ENCRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! "); + return ret; + } + + *cipherTextLen = 0; + ret = cipher->doFinal(cipher, &input, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + *cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + return 0; +} + +int32_t Sm4NoUpdateDecrypt(HcfCipher *cipher, HcfSymKey *key, HcfParamsSpec *params, + uint8_t *cipherText, int cipherTextLen) +{ + uint8_t plainText[] = "this is test!"; + HcfBlob input = {.data = (uint8_t *)cipherText, .len = cipherTextLen}; + HcfBlob output = {}; + int32_t maxLen = cipherTextLen; + int32_t ret = cipher->init(cipher, DECRYPT_MODE, (HcfKey *)key, params); + if (ret != 0) { + LOGE("init failed! "); + return ret; + } + + cipherTextLen = 0; + ret = cipher->doFinal(cipher, &input, &output); + if (ret != 0) { + LOGE("doFinal failed!"); + return ret; + } + if (output.data != nullptr) { + if (memcpy_s(cipherText, maxLen, output.data, output.len) != EOK) { + HcfBlobDataFree(&output); + return -1; + } + cipherTextLen += output.len; + HcfBlobDataFree(&output); + } + + if (cipherTextLen != sizeof(plainText) - 1) { + return -1; + } + return memcmp(cipherText, plainText, cipherTextLen); +} + +const char *GetMockClass(void) +{ + return "HcfMock"; +} + +HcfObjectBase obj = { + .getClass = GetMockClass, + .destroy = nullptr +}; \ No newline at end of file -- Gitee