From 84f00e95d2676df4b30484eb79f5c8253b4aaeea Mon Sep 17 00:00:00 2001 From: zzh593245631 Date: Wed, 4 Jun 2025 10:45:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E6=B8=85=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E6=8B=86=E5=88=86=E5=A4=A7=E5=87=BD=E6=95=B0=20Signed-off-by:?= =?UTF-8?q?=20zzh=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ib41eef6aa00d91c36e18a7b935370f76952f37c6 --- .../src/native/native_asym_cipher_test.cpp | 148 ++++++++++++------ .../src/native/native_asym_key_test.cpp | 49 ++++-- 2 files changed, 135 insertions(+), 62 deletions(-) diff --git a/test/unittest/src/native/native_asym_cipher_test.cpp b/test/unittest/src/native/native_asym_cipher_test.cpp index f1bced3..b5a113b 100644 --- a/test/unittest/src/native/native_asym_cipher_test.cpp +++ b/test/unittest/src/native/native_asym_cipher_test.cpp @@ -210,6 +210,59 @@ HWTEST_F(NativeAsymCipherTest, NativeAsymCipherTest005, TestSize.Level0) OH_CryptoKeyPair_Destroy(keyPair); } +static OH_Crypto_ErrCode GetSm2CiphertextSpecItem(OH_CryptoSm2CiphertextSpec *sm2CipherSpec, Crypto_DataBlob *c1x, + Crypto_DataBlob *c1y, Crypto_DataBlob *c2, Crypto_DataBlob *c3) +{ + OH_Crypto_ErrCode ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_X, c1x); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_Y, c1y); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C2, c2); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C3, c3); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + return CRYPTO_SUCCESS; +} + +static OH_Crypto_ErrCode SetSm2CiphertextSpecItem(OH_CryptoSm2CiphertextSpec *sm2CipherSpec, Crypto_DataBlob *c1x, + Crypto_DataBlob *c1y, Crypto_DataBlob *c2, Crypto_DataBlob *c3) +{ + OH_Crypto_ErrCode ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_X, c1x); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_Y, c1y); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C2, c2); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C3, c3); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + return CRYPTO_SUCCESS; +} + +static void FreeSm2CiphertextSpecItem(Crypto_DataBlob *c1x, Crypto_DataBlob *c1y, Crypto_DataBlob *c2, + Crypto_DataBlob *c3) +{ + OH_Crypto_FreeDataBlob(c1x); + OH_Crypto_FreeDataBlob(c1y); + OH_Crypto_FreeDataBlob(c2); + OH_Crypto_FreeDataBlob(c3); +} + HWTEST_F(NativeAsymCipherTest, NativeAsymCipherTest006, TestSize.Level0) { OH_CryptoAsymKeyGenerator *keyGen = nullptr; @@ -229,85 +282,82 @@ HWTEST_F(NativeAsymCipherTest, NativeAsymCipherTest006, TestSize.Level0) EXPECT_EQ(ret, CRYPTO_SUCCESS); const char *testData = "Hello, SM2!"; - Crypto_DataBlob in = { - .data = (uint8_t *)testData, - .len = strlen(testData) - }; + Crypto_DataBlob in = {.data = (uint8_t *)testData, .len = strlen(testData)}; - Crypto_DataBlob out = { 0 }; + Crypto_DataBlob out = {0}; ret = OH_CryptoAsymCipher_Final(cipher, &in, &out); EXPECT_EQ(ret, CRYPTO_SUCCESS); ASSERT_NE(out.data, nullptr); ASSERT_GT(out.len, 0); OH_CryptoSm2CiphertextSpec *sm2CipherSpec = nullptr; - ret = OH_CryptoSm2CiphertextSpec_Create(&out, nullptr); - EXPECT_NE(ret, CRYPTO_SUCCESS); ret = OH_CryptoSm2CiphertextSpec_Create(&out, &sm2CipherSpec); + OH_Crypto_FreeDataBlob(&out); EXPECT_EQ(ret, CRYPTO_SUCCESS); ASSERT_NE(sm2CipherSpec, nullptr); - Crypto_DataBlob c1x = { 0 }; - Crypto_DataBlob c1y = { 0 }; - Crypto_DataBlob c2 = { 0 }; - Crypto_DataBlob c3 = { 0 }; - ret = OH_CryptoSm2CiphertextSpec_GetItem(nullptr, CRYPTO_SM2_CIPHERTEXT_C1_X, &c1x); - EXPECT_NE(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, (CryptoSm2CiphertextSpec_item)4, &c1x); - EXPECT_NE(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_X, nullptr); - EXPECT_NE(ret, CRYPTO_SUCCESS); - - ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_X, &c1x); + Crypto_DataBlob c1x = {0}; + Crypto_DataBlob c1y = {0}; + Crypto_DataBlob c2 = {0}; + Crypto_DataBlob c3 = {0}; + ret = GetSm2CiphertextSpecItem(sm2CipherSpec, &c1x, &c1y, &c2, &c3); EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_Y, &c1y); + + OH_CryptoSm2CiphertextSpec_Destroy(sm2CipherSpec); + sm2CipherSpec = nullptr; + ret = OH_CryptoSm2CiphertextSpec_Create(nullptr, &sm2CipherSpec); EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C2, &c2); + ASSERT_NE(sm2CipherSpec, nullptr); + + ret = SetSm2CiphertextSpecItem(sm2CipherSpec, &c1x, &c1y, &c2, &c3); EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C3, &c3); + + Crypto_DataBlob encoded = {0}; + ret = OH_CryptoSm2CiphertextSpec_Encode(sm2CipherSpec, &encoded); EXPECT_EQ(ret, CRYPTO_SUCCESS); + ASSERT_NE(encoded.data, nullptr); + ASSERT_GT(encoded.len, 0); + FreeSm2CiphertextSpecItem(&c1x, &c1y, &c2, &c3); + OH_Crypto_FreeDataBlob(&encoded); OH_CryptoSm2CiphertextSpec_Destroy(sm2CipherSpec); - sm2CipherSpec = nullptr; + OH_CryptoAsymCipher_Destroy(cipher); + OH_CryptoAsymKeyGenerator_Destroy(keyGen); + OH_CryptoKeyPair_Destroy(keyPair); +} + +HWTEST_F(NativeAsymCipherTest, NativeAsymCipherTest007, TestSize.Level0) +{ + Crypto_DataBlob out = {0}; + OH_Crypto_ErrCode ret = OH_CryptoSm2CiphertextSpec_Create(&out, nullptr); + EXPECT_NE(ret, CRYPTO_SUCCESS); + OH_CryptoSm2CiphertextSpec *sm2CipherSpec = nullptr; ret = OH_CryptoSm2CiphertextSpec_Create(nullptr, &sm2CipherSpec); EXPECT_EQ(ret, CRYPTO_SUCCESS); ASSERT_NE(sm2CipherSpec, nullptr); - ret = OH_CryptoSm2CiphertextSpec_SetItem(nullptr, CRYPTO_SM2_CIPHERTEXT_C1_X, &c1x); + Crypto_DataBlob c1x = {0}; + ret = OH_CryptoSm2CiphertextSpec_GetItem(nullptr, CRYPTO_SM2_CIPHERTEXT_C1_X, &c1x); EXPECT_NE(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, (CryptoSm2CiphertextSpec_item)4, &c1x); + ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, (CryptoSm2CiphertextSpec_item)4, &c1x); EXPECT_NE(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_X, nullptr); + ret = OH_CryptoSm2CiphertextSpec_GetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_X, nullptr); EXPECT_NE(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_X, &c1x); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C1_Y, &c1y); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C2, &c2); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C3, &c3); - EXPECT_EQ(ret, CRYPTO_SUCCESS); + uint8_t cipherText[] = {0x01, 0x02, 0x03}; + Crypto_DataBlob cipherTextData = {.data = cipherText, .len = sizeof(cipherText)}; + ret = OH_CryptoSm2CiphertextSpec_SetItem(nullptr, CRYPTO_SM2_CIPHERTEXT_C2, &cipherTextData); + EXPECT_NE(ret, CRYPTO_SUCCESS); + ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, (CryptoSm2CiphertextSpec_item)4, &cipherTextData); + EXPECT_NE(ret, CRYPTO_SUCCESS); + ret = OH_CryptoSm2CiphertextSpec_SetItem(sm2CipherSpec, CRYPTO_SM2_CIPHERTEXT_C2, nullptr); + EXPECT_NE(ret, CRYPTO_SUCCESS); - Crypto_DataBlob encoded = { 0 }; + Crypto_DataBlob encoded = {0}; ret = OH_CryptoSm2CiphertextSpec_Encode(nullptr, &encoded); EXPECT_NE(ret, CRYPTO_SUCCESS); ret = OH_CryptoSm2CiphertextSpec_Encode(sm2CipherSpec, nullptr); EXPECT_NE(ret, CRYPTO_SUCCESS); - ret = OH_CryptoSm2CiphertextSpec_Encode(sm2CipherSpec, &encoded); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ASSERT_NE(encoded.data, nullptr); - ASSERT_GT(encoded.len, 0); - - OH_Crypto_FreeDataBlob(&out); - OH_Crypto_FreeDataBlob(&c1x); - OH_Crypto_FreeDataBlob(&c1y); - OH_Crypto_FreeDataBlob(&c2); - OH_Crypto_FreeDataBlob(&c3); - OH_Crypto_FreeDataBlob(&encoded); OH_CryptoSm2CiphertextSpec_Destroy(sm2CipherSpec); - OH_CryptoAsymCipher_Destroy(cipher); - OH_CryptoAsymKeyGenerator_Destroy(keyGen); - OH_CryptoKeyPair_Destroy(keyPair); } \ No newline at end of file diff --git a/test/unittest/src/native/native_asym_key_test.cpp b/test/unittest/src/native/native_asym_key_test.cpp index 584e8e6..faba82d 100644 --- a/test/unittest/src/native/native_asym_key_test.cpp +++ b/test/unittest/src/native/native_asym_key_test.cpp @@ -205,6 +205,41 @@ static OH_Crypto_ErrCode GetEccKeyParams(OH_CryptoKeyPair *keyCtx, Crypto_DataBl return ret; } +static OH_Crypto_ErrCode GetEccKeyParamsByCommonSpec(OH_CryptoAsymKeySpec *ecCommonSpec, Crypto_DataBlob *p, + Crypto_DataBlob *a, Crypto_DataBlob *b, Crypto_DataBlob *gx, + Crypto_DataBlob *gy, Crypto_DataBlob *n, Crypto_DataBlob *h) +{ + OH_Crypto_ErrCode ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_FP_P_DATABLOB, p); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_A_DATABLOB, a); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_B_DATABLOB, b); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_G_X_DATABLOB, gx); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_G_Y_DATABLOB, gy); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_N_DATABLOB, n); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_H_INT, h); + if (ret != CRYPTO_SUCCESS) { + return ret; + } + return CRYPTO_SUCCESS; +} + static void FreeDsaKeyParams(Crypto_DataBlob *pubKeyData, Crypto_DataBlob *privKeyData, Crypto_DataBlob *pData, Crypto_DataBlob *qData, Crypto_DataBlob *gData) { @@ -1226,19 +1261,7 @@ HWTEST_F(NativeAsymKeyTest, NativeAsymKeyTest026, TestSize.Level0) Crypto_DataBlob gy = {0}; Crypto_DataBlob n = {0}; Crypto_DataBlob h = {0}; - ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_FP_P_DATABLOB, &p); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_A_DATABLOB, &a); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_B_DATABLOB, &b); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_G_X_DATABLOB, &gx); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_G_Y_DATABLOB, &gy); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_N_DATABLOB, &n); - EXPECT_EQ(ret, CRYPTO_SUCCESS); - ret = OH_CryptoAsymKeySpec_GetParam(ecCommonSpec, CRYPTO_ECC_H_INT, &h); + ret = GetEccKeyParamsByCommonSpec(ecCommonSpec, &p, &a, &b, &gx, &gy, &n, &h); EXPECT_EQ(ret, CRYPTO_SUCCESS); OH_CryptoAsymKeySpec *keySpec = nullptr; -- Gitee