diff --git a/frameworks/js/napi/crypto/inc/napi_crypto_framework_defines.h b/frameworks/js/napi/crypto/inc/napi_crypto_framework_defines.h index c94bc34a4f64e6d6d5eaf434214fe5725cf4ec4f..76f8605985e7cf24d0ae417bf5a034682d82afab 100644 --- a/frameworks/js/napi/crypto/inc/napi_crypto_framework_defines.h +++ b/frameworks/js/napi/crypto/inc/napi_crypto_framework_defines.h @@ -36,6 +36,7 @@ constexpr uint32_t JS_ERR_INVALID_PARAMS = 401; constexpr uint32_t JS_ERR_NOT_SUPPORT = 801; constexpr uint32_t JS_ERR_OUT_OF_MEMORY = 17620001; constexpr uint32_t JS_ERR_RUNTIME_ERROR = 17620002; +constexpr uint32_t JS_ERR_PARAMETER_CHECK_FAILED = 17620003; constexpr uint32_t JS_ERR_CRYPTO_OPERATION = 17630001; constexpr int32_t SPEC_ITEM_TYPE_BIG_INT = 1; diff --git a/frameworks/js/napi/crypto/src/napi_sm2_ec_signature.cpp b/frameworks/js/napi/crypto/src/napi_sm2_ec_signature.cpp index ca9927f05d554d1ece027a91a12d04a9ad8c6ea7..76b8bbdcdec2d2dc08a961b838c94a3089ed370e 100644 --- a/frameworks/js/napi/crypto/src/napi_sm2_ec_signature.cpp +++ b/frameworks/js/napi/crypto/src/napi_sm2_ec_signature.cpp @@ -135,7 +135,7 @@ static napi_value ConvertSm2CipherTextSpecToNapiValue(napi_env env, Sm2EcSignatu { if (!CheckSm2CipherTextSpec(spec)) { LOGE("Invalid spec!"); - napi_throw(env, GenerateBusinessError(env, HCF_INVALID_PARAMS, "Invalid spec!")); + napi_throw(env, GenerateBusinessError(env, HCF_ERR_NAPI, "Invalid spec!")); return NapiGetNull(env); } napi_value instance; @@ -147,7 +147,7 @@ static napi_value ConvertSm2CipherTextSpecToNapiValue(napi_env env, Sm2EcSignatu } if (!BuildSm2CipherTextSpecToNapiValue(env, spec, &instance)) { LOGE("Build object failed!"); - napi_throw(env, GenerateBusinessError(env, HCF_INVALID_PARAMS, "build object failed!")); + napi_throw(env, GenerateBusinessError(env, HCF_ERR_NAPI, "build object failed!")); return NapiGetNull(env); } return instance; diff --git a/frameworks/js/napi/crypto/src/napi_utils.cpp b/frameworks/js/napi/crypto/src/napi_utils.cpp index e885cde6db5711bcd2b8716e104bf8315b0471df..193a1c1d81d1e594fa2f33b5ca8ad8180c04bee1 100644 --- a/frameworks/js/napi/crypto/src/napi_utils.cpp +++ b/frameworks/js/napi/crypto/src/napi_utils.cpp @@ -1913,6 +1913,8 @@ static uint32_t GetJsErrValueByErrCode(HcfResult errCode) return JS_ERR_RUNTIME_ERROR; case HCF_ERR_CRYPTO_OPERATION: return JS_ERR_CRYPTO_OPERATION; + case HCF_ERR_PARAMETER_CHECK_FAILED: + return JS_ERR_PARAMETER_CHECK_FAILED; default: return JS_ERR_DEFAULT_ERR; } diff --git a/interfaces/inner_api/common/result.h b/interfaces/inner_api/common/result.h index 24088e20afeb9f8c77d64831db600191453c79cb..a0e72a9bc54555137b676be9a0164ab4539c17c0 100644 --- a/interfaces/inner_api/common/result.h +++ b/interfaces/inner_api/common/result.h @@ -28,6 +28,8 @@ typedef enum HcfResult { HCF_ERR_MALLOC = -20001, /** Indicates that call napi api fails. */ HCF_ERR_NAPI = -20002, + /** Indicates that parameter check failed. */ + HCF_ERR_PARAMETER_CHECK_FAILED = -20003, /** Indicates that third part has something wrong. */ HCF_ERR_CRYPTO_OPERATION = -30001, diff --git a/plugin/openssl_plugin/crypto_operation/cipher/src/cipher_sm2_ecdsa_signature_openssl.c b/plugin/openssl_plugin/crypto_operation/cipher/src/cipher_sm2_ecdsa_signature_openssl.c index d9ae81e6099ff323f394dd7d6c3d7381c7d7c8f7..b402e013d95bfbd2b5c2ec0988aa7c09ef122185 100644 --- a/plugin/openssl_plugin/crypto_operation/cipher/src/cipher_sm2_ecdsa_signature_openssl.c +++ b/plugin/openssl_plugin/crypto_operation/cipher/src/cipher_sm2_ecdsa_signature_openssl.c @@ -27,7 +27,7 @@ static HcfResult BuildSm2Ciphertext(const Sm2EcSignatureDataSpec *spec, ECDSA_SI { if (spec == NULL || sm2Text == NULL) { LOGE("Invalid params"); - return HCF_INVALID_PARAMS; + return HCF_ERR_PARAMETER_CHECK_FAILED; } BIGNUM *r = NULL; BIGNUM *s = NULL; @@ -53,7 +53,7 @@ HcfResult HcfSm2SpecToDerData(Sm2EcSignatureDataSpec *spec, HcfBlob *output) { if (spec == NULL || output == NULL) { LOGE("Invalid params"); - return HCF_INVALID_PARAMS; + return HCF_ERR_PARAMETER_CHECK_FAILED; } ECDSA_SIG *sig = OpensslEcdsaSigNew(); HcfResult res = BuildSm2Ciphertext(spec, sig); @@ -98,7 +98,7 @@ HcfResult HcfDerDataToSm2Spec(HcfBlob *input, Sm2EcSignatureDataSpec **returnSpe { if (input == NULL || returnSpec == NULL) { LOGE("Invalid signature params"); - return HCF_INVALID_PARAMS; + return HCF_ERR_PARAMETER_CHECK_FAILED; } Sm2EcSignatureDataSpec *tempSpec = (Sm2EcSignatureDataSpec *)(HcfMalloc(sizeof(Sm2EcSignatureDataSpec), 0)); diff --git a/plugin/openssl_plugin/key/sym_key_generator/src/sym_key_openssl.c b/plugin/openssl_plugin/key/sym_key_generator/src/sym_key_openssl.c index 135851303522a29641ce15a2f3ab9fed1fcae5f1..16079ee4ab5d111d920fd76449c810fbb20ed5ea 100644 --- a/plugin/openssl_plugin/key/sym_key_generator/src/sym_key_openssl.c +++ b/plugin/openssl_plugin/key/sym_key_generator/src/sym_key_openssl.c @@ -167,8 +167,10 @@ static HcfResult HcfDesSymmKeySpiCreate(int32_t keyLen, SymKeyImpl *symKey) } if (OpensslEvpEncryptInit(ctx, OpensslEvpDesEcb(), NULL, NULL) != HCF_OPENSSL_SUCCESS) { HcfPrintOpensslError(); + HcfFree(keyMaterial); + EVP_CIPHER_CTX_free(ctx); LOGD("[error] EVP_CipherInit failed!"); - return false; + return HCF_ERR_CRYPTO_OPERATION; } if (OpensslEvpCipherCtxCtrl(ctx, EVP_CTRL_RAND_KEY, 0, keyMaterial) != 1) { HcfPrintOpensslError(); diff --git a/test/unittest/src/sm2/crypto_sm2_ecdsa_signature_test.cpp b/test/unittest/src/sm2/crypto_sm2_ecdsa_signature_test.cpp index 85b6acdc94417af3af04c02854a8c003df8b6588..87ace8a4afe9edf9262ab1df7abb748c102a0f51 100644 --- a/test/unittest/src/sm2/crypto_sm2_ecdsa_signature_test.cpp +++ b/test/unittest/src/sm2/crypto_sm2_ecdsa_signature_test.cpp @@ -96,27 +96,27 @@ HWTEST_F(CryptoSm2EcdsaSignature, HcfSm2SpecToDerDataAndBack, TestSize.Level0) HWTEST_F(CryptoSm2EcdsaSignature, HcfSm2SpecToDerData_NullInput, TestSize.Level0) { HcfBlob derOutput = { .data = nullptr, .len = 0 }; - EXPECT_EQ(HcfSm2SpecToDerData(nullptr, &derOutput), HCF_INVALID_PARAMS); + EXPECT_EQ(HcfSm2SpecToDerData(nullptr, &derOutput), HCF_ERR_PARAMETER_CHECK_FAILED); } HWTEST_F(CryptoSm2EcdsaSignature, HcfSm2SpecToDerData_NullOutput, TestSize.Level0) { Sm2EcSignatureDataSpec *spec = nullptr; ASSERT_EQ(ConstructCorrectSm2Spec(&spec), HCF_SUCCESS); - EXPECT_EQ(HcfSm2SpecToDerData(spec, nullptr), HCF_INVALID_PARAMS); + EXPECT_EQ(HcfSm2SpecToDerData(spec, nullptr), HCF_ERR_PARAMETER_CHECK_FAILED); HcfFree(spec); } HWTEST_F(CryptoSm2EcdsaSignature, HcfDerDataToSm2Spec_NullInput, TestSize.Level0) { Sm2EcSignatureDataSpec *returnSpec = nullptr; - EXPECT_EQ(HcfDerDataToSm2Spec(nullptr, &returnSpec), HCF_INVALID_PARAMS); + EXPECT_EQ(HcfDerDataToSm2Spec(nullptr, &returnSpec), HCF_ERR_PARAMETER_CHECK_FAILED); } HWTEST_F(CryptoSm2EcdsaSignature, HcfDerDataToSm2Spec_NullOutput, TestSize.Level0) { HcfBlob derInput = { .data = g_rCoordinate, .len = sizeof(g_rCoordinate) }; - EXPECT_EQ(HcfDerDataToSm2Spec(&derInput, nullptr), HCF_INVALID_PARAMS); + EXPECT_EQ(HcfDerDataToSm2Spec(&derInput, nullptr), HCF_ERR_PARAMETER_CHECK_FAILED); } HWTEST_F(CryptoSm2EcdsaSignature, HcfDerDataToSm2Spec_InvalidData, TestSize.Level0)