diff --git a/frameworks/js/ani/idl/ohos.security.cryptoFramework.cryptoFramework.taihe b/frameworks/js/ani/idl/ohos.security.cryptoFramework.cryptoFramework.taihe index 8bce08c6ab26cab7f5b2b74d5ed81a9668756864..f1eaaf0c15afc11960092a2a4bcc664e859b14a4 100644 --- a/frameworks/js/ani/idl/ohos.security.cryptoFramework.cryptoFramework.taihe +++ b/frameworks/js/ani/idl/ohos.security.cryptoFramework.cryptoFramework.taihe @@ -138,6 +138,7 @@ union OptKeySpec { } interface PriKey: Key { + GetPriKeyObj(): i64; ClearMem(): void; GetAsyKeySpec(itemType: AsyKeySpecEnum): OptKeySpec; GetEncodedDer(format: String): DataBlob; diff --git a/frameworks/js/ani/inc/ani_pri_key.h b/frameworks/js/ani/inc/ani_pri_key.h index f46231ccc96a2de888f50d9c23597d8dbfcf126d..1947df81b8204e0e7eafa05cfa80f9f31866758b 100644 --- a/frameworks/js/ani/inc/ani_pri_key.h +++ b/frameworks/js/ani/inc/ani_pri_key.h @@ -26,6 +26,7 @@ public: explicit PriKeyImpl(HcfPriKey *priKey); ~PriKeyImpl(); + int64_t GetPriKeyObj(); void ClearMem(); OptKeySpec GetAsyKeySpec(AsyKeySpecEnum itemType); DataBlob GetEncodedDer(string_view format); diff --git a/frameworks/js/ani/src/ani_kdf.cpp b/frameworks/js/ani/src/ani_kdf.cpp index e3187c6ddca9e3bc2ab7f780fea1d73bdedc47cd..597875470c16f181e907f97a8b7d6e8855d98398 100644 --- a/frameworks/js/ani/src/ani_kdf.cpp +++ b/frameworks/js/ani/src/ani_kdf.cpp @@ -39,7 +39,7 @@ void SetPBKDF2ParamsSpecAttribute(const PBKDF2Spec ¶ms, HcfPBKDF2ParamsSpec pbkdf2Spec.salt.data = params.salt.data(); pbkdf2Spec.salt.len = params.salt.size(); pbkdf2Spec.iterations = params.iterations; - int32_t keySize = params.keySize; + size_t keySize = params.keySize; outBlob.data = static_cast(HcfMalloc(keySize, 0)); outBlob.len = (outBlob.data == nullptr) ? 0 : keySize; pbkdf2Spec.output = outBlob; @@ -59,7 +59,7 @@ void SetHkdfParamsSpecAttribute(const HKDFSpec ¶ms, HcfHkdfParamsSpec &hkdfS hkdfSpec.salt.len = params.salt.size(); hkdfSpec.info.data = params.info.data(); hkdfSpec.info.len = params.info.size(); - int32_t keySize = params.keySize; + size_t keySize = params.keySize; outBlob.data = static_cast(HcfMalloc(keySize, 0)); outBlob.len = (outBlob.data == nullptr) ? 0 : keySize; hkdfSpec.output = outBlob; @@ -82,7 +82,7 @@ void SetScryptParamsSpecAttribute(const ScryptSpec ¶ms, HcfScryptParamsSpec scryptSpec.r = params.r; scryptSpec.p = params.p; scryptSpec.maxMem = params.maxMemory; - int32_t keySize = params.keySize; + size_t keySize = params.keySize; outBlob.data = static_cast(HcfMalloc(keySize, 0)); outBlob.len = (outBlob.data == nullptr) ? 0 : keySize; scryptSpec.output = outBlob; diff --git a/frameworks/js/ani/src/ani_key_pair.cpp b/frameworks/js/ani/src/ani_key_pair.cpp index d47b784de9ab83feaed2937b9d3a8adadf589c55..6bc5c4def9a489517e5d6ec7d1bbc4155858b12e 100644 --- a/frameworks/js/ani/src/ani_key_pair.cpp +++ b/frameworks/js/ani/src/ani_key_pair.cpp @@ -35,6 +35,7 @@ PriKey KeyPairImpl::GetPriKey() return make_holder(); } HcfPriKey *priKey = this->keyPair_->priKey; + this->keyPair_->priKey = nullptr; return make_holder(priKey); } @@ -45,6 +46,7 @@ PubKey KeyPairImpl::GetPubKey() return make_holder(); } HcfPubKey *pubKey = this->keyPair_->pubKey; + this->keyPair_->pubKey = nullptr; return make_holder(pubKey); } } // namespace ANI::CryptoFramework diff --git a/frameworks/js/ani/src/ani_pri_key.cpp b/frameworks/js/ani/src/ani_pri_key.cpp index 764164d4727c5d80745c87279972626562741106..2950e65b40f4f835f9b8fff61ea038fab1d2f741 100644 --- a/frameworks/js/ani/src/ani_pri_key.cpp +++ b/frameworks/js/ani/src/ani_pri_key.cpp @@ -26,6 +26,11 @@ PriKeyImpl::~PriKeyImpl() this->priKey_ = nullptr; } +int64_t PriKeyImpl::GetPriKeyObj() +{ + return reinterpret_cast(this->priKey_); +} + void PriKeyImpl::ClearMem() { TH_THROW(std::runtime_error, "ClearMem not implemented"); diff --git a/frameworks/js/ani/src/ani_pub_key.cpp b/frameworks/js/ani/src/ani_pub_key.cpp index b1da751e0890df186d2a8d954e49881f401bcd46..d6d00d16414165984db366916ee41f3d2dcd4e88 100644 --- a/frameworks/js/ani/src/ani_pub_key.cpp +++ b/frameworks/js/ani/src/ani_pub_key.cpp @@ -26,6 +26,11 @@ PubKeyImpl::~PubKeyImpl() this->pubKey_ = nullptr; } +int64_t PubKeyImpl::GetPubKeyObj() +{ + return reinterpret_cast(this->pubKey_); +} + OptKeySpec PubKeyImpl::GetAsyKeySpec(AsyKeySpecEnum itemType) { TH_THROW(std::runtime_error, "GetAsyKeySpec not implemented"); @@ -46,11 +51,6 @@ int64_t PubKeyImpl::GetKeyObj() TH_THROW(std::runtime_error, "GetKeyObj not implemented"); } -int64_t PubKeyImpl::GetPubKeyObj() -{ - return reinterpret_cast(this->pubKey_); -} - DataBlob PubKeyImpl::GetEncoded() { if (this->pubKey_ == nullptr) { diff --git a/frameworks/js/ani/src/impl/ohos.security.cryptoFramework.cryptoFramework.impl.cpp b/frameworks/js/ani/src/impl/ohos.security.cryptoFramework.cryptoFramework.impl.cpp index d1e865e320a302b959d1a4675398e3e331dbede1..d050bba3dd3c2712427e53b5d7e95f39d375dd57 100644 --- a/frameworks/js/ani/src/impl/ohos.security.cryptoFramework.cryptoFramework.impl.cpp +++ b/frameworks/js/ani/src/impl/ohos.security.cryptoFramework.cryptoFramework.impl.cpp @@ -122,6 +122,10 @@ public: // Don't forget to implement the constructor. } + int64_t GetPriKeyObj() { + TH_THROW(std::runtime_error, "GetPriKeyObj not implemented"); + } + void ClearMem() { TH_THROW(std::runtime_error, "ClearMem not implemented"); } diff --git a/frameworks/js/ani/test/test_asy_key_generator_by_spec.ets b/frameworks/js/ani/test/test_asy_key_generator_by_spec.ets index 08743c9e3f31d5c5d4d8c0e254b0955a2a36e404..959391ac9d9263b651b1a16f80aa4480fa9f5c88 100644 --- a/frameworks/js/ani/test/test_asy_key_generator_by_spec.ets +++ b/frameworks/js/ani/test/test_asy_key_generator_by_spec.ets @@ -156,7 +156,7 @@ function testEccPriKeySpec() { } } -function testSm2AsyKeyGeneratorBySpecSync() { +function testSm2KeyPairSpec() { let fieldFp: cryptoFramework.ECFieldFp = { fieldType: 'Fp', p: BigInt('115792089210356248756420345214020892766250353991924191454421193933289684991999') @@ -265,8 +265,12 @@ function testX25519Keypair() { let keyPair = generatorBySpec.generateKeyPairSync(); if (keyPair !== null) { console.info('get key pair result success!'); - // console.info('pub key: ' + keyPair.pubKey.getEncoded().data); sig11 - // console.info('pri key: ' + keyPair.priKey.getEncoded().data); sig11 + let pkBlob = keyPair.pubKey.getEncoded(); + let skBlob = keyPair.priKey.getEncoded(); + let pkStr = utils.uint8ArrayToHexStr(pkBlob.data); + let skStr = utils.uint8ArrayToHexStr(skBlob.data); + console.info('pub key: ' + pkStr); + console.info('pri key: ' + skStr); } else { console.error('get key pair result fail!'); } @@ -459,36 +463,36 @@ function testDhPriKeySpec() { } export function testAsyKeyGeneratorBySpec() { - console.log(">>>>>>>>>>>>>>>>>>>> testEccAsyKeyGeneratorBySpecSync"); + console.log(">>>>>>>>>>>>>>>>>>>> EccCommonSpec"); testEccCommonSpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testEccPriKeySpec"); + console.log(">>>>>>>>>>>>>>>>>>>> EccPriKeySpec"); testEccPriKeySpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testSm2AsyKeyGeneratorBySpecSync"); - testSm2AsyKeyGeneratorBySpecSync(); - console.log(">>>>>>>>>>>>>>>>>>>> testDsaKeyPairSpec"); + console.log(">>>>>>>>>>>>>>>>>>>> Sm2KeyPairSpec"); + testSm2KeyPairSpec(); + console.log(">>>>>>>>>>>>>>>>>>>> DsaKeyPairSpec"); testDsaKeyPairSpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testDsaPubKeySpec"); + console.log(">>>>>>>>>>>>>>>>>>>> DsaPubKeySpec"); testDsaPubKeySpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testRsaKeyPairSpec"); + console.log(">>>>>>>>>>>>>>>>>>>> RsaKeyPairSpec"); testRsaKeyPairSpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testRsaPubKeySpec"); + console.log(">>>>>>>>>>>>>>>>>>>> RsaPubKeySpec"); testRsaPubKeySpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testX25519Keypair"); + console.log(">>>>>>>>>>>>>>>>>>>> X25519Keypair"); testX25519Keypair(); - console.log(">>>>>>>>>>>>>>>>>>>> testX25519PubKeySpec"); + console.log(">>>>>>>>>>>>>>>>>>>> X25519PubKeySpec"); testX25519PubKeySpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testX25519PriKeySpec"); + console.log(">>>>>>>>>>>>>>>>>>>> X25519PriKeySpec"); testX25519PriKeySpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testEd25519Keypair"); + console.log(">>>>>>>>>>>>>>>>>>>> Ed25519Keypair"); testEd25519Keypair(); - console.log(">>>>>>>>>>>>>>>>>>>> testEd25519PubKeySpec"); + console.log(">>>>>>>>>>>>>>>>>>>> Ed25519PubKeySpec"); testEd25519PubKeySpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testEd25519PriKeySpec"); + console.log(">>>>>>>>>>>>>>>>>>>> Ed25519PriKeySpec"); testEd25519PriKeySpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testDhKeyPairSpec"); + console.log(">>>>>>>>>>>>>>>>>>>> DhKeyPairSpec"); testDhKeyPairSpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testDhPubKeySpec"); + console.log(">>>>>>>>>>>>>>>>>>>> DhPubKeySpec"); testDhPubKeySpec(); - console.log(">>>>>>>>>>>>>>>>>>>> testDhPriKeySpec"); + console.log(">>>>>>>>>>>>>>>>>>>> DhPriKeySpec"); testDhPriKeySpec(); -} \ No newline at end of file +}