From 7c0a2505589a15962a73a52c31d3e66391d50e8e Mon Sep 17 00:00:00 2001 From: fuzikun Date: Tue, 18 Oct 2022 10:55:09 +0800 Subject: [PATCH] fix convertKey problem Signed-off-by: fuzikun --- frameworks/js/napi/src/napi_key_pair.cpp | 50 ++++++++++++------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/frameworks/js/napi/src/napi_key_pair.cpp b/frameworks/js/napi/src/napi_key_pair.cpp index ab1897e..8db3908 100644 --- a/frameworks/js/napi/src/napi_key_pair.cpp +++ b/frameworks/js/napi/src/napi_key_pair.cpp @@ -55,31 +55,33 @@ napi_value NapiKeyPair::ConvertToJsKeyPair(napi_env env) napi_get_reference_value(env, classRef_, &constructor); napi_new_instance(env, constructor, 0, nullptr, &instance); - NapiPubKey *napiPubKey = new NapiPubKey(this->keyPair_->pubKey); - NapiPriKey *napiPriKey = new NapiPriKey(this->keyPair_->priKey); + if (this->keyPair_->pubKey != nullptr) { + NapiPubKey *napiPubKey = new NapiPubKey(this->keyPair_->pubKey); + napi_value pubKey = napiPubKey->ConvertToJsPubKey(env); + napi_wrap( + env, pubKey, napiPubKey, + [](napi_env env, void *data, void *hint) { + NapiPubKey *napiPubKey = static_cast(data); + delete napiPubKey; + return; + }, + nullptr, nullptr); + napi_set_named_property(env, instance, CRYPTO_TAG_PUB_KEY.c_str(), pubKey); + } - napi_value pubKey = napiPubKey->ConvertToJsPubKey(env); - napi_value priKey = napiPriKey->ConvertToJsPriKey(env); - - napi_wrap( - env, pubKey, napiPubKey, - [](napi_env env, void *data, void *hint) { - NapiPubKey *napiPubKey = static_cast(data); - delete napiPubKey; - return; - }, - nullptr, nullptr); - napi_wrap( - env, priKey, napiPriKey, - [](napi_env env, void *data, void *hint) { - NapiPriKey *napiPriKey = static_cast(data); - delete napiPriKey; - return; - }, - nullptr, nullptr); - - napi_set_named_property(env, instance, CRYPTO_TAG_PUB_KEY.c_str(), pubKey); - napi_set_named_property(env, instance, CRYPTO_TAG_PRI_KEY.c_str(), priKey); + if (this->keyPair_->priKey != nullptr) { + NapiPriKey *napiPriKey = new NapiPriKey(this->keyPair_->priKey); + napi_value priKey = napiPriKey->ConvertToJsPriKey(env); + napi_wrap( + env, priKey, napiPriKey, + [](napi_env env, void *data, void *hint) { + NapiPriKey *napiPriKey = static_cast(data); + delete napiPriKey; + return; + }, + nullptr, nullptr); + napi_set_named_property(env, instance, CRYPTO_TAG_PRI_KEY.c_str(), priKey); + } LOGI("out ..."); return instance; -- Gitee