1 /*
2  * Copyright (C) 2022-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *    http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 #include "cstring"
18 #include "securec.h"
19 #include "asy_key_generator.h"
20 #include "blob.h"
21 #include "detailed_rsa_key_params.h"
22 #include "memory.h"
23 #include "openssl_common.h"
24 #include "signature.h"
25 
26 using namespace std;
27 using namespace testing::ext;
28 
29 namespace {
30 class CryptoRsaSignTest : public testing::Test {
31 public:
32     static void SetUpTestCase();
33     static void TearDownTestCase();
34     void SetUp();
35     void TearDown();
36 };
37 
SetUp()38 void CryptoRsaSignTest::SetUp() {}
TearDown()39 void CryptoRsaSignTest::TearDown() {}
SetUpTestCase()40 void CryptoRsaSignTest::SetUpTestCase() {}
TearDownTestCase()41 void CryptoRsaSignTest::TearDownTestCase() {}
42 
43 namespace {
44 constexpr uint32_t RSA_2048_N_BYTE_SIZE = 256;
45 constexpr uint32_t RSA_2048_D_BYTE_SIZE = 256;
46 constexpr uint32_t RSA_2048_E_BYTE_SIZE = 3;
47 
48 constexpr unsigned char CORRECT_N[] =
49     "\x92\x60\xd0\x75\x0a\xe1\x17\xee\xe5\x5c\x3f\x3d\xea\xba\x74\x91"
50     "\x75\x21\xa2\x62\xee\x76\x00\x7c\xdf\x8a\x56\x75\x5a\xd7\x3a\x15"
51     "\x98\xa1\x40\x84\x10\xa0\x14\x34\xc3\xf5\xbc\x54\xa8\x8b\x57\xfa"
52     "\x19\xfc\x43\x28\xda\xea\x07\x50\xa4\xc4\x4e\x88\xcf\xf3\xb2\x38"
53     "\x26\x21\xb8\x0f\x67\x04\x64\x43\x3e\x43\x36\xe6\xd0\x03\xe8\xcd"
54     "\x65\xbf\xf2\x11\xda\x14\x4b\x88\x29\x1c\x22\x59\xa0\x0a\x72\xb7"
55     "\x11\xc1\x16\xef\x76\x86\xe8\xfe\xe3\x4e\x4d\x93\x3c\x86\x81\x87"
56     "\xbd\xc2\x6f\x7b\xe0\x71\x49\x3c\x86\xf7\xa5\x94\x1c\x35\x10\x80"
57     "\x6a\xd6\x7b\x0f\x94\xd8\x8f\x5c\xf5\xc0\x2a\x09\x28\x21\xd8\x62"
58     "\x6e\x89\x32\xb6\x5c\x5b\xd8\xc9\x20\x49\xc2\x10\x93\x2b\x7a\xfa"
59     "\x7a\xc5\x9c\x0e\x88\x6a\xe5\xc1\xed\xb0\x0d\x8c\xe2\xc5\x76\x33"
60     "\xdb\x26\xbd\x66\x39\xbf\xf7\x3c\xee\x82\xbe\x92\x75\xc4\x02\xb4"
61     "\xcf\x2a\x43\x88\xda\x8c\xf8\xc6\x4e\xef\xe1\xc5\xa0\xf5\xab\x80"
62     "\x57\xc3\x9f\xa5\xc0\x58\x9c\x3e\x25\x3f\x09\x60\x33\x23\x00\xf9"
63     "\x4b\xea\x44\x87\x7b\x58\x8e\x1e\xdb\xde\x97\xcf\x23\x60\x72\x7a"
64     "\x09\xb7\x75\x26\x2d\x7e\xe5\x52\xb3\x31\x9b\x92\x66\xf0\x5a\x25";
65 
66 constexpr unsigned char CORRECT_E[] = "\x01\x00\x01";
67 
68 constexpr unsigned char CORRECT_D[] =
69     "\x6a\x7d\xf2\xca\x63\xea\xd4\xdd\xa1\x91\xd6\x14\xb6\xb3\x85\xe0"
70     "\xd9\x05\x6a\x3d\x6d\x5c\xfe\x07\xdb\x1d\xaa\xbe\xe0\x22\xdb\x08"
71     "\x21\x2d\x97\x61\x3d\x33\x28\xe0\x26\x7c\x9d\xd2\x3d\x78\x7a\xbd"
72     "\xe2\xaf\xcb\x30\x6a\xeb\x7d\xfc\xe6\x92\x46\xcc\x73\xf5\xc8\x7f"
73     "\xdf\x06\x03\x01\x79\xa2\x11\x4b\x76\x7d\xb1\xf0\x83\xff\x84\x1c"
74     "\x02\x5d\x7d\xc0\x0c\xd8\x24\x35\xb9\xa9\x0f\x69\x53\x69\xe9\x4d"
75     "\xf2\x3d\x2c\xe4\x58\xbc\x3b\x32\x83\xad\x8b\xba\x2b\x8f\xa1\xba"
76     "\x62\xe2\xdc\xe9\xac\xcf\xf3\x79\x9a\xae\x7c\x84\x00\x16\xf3\xba"
77     "\x8e\x00\x48\xc0\xb6\xcc\x43\x39\xaf\x71\x61\x00\x3a\x5b\xeb\x86"
78     "\x4a\x01\x64\xb2\xc1\xc9\x23\x7b\x64\xbc\x87\x55\x69\x94\x35\x1b"
79     "\x27\x50\x6c\x33\xd4\xbc\xdf\xce\x0f\x9c\x49\x1a\x7d\x6b\x06\x28"
80     "\xc7\xc8\x52\xbe\x4f\x0a\x9c\x31\x32\xb2\xed\x3a\x2c\x88\x81\xe9"
81     "\xaa\xb0\x7e\x20\xe1\x7d\xeb\x07\x46\x91\xbe\x67\x77\x76\xa7\x8b"
82     "\x5c\x50\x2e\x05\xd9\xbd\xde\x72\x12\x6b\x37\x38\x69\x5e\x2d\xd1"
83     "\xa0\xa9\x8a\x14\x24\x7c\x65\xd8\xa7\xee\x79\x43\x2a\x09\x2c\xb0"
84     "\x72\x1a\x12\xdf\x79\x8e\x44\xf7\xcf\xce\x0c\x49\x81\x47\xa9\xb1";
85 
86 const char *g_rsaAlgName = "RSA";
87 // check pss salt len in PSS padding
88 const char *g_sha256MdName = "SHA256";
89 const char *g_mgf1Name = "MGF1";
90 constexpr int32_t PSS_INVLAID_SALTLEN = -5;
91 constexpr int32_t PSS_NORMAL_SALTLEN = 32;
92 constexpr int32_t PSS_TRAILER_FIELD_LEN = 1;
93 }
94 
RemoveLastChar(const unsigned char * str,unsigned char * dest,uint32_t destLen)95 static void RemoveLastChar(const unsigned char *str, unsigned char *dest, uint32_t destLen)
96 {
97     for (size_t i = 0; i < destLen; i++) {
98         dest[i] = str[i];
99     }
100     return;
101 }
102 
EndianSwap(unsigned char * pData,int startIndex,int length)103 static void EndianSwap(unsigned char *pData, int startIndex, int length)
104 {
105     int cnt = length / 2;
106     int start = startIndex;
107     int end  = startIndex + length - 1;
108     unsigned char tmp;
109     for (int i = 0; i < cnt; i++) {
110         tmp = pData[start + i];
111         pData[start + i] = pData[end - i];
112         pData[end - i] = tmp;
113     }
114 }
115 
116 // 2048 defined the length of byte array
GenerateRsa2048CorrectCommonKeySpec(unsigned char * dataN,HcfRsaCommParamsSpec * returnSpec)117 static void GenerateRsa2048CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec)
118 {
119     RemoveLastChar(CORRECT_N, dataN, RSA_2048_N_BYTE_SIZE);
120     if (!IsBigEndian()) {
121         // the device is not big endian
122         EndianSwap(dataN, 0, RSA_2048_N_BYTE_SIZE);
123     }
124     returnSpec->n.data = dataN;
125     returnSpec->n.len = RSA_2048_N_BYTE_SIZE;
126     returnSpec->base.algName = const_cast<char *>(g_rsaAlgName);
127     returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC;
128     return;
129 }
130 
GenerateRsa2048CorrectPubKeySpec(unsigned char * dataN,unsigned char * dataE,HcfRsaPubKeyParamsSpec * returnPubSpec)131 static void GenerateRsa2048CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE,
132     HcfRsaPubKeyParamsSpec *returnPubSpec)
133 {
134     HcfRsaCommParamsSpec rsaCommSpec = {};
135     GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec);
136     RemoveLastChar(CORRECT_E, dataE, RSA_2048_E_BYTE_SIZE);
137     if (!IsBigEndian()) {
138         // the device is not big endian
139         EndianSwap(dataE, 0, RSA_2048_E_BYTE_SIZE);
140     }
141     returnPubSpec->pk.data = dataE;
142     returnPubSpec->pk.len = RSA_2048_E_BYTE_SIZE;
143     returnPubSpec->base = rsaCommSpec;
144     returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC;
145 }
146 
GenerateRsa2048CorrectKeyPairSpec(unsigned char * dataN,unsigned char * dataE,unsigned char * dataD,HcfRsaKeyPairParamsSpec * returnPairSpec)147 static void GenerateRsa2048CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD,
148     HcfRsaKeyPairParamsSpec *returnPairSpec)
149 {
150     HcfRsaCommParamsSpec rsaCommSpec = {};
151     GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec);
152     RemoveLastChar(CORRECT_E, dataE, RSA_2048_E_BYTE_SIZE);
153     RemoveLastChar(CORRECT_D, dataD, RSA_2048_D_BYTE_SIZE);
154     if (!IsBigEndian()) {
155         // the device is not big endian
156         EndianSwap(dataE, 0, RSA_2048_E_BYTE_SIZE);
157         EndianSwap(dataD, 0, RSA_2048_D_BYTE_SIZE);
158     }
159     returnPairSpec->pk.data = dataE;
160     returnPairSpec->pk.len = RSA_2048_E_BYTE_SIZE;
161     returnPairSpec->sk.data = dataD;
162     returnPairSpec->sk.len = RSA_2048_D_BYTE_SIZE;
163     returnPairSpec->base = rsaCommSpec;
164     returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC;
165 }
166 // HcfSignCreate correct_case
167 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest100, TestSize.Level0)
168 {
169     HcfResult res = HCF_SUCCESS;
170     HcfSign *sign = nullptr;
171     res = HcfSignCreate("RSA1024|PKCS1|MD5", &sign);
172     EXPECT_EQ(res, HCF_SUCCESS);
173     EXPECT_NE(sign, nullptr);
174     EXPECT_NE(sign->base.getClass(), nullptr);
175     EXPECT_NE(sign->base.destroy, nullptr);
176     EXPECT_NE(sign->init, nullptr);
177     EXPECT_NE(sign->update, nullptr);
178     EXPECT_NE(sign->sign, nullptr);
179     HcfObjDestroy(sign);
180 }
181 
182 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest110, TestSize.Level0)
183 {
184     HcfResult res = HCF_SUCCESS;
185     HcfSign *sign = nullptr;
186     res = HcfSignCreate("RSA1024|PKCS1|SHA1", &sign);
187     EXPECT_EQ(res, HCF_SUCCESS);
188     EXPECT_NE(sign, nullptr);
189     EXPECT_NE(sign->base.getClass(), nullptr);
190     EXPECT_NE(sign->base.destroy, nullptr);
191     EXPECT_NE(sign->init, nullptr);
192     EXPECT_NE(sign->update, nullptr);
193     EXPECT_NE(sign->sign, nullptr);
194     HcfObjDestroy(sign);
195 }
196 
197 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest120, TestSize.Level0)
198 {
199     HcfResult res = HCF_SUCCESS;
200     HcfSign *sign = nullptr;
201     res = HcfSignCreate("RSA1024|PKCS1|SHA256", &sign);
202     EXPECT_EQ(res, HCF_SUCCESS);
203     EXPECT_NE(sign, nullptr);
204     EXPECT_NE(sign->base.getClass(), nullptr);
205     EXPECT_NE(sign->base.destroy, nullptr);
206     EXPECT_NE(sign->init, nullptr);
207     EXPECT_NE(sign->update, nullptr);
208     EXPECT_NE(sign->sign, nullptr);
209     HcfObjDestroy(sign);
210 }
211 
212 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest130, TestSize.Level0)
213 {
214     HcfResult res = HCF_SUCCESS;
215     HcfSign *sign = nullptr;
216     res = HcfSignCreate("RSA1024|PKCS1|SHA512", &sign);
217     EXPECT_EQ(res, HCF_SUCCESS);
218     EXPECT_NE(sign, nullptr);
219     EXPECT_NE(sign->base.getClass(), nullptr);
220     EXPECT_NE(sign->base.destroy, nullptr);
221     EXPECT_NE(sign->init, nullptr);
222     EXPECT_NE(sign->update, nullptr);
223     EXPECT_NE(sign->sign, nullptr);
224     HcfObjDestroy(sign);
225 }
226 
227 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest140, TestSize.Level0)
228 {
229     HcfResult res = HCF_SUCCESS;
230     HcfSign *sign = nullptr;
231     res = HcfSignCreate("RSA1024|PSS|SHA1|MGF1_SHA1", &sign);
232     EXPECT_EQ(res, HCF_SUCCESS);
233     EXPECT_NE(sign, nullptr);
234     EXPECT_NE(sign->base.getClass(), nullptr);
235     EXPECT_NE(sign->base.destroy, nullptr);
236     EXPECT_NE(sign->init, nullptr);
237     EXPECT_NE(sign->update, nullptr);
238     EXPECT_NE(sign->sign, nullptr);
239     HcfObjDestroy(sign);
240 }
241 
242 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest150, TestSize.Level0)
243 {
244     HcfResult res = HCF_SUCCESS;
245     HcfSign *sign = nullptr;
246     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA512", &sign);
247     EXPECT_EQ(res, HCF_SUCCESS);
248     EXPECT_NE(sign, nullptr);
249     EXPECT_NE(sign->base.getClass(), nullptr);
250     EXPECT_NE(sign->base.destroy, nullptr);
251     EXPECT_NE(sign->init, nullptr);
252     EXPECT_NE(sign->update, nullptr);
253     EXPECT_NE(sign->sign, nullptr);
254     HcfObjDestroy(sign);
255 }
256 
257 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest160, TestSize.Level0)
258 {
259     HcfResult res = HCF_SUCCESS;
260     HcfSign *sign = nullptr;
261     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
262     EXPECT_EQ(res, HCF_SUCCESS);
263     EXPECT_NE(sign, nullptr);
264     EXPECT_NE(sign->base.getClass(), nullptr);
265     EXPECT_NE(sign->base.destroy, nullptr);
266     EXPECT_NE(sign->init, nullptr);
267     EXPECT_NE(sign->update, nullptr);
268     EXPECT_NE(sign->sign, nullptr);
269     HcfObjDestroy(sign);
270 }
271 
272 // HcfSignCreate Incorrect case
273 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest200, TestSize.Level0)
274 {
275     HcfResult res = HCF_SUCCESS;
276     HcfSign *sign = nullptr;
277     res = HcfSignCreate("RSA1024|PSSaa|SHA256|MGF1_SHA256", &sign);
278     EXPECT_NE(res, HCF_SUCCESS);
279     EXPECT_EQ(sign, nullptr);
280 }
281 
282 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest210, TestSize.Level0)
283 {
284     HcfResult res = HCF_SUCCESS;
285     HcfSign *sign = nullptr;
286     res = HcfSignCreate(nullptr, &sign);
287     EXPECT_NE(res, HCF_SUCCESS);
288     EXPECT_EQ(sign, nullptr);
289 }
290 
291 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest220, TestSize.Level0)
292 {
293     HcfResult res = HCF_SUCCESS;
294     HcfSign *sign = nullptr;
295     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256|123123123123123123212312312321"
296         "123123123123213asdasdasdasdasdasdasdasdasdasdasdasdasdsasdasds12", &sign);
297     EXPECT_NE(res, HCF_SUCCESS);
298     EXPECT_EQ(sign, nullptr);
299 }
300 
301 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest230, TestSize.Level0)
302 {
303     HcfResult res = HCF_SUCCESS;
304     HcfSign *sign = nullptr;
305     res = HcfSignCreate("RSA1024|PSS|SHA256aa|MGF1_SHA256", &sign);
306     EXPECT_NE(res, HCF_SUCCESS);
307     EXPECT_EQ(sign, nullptr);
308 }
309 
310 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest240, TestSize.Level0)
311 {
312     HcfResult res = HCF_SUCCESS;
313     HcfSign *sign = nullptr;
314     res = HcfSignCreate("RSA1024|PSS|SHA256aa|MGF1_SHA256asdasdas", &sign);
315     EXPECT_NE(res, HCF_SUCCESS);
316     EXPECT_EQ(sign, nullptr);
317 }
318 
319 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest250, TestSize.Level0)
320 {
321     HcfResult res = HCF_SUCCESS;
322     HcfSign *sign = nullptr;
323     res = HcfSignCreate("RSA1024|PSS|SHA256aa|MGF1_SHA256", &sign);
324     EXPECT_NE(res, HCF_SUCCESS);
325     EXPECT_EQ(sign, nullptr);
326 }
327 
328 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest260, TestSize.Level0)
329 {
330     HcfResult res = HCF_SUCCESS;
331     res = HcfSignCreate("RSA1024|PSS|SHA256aa|MGF1_SHA256", nullptr);
332     EXPECT_NE(res, HCF_SUCCESS);
333 }
334 
335 // incorrect case : init signer with nullptr private key.
336 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest270, TestSize.Level0)
337 {
338     HcfResult res = HCF_SUCCESS;
339     HcfSign *sign = nullptr;
340     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
341     EXPECT_EQ(res, HCF_SUCCESS);
342 
343     res = sign->init(sign, nullptr, nullptr);
344     EXPECT_NE(res, HCF_SUCCESS);
345 
346     HcfObjDestroy(sign);
347 }
348 
349 // incorrect case : init signer with public Key.
350 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest280, TestSize.Level0)
351 {
352     HcfResult res = HCF_SUCCESS;
353     HcfAsyKeyGenerator *generator = nullptr;
354     res = HcfAsyKeyGeneratorCreate("RSA768|PRIMES_2", &generator);
355     HcfKeyPair *keyPair = nullptr;
356     res = generator->generateKeyPair(generator, nullptr, &keyPair);
357     EXPECT_EQ(res, HCF_SUCCESS);
358 
359     HcfSign *sign = nullptr;
360     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
361     EXPECT_EQ(res, HCF_SUCCESS);
362 
363     HcfPubKey *pubKey = keyPair->pubKey;
364 
365     res = sign->init(sign, nullptr, (HcfPriKey *)pubKey);
366     EXPECT_NE(res, HCF_SUCCESS);
367 
368     HcfObjDestroy(sign);
369     HcfObjDestroy(generator);
370     HcfObjDestroy(keyPair);
371 }
372 
373 // incorrect case : use update function before intialize.
374 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest281, TestSize.Level0)
375 {
376     HcfResult res = HCF_SUCCESS;
377     HcfSign *sign = nullptr;
378     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
379     EXPECT_EQ(res, HCF_SUCCESS);
380 
381     uint8_t plan[] = "this is rsa verify test.";
382     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
383     res = sign->update(sign, &input);
384     EXPECT_NE(res, HCF_SUCCESS);
385 
386     HcfObjDestroy(sign);
387 }
388 
389 // incorrect case : use sign function before intialize.
390 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest290, TestSize.Level0)
391 {
392     HcfResult res = HCF_SUCCESS;
393 
394     HcfSign *sign = nullptr;
395     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
396     EXPECT_EQ(res, HCF_SUCCESS);
397 
398     uint8_t plan[] = "this is rsa verify test.";
399     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
400     HcfBlob signatureData = {.data = nullptr, .len = 0};
401     res = sign->sign(sign, &input, &signatureData);
402     EXPECT_NE(res, HCF_SUCCESS);
403 
404     HcfObjDestroy(sign);
405 }
406 
407 // incorrect case : init with other class (not cipher).
408 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest291, TestSize.Level0)
409 {
410     HcfResult res = HCF_SUCCESS;
411     HcfAsyKeyGenerator *generator = nullptr;
412     res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
413     HcfKeyPair *keyPair = nullptr;
414     res = generator->generateKeyPair(generator, nullptr, &keyPair);
415     EXPECT_EQ(res, HCF_SUCCESS);
416 
417     HcfSign *sign = nullptr;
418     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
419     EXPECT_EQ(res, HCF_SUCCESS);
420 
421     res = sign->init((HcfSign *)generator, nullptr, keyPair->priKey);
422     EXPECT_NE(res, HCF_SUCCESS);
423 
424     HcfObjDestroy(sign);
425     HcfObjDestroy(generator);
426     HcfObjDestroy(keyPair);
427 }
428 
429 // incorrect case : update with other class (not cipher).
430 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest292, TestSize.Level0)
431 {
432     HcfResult res = HCF_SUCCESS;
433     HcfAsyKeyGenerator *generator = nullptr;
434     res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
435     HcfKeyPair *keyPair = nullptr;
436     res = generator->generateKeyPair(generator, nullptr, &keyPair);
437     EXPECT_EQ(res, HCF_SUCCESS);
438 
439     HcfSign *sign = nullptr;
440     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
441     EXPECT_EQ(res, HCF_SUCCESS);
442 
443     uint8_t plan[] = "this is rsa verify test.";
444     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
445     res = sign->update((HcfSign *)generator, &input);
446     EXPECT_NE(res, HCF_SUCCESS);
447 
448     HcfObjDestroy(sign);
449     HcfObjDestroy(generator);
450     HcfObjDestroy(keyPair);
451 }
452 
453 // incorrect case : sign with other class (not cipher).
454 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest293, TestSize.Level0)
455 {
456     HcfResult res = HCF_SUCCESS;
457     HcfAsyKeyGenerator *generator = nullptr;
458     res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
459 
460     HcfSign *sign = nullptr;
461     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
462     EXPECT_EQ(res, HCF_SUCCESS);
463 
464     HcfBlob input;
465     res = sign->sign((HcfSign *)generator, nullptr, &input);
466     EXPECT_NE(res, HCF_SUCCESS);
467 
468     HcfObjDestroy(sign);
469     HcfObjDestroy(generator);
470 }
471 
472 // incorrect case : update with nullptr inputBlob.
473 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest294, TestSize.Level0)
474 {
475     HcfResult res = HCF_SUCCESS;
476     HcfAsyKeyGenerator *generator = nullptr;
477     res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
478 
479     HcfSign *sign = nullptr;
480     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
481     EXPECT_EQ(res, HCF_SUCCESS);
482 
483     res = sign->update(sign, nullptr);
484     EXPECT_NE(res, HCF_SUCCESS);
485 
486     HcfObjDestroy(sign);
487     HcfObjDestroy(generator);
488 }
489 
490 // incorrect case : sign with nullptr outputBlob.
491 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest295, TestSize.Level0)
492 {
493     HcfResult res = HCF_SUCCESS;
494     HcfAsyKeyGenerator *generator = nullptr;
495     res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
496 
497     HcfSign *sign = nullptr;
498     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
499     EXPECT_EQ(res, HCF_SUCCESS);
500 
501     res = sign->sign(sign, nullptr, nullptr);
502     EXPECT_NE(res, HCF_SUCCESS);
503 
504     HcfObjDestroy(sign);
505     HcfObjDestroy(generator);
506 }
507 
508 
509 // correct case: sign and update
510 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest300, TestSize.Level0)
511 {
512     HcfResult res = HCF_SUCCESS;
513     uint8_t plan[] = "this is rsa verify test.";
514     HcfAsyKeyGenerator *generator = nullptr;
515     res = HcfAsyKeyGeneratorCreate("RSA768|PRIMES_2", &generator);
516     HcfKeyPair *keyPair = nullptr;
517     res = generator->generateKeyPair(generator, nullptr, &keyPair);
518     EXPECT_EQ(res, HCF_SUCCESS);
519 
520     HcfPriKey *prikey = keyPair->priKey;
521     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
522     HcfBlob verifyData = {.data = nullptr, .len = 0};
523     HcfSign *sign = nullptr;
524     res = HcfSignCreate("RSA768|PKCS1|SHA1", &sign);
525     EXPECT_EQ(res, HCF_SUCCESS);
526     res = sign->init(sign, nullptr, prikey);
527     EXPECT_EQ(res, HCF_SUCCESS);
528     res = sign->sign(sign, &input, &verifyData);
529 
530     HcfObjDestroy(sign);
531     HcfFree(verifyData.data);
532     HcfObjDestroy(keyPair);
533     HcfObjDestroy(generator);
534 }
535 
536 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest310, TestSize.Level0)
537 {
538     uint8_t plan[] = "this is rsa verify test.";
539     HcfAsyKeyGenerator *generator = nullptr;
540     HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
541     HcfKeyPair *keyPair = nullptr;
542     res = generator->generateKeyPair(generator, nullptr, &keyPair);
543     EXPECT_EQ(res, HCF_SUCCESS);
544 
545     HcfPriKey *prikey = keyPair->priKey;
546     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
547     HcfBlob verifyData = {.data = nullptr, .len = 0};
548     HcfSign *sign = nullptr;
549     res = HcfSignCreate("RSA1024|PKCS1|SHA256", &sign);
550     EXPECT_EQ(res, HCF_SUCCESS);
551     res = sign->init(sign, nullptr, prikey);
552     EXPECT_EQ(res, HCF_SUCCESS);
553     res = sign->sign(sign, &input, &verifyData);
554 
555     HcfObjDestroy(sign);
556     HcfFree(verifyData.data);
557     HcfObjDestroy(keyPair);
558     HcfObjDestroy(generator);
559 }
560 
561 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest320, TestSize.Level0)
562 {
563     uint8_t plan[] = "this is rsa verify test.";
564     HcfAsyKeyGenerator *generator = nullptr;
565     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
566     HcfKeyPair *keyPair = nullptr;
567     res = generator->generateKeyPair(generator, nullptr, &keyPair);
568     EXPECT_EQ(res, HCF_SUCCESS);
569 
570     HcfPriKey *prikey = keyPair->priKey;
571     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
572     HcfBlob verifyData = {.data = nullptr, .len = 0};
573     HcfSign *sign = nullptr;
574     res = HcfSignCreate("RSA2048|PKCS1|SHA256", &sign);
575     EXPECT_EQ(res, HCF_SUCCESS);
576     res = sign->init(sign, nullptr, prikey);
577     EXPECT_EQ(res, HCF_SUCCESS);
578     res = sign->sign(sign, &input, &verifyData);
579 
580     HcfObjDestroy(sign);
581     HcfFree(verifyData.data);
582     HcfObjDestroy(keyPair);
583     HcfObjDestroy(generator);
584 }
585 
586 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest330, TestSize.Level0)
587 {
588     uint8_t plan[] = "this is rsa verify test.";
589     HcfAsyKeyGenerator *generator = nullptr;
590     HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
591     HcfKeyPair *keyPair = nullptr;
592     res = generator->generateKeyPair(generator, nullptr, &keyPair);
593     EXPECT_EQ(res, HCF_SUCCESS);
594 
595     HcfPriKey *prikey = keyPair->priKey;
596     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
597     HcfBlob verifyData = {.data = nullptr, .len = 0};
598     HcfSign *sign = nullptr;
599     res = HcfSignCreate("RSA4096|PKCS1|SHA256", &sign);
600     EXPECT_EQ(res, HCF_SUCCESS);
601     res = sign->init(sign, nullptr, prikey);
602     EXPECT_EQ(res, HCF_SUCCESS);
603     res = sign->sign(sign, &input, &verifyData);
604 
605     HcfObjDestroy(sign);
606     HcfFree(verifyData.data);
607     HcfObjDestroy(keyPair);
608     HcfObjDestroy(generator);
609 }
610 
611 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest340, TestSize.Level0)
612 {
613     uint8_t plan[] = "this is rsa verify test.";
614     HcfAsyKeyGenerator *generator = nullptr;
615     HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
616     HcfKeyPair *keyPair = nullptr;
617     res = generator->generateKeyPair(generator, nullptr, &keyPair);
618     EXPECT_EQ(res, HCF_SUCCESS);
619 
620     HcfPriKey *prikey = keyPair->priKey;
621     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
622     HcfBlob verifyData = {.data = nullptr, .len = 0};
623     HcfSign *sign = nullptr;
624     res = HcfSignCreate("RSA4096|PKCS1|SHA512", &sign);
625     EXPECT_EQ(res, HCF_SUCCESS);
626     res = sign->init(sign, nullptr, prikey);
627     EXPECT_EQ(res, HCF_SUCCESS);
628     res = sign->sign(sign, &input, &verifyData);
629 
630     HcfObjDestroy(sign);
631     HcfFree(verifyData.data);
632     HcfObjDestroy(keyPair);
633     HcfObjDestroy(generator);
634 }
635 
636 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest350, TestSize.Level0)
637 {
638     uint8_t plan[] = "this is rsa verify test.";
639     HcfAsyKeyGenerator *generator = nullptr;
640     HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
641     HcfKeyPair *keyPair = nullptr;
642     res = generator->generateKeyPair(generator, nullptr, &keyPair);
643     EXPECT_EQ(res, HCF_SUCCESS);
644 
645     HcfPriKey *prikey = keyPair->priKey;
646     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
647     HcfBlob verifyData = {.data = nullptr, .len = 0};
648     HcfSign *sign = nullptr;
649     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
650     EXPECT_EQ(res, HCF_SUCCESS);
651     res = sign->init(sign, nullptr, prikey);
652     EXPECT_EQ(res, HCF_SUCCESS);
653     res = sign->sign(sign, &input, &verifyData);
654 
655     HcfObjDestroy(sign);
656     HcfFree(verifyData.data);
657     HcfObjDestroy(keyPair);
658     HcfObjDestroy(generator);
659 }
660 
661 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest360, TestSize.Level0)
662 {
663     uint8_t plan[] = "this is rsa verify test.";
664     HcfAsyKeyGenerator *generator = nullptr;
665     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
666     HcfKeyPair *keyPair = nullptr;
667     res = generator->generateKeyPair(generator, nullptr, &keyPair);
668     EXPECT_EQ(res, HCF_SUCCESS);
669 
670     HcfPriKey *prikey = keyPair->priKey;
671     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
672     HcfBlob verifyData = {.data = nullptr, .len = 0};
673     HcfSign *sign = nullptr;
674     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
675     EXPECT_EQ(res, HCF_SUCCESS);
676     res = sign->init(sign, nullptr, prikey);
677     EXPECT_EQ(res, HCF_SUCCESS);
678     res = sign->sign(sign, &input, &verifyData);
679 
680     HcfObjDestroy(sign);
681     HcfFree(verifyData.data);
682     HcfObjDestroy(keyPair);
683     HcfObjDestroy(generator);
684 }
685 
686 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest370, TestSize.Level0)
687 {
688     uint8_t plan[] = "this is rsa verify test.";
689     HcfAsyKeyGenerator *generator = nullptr;
690     HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072|PRIMES_2", &generator);
691     HcfKeyPair *keyPair = nullptr;
692     res = generator->generateKeyPair(generator, nullptr, &keyPair);
693     EXPECT_EQ(res, HCF_SUCCESS);
694 
695     HcfPriKey *prikey = keyPair->priKey;
696     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
697     HcfBlob verifyData = {.data = nullptr, .len = 0};
698     HcfSign *sign = nullptr;
699     res = HcfSignCreate("RSA3072|PSS|SHA256|MGF1_SHA256", &sign);
700     EXPECT_EQ(res, HCF_SUCCESS);
701     res = sign->init(sign, nullptr, prikey);
702     EXPECT_EQ(res, HCF_SUCCESS);
703     res = sign->sign(sign, &input, &verifyData);
704 
705     HcfObjDestroy(sign);
706     HcfFree(verifyData.data);
707     HcfObjDestroy(keyPair);
708     HcfObjDestroy(generator);
709 }
710 
711 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest380, TestSize.Level0)
712 {
713     uint8_t plan[] = "this is rsa verify test.";
714     HcfAsyKeyGenerator *generator = nullptr;
715     HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
716     HcfKeyPair *keyPair = nullptr;
717     res = generator->generateKeyPair(generator, nullptr, &keyPair);
718     EXPECT_EQ(res, HCF_SUCCESS);
719 
720     HcfPriKey *prikey = keyPair->priKey;
721     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
722     HcfBlob verifyData = {.data = nullptr, .len = 0};
723     HcfSign *sign = nullptr;
724     res = HcfSignCreate("RSA4096|PSS|SHA256|MGF1_SHA256", &sign);
725     EXPECT_EQ(res, HCF_SUCCESS);
726     res = sign->init(sign, nullptr, prikey);
727     EXPECT_EQ(res, HCF_SUCCESS);
728     res = sign->sign(sign, &input, &verifyData);
729 
730     HcfObjDestroy(sign);
731     HcfFree(verifyData.data);
732     HcfObjDestroy(keyPair);
733     HcfObjDestroy(generator);
734 }
735 
736 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest390, TestSize.Level0)
737 {
738     uint8_t plan[] = "this is rsa verify test.";
739     HcfAsyKeyGenerator *generator = nullptr;
740     HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
741     HcfKeyPair *keyPair = nullptr;
742     res = generator->generateKeyPair(generator, nullptr, &keyPair);
743     EXPECT_EQ(res, HCF_SUCCESS);
744 
745     HcfPriKey *prikey = keyPair->priKey;
746     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
747     HcfBlob verifyData = {.data = nullptr, .len = 0};
748     HcfSign *sign = nullptr;
749     res = HcfSignCreate("RSA4096|PSS|SHA512|MGF1_SHA256", &sign);
750     EXPECT_EQ(res, HCF_SUCCESS);
751     res = sign->init(sign, nullptr, prikey);
752     EXPECT_EQ(res, HCF_SUCCESS);
753     res = sign->sign(sign, &input, &verifyData);
754 
755     HcfObjDestroy(sign);
756     HcfFree(verifyData.data);
757     HcfObjDestroy(keyPair);
758     HcfObjDestroy(generator);
759 }
760 
761 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest400, TestSize.Level0)
762 {
763     uint8_t plan[] = "this is rsa verify test.";
764     HcfAsyKeyGenerator *generator = nullptr;
765     HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
766     HcfKeyPair *keyPair = nullptr;
767     res = generator->generateKeyPair(generator, nullptr, &keyPair);
768     EXPECT_EQ(res, HCF_SUCCESS);
769 
770     HcfPriKey *prikey = keyPair->priKey;
771     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
772     HcfBlob verifyData = {.data = nullptr, .len = 0};
773     HcfSign *sign = nullptr;
774     res = HcfSignCreate("RSA4096|PSS|SHA1|MGF1_SHA256", &sign);
775     EXPECT_EQ(res, HCF_SUCCESS);
776     res = sign->init(sign, nullptr, prikey);
777     EXPECT_EQ(res, HCF_SUCCESS);
778     res = sign->sign(sign, &input, &verifyData);
779 
780     HcfObjDestroy(sign);
781     HcfFree(verifyData.data);
782     HcfObjDestroy(keyPair);
783     HcfObjDestroy(generator);
784 }
785 
786 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest410, TestSize.Level0)
787 {
788     uint8_t plan[] = "this is rsa verify test.";
789     HcfAsyKeyGenerator *generator = nullptr;
790     HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
791     HcfKeyPair *keyPair = nullptr;
792     res = generator->generateKeyPair(generator, nullptr, &keyPair);
793     EXPECT_EQ(res, HCF_SUCCESS);
794 
795     HcfPriKey *prikey = keyPair->priKey;
796     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
797     HcfBlob verifyData = {.data = nullptr, .len = 0};
798     HcfSign *sign = nullptr;
799     res = HcfSignCreate("RSA4096|PSS|SHA256|MGF1_MD5", &sign);
800     EXPECT_EQ(res, HCF_SUCCESS);
801     res = sign->init(sign, nullptr, prikey);
802     EXPECT_EQ(res, HCF_SUCCESS);
803     res = sign->sign(sign, &input, &verifyData);
804 
805     HcfObjDestroy(sign);
806     HcfFree(verifyData.data);
807     HcfObjDestroy(keyPair);
808     HcfObjDestroy(generator);
809 }
810 
811 // incorrect case: double init sign
812 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest500, TestSize.Level0)
813 {
814     HcfAsyKeyGenerator *generator = nullptr;
815     HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
816     HcfKeyPair *keyPair = nullptr;
817     res = generator->generateKeyPair(generator, nullptr, &keyPair);
818     EXPECT_EQ(res, HCF_SUCCESS);
819 
820     HcfPriKey *prikey = keyPair->priKey;
821     HcfSign *sign = nullptr;
822     res = HcfSignCreate("RSA4096|PKCS1|SHA512", &sign);
823     EXPECT_EQ(res, HCF_SUCCESS);
824 
825     res = sign->init(sign, nullptr, prikey);
826     EXPECT_EQ(res, HCF_SUCCESS);
827     res = sign->init(sign, nullptr, prikey);
828     EXPECT_NE(res, HCF_SUCCESS);
829 
830     HcfObjDestroy(sign);
831     HcfObjDestroy(keyPair);
832     HcfObjDestroy(generator);
833 }
834 
835 // incorrect case : init signer with key pair's public Key by key pair spec.
836 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest001, TestSize.Level0)
837 {
838     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
839     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
840     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
841     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
842     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
843 
844     HcfAsyKeyGeneratorBySpec *generator = nullptr;
845     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
846     EXPECT_EQ(res, HCF_SUCCESS);
847     EXPECT_NE(generator, nullptr);
848 
849     HcfKeyPair *keyPair = nullptr;
850     res = generator->generateKeyPair(generator, &keyPair);
851     EXPECT_EQ(res, HCF_SUCCESS);
852     EXPECT_NE(keyPair, nullptr);
853 
854     HcfSign *sign = nullptr;
855     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
856     EXPECT_EQ(res, HCF_SUCCESS);
857 
858     HcfPubKey *pubKey = keyPair->pubKey;
859 
860     res = sign->init(sign, nullptr, (HcfPriKey *)pubKey);
861     EXPECT_NE(res, HCF_SUCCESS);
862 
863     HcfObjDestroy(sign);
864     HcfObjDestroy(generator);
865     HcfObjDestroy(keyPair);
866 }
867 
868 // incorrect case : init signer with public Key by key pair spec.
869 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest002, TestSize.Level0)
870 {
871     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
872     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
873     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
874     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
875     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
876 
877     HcfAsyKeyGeneratorBySpec *generator = nullptr;
878     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
879     EXPECT_EQ(res, HCF_SUCCESS);
880     EXPECT_NE(generator, nullptr);
881 
882     HcfPubKey *pubKey = nullptr;
883     res = generator->generatePubKey(generator, &pubKey);
884     EXPECT_EQ(res, HCF_SUCCESS);
885     EXPECT_NE(pubKey, nullptr);
886 
887     HcfSign *sign = nullptr;
888     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
889     EXPECT_EQ(res, HCF_SUCCESS);
890 
891     res = sign->init(sign, nullptr, (HcfPriKey *)pubKey);
892     EXPECT_NE(res, HCF_SUCCESS);
893 
894     HcfObjDestroy(sign);
895     HcfObjDestroy(generator);
896     HcfObjDestroy(pubKey);
897 }
898 
899 // incorrect case : init signer with public Key by pub key spec.
900 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest003, TestSize.Level0)
901 {
902     HcfRsaPubKeyParamsSpec rsaPubKeySpec = {};
903     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
904     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
905     GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec);
906     HcfAsyKeyGeneratorBySpec *generator = nullptr;
907     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPubKeySpec), &generator);
908     EXPECT_EQ(res, HCF_SUCCESS);
909     EXPECT_NE(generator, nullptr);
910 
911     HcfPubKey *pubKey = nullptr;
912     res = generator->generatePubKey(generator, &pubKey);
913     EXPECT_EQ(res, HCF_SUCCESS);
914     EXPECT_NE(pubKey, nullptr);
915 
916     HcfSign *sign = nullptr;
917     res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
918     EXPECT_EQ(res, HCF_SUCCESS);
919 
920     res = sign->init(sign, nullptr, (HcfPriKey *)pubKey);
921     EXPECT_NE(res, HCF_SUCCESS);
922 
923     HcfObjDestroy(sign);
924     HcfObjDestroy(generator);
925     HcfObjDestroy(pubKey);
926 }
927 
928 // incorrect case : set pss saltLen before init -> correct
929 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest004, TestSize.Level0)
930 {
931     HcfSign *sign = nullptr;
932     HcfResult res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
933     EXPECT_EQ(res, HCF_SUCCESS);
934 
935     res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_NORMAL_SALTLEN);
936     EXPECT_EQ(res, HCF_SUCCESS);
937 
938     HcfObjDestroy(sign);
939 }
940 
941 // incorrect case : set invalid pss saltLen
942 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest005, TestSize.Level0)
943 {
944     HcfAsyKeyGenerator *generator = nullptr;
945     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
946     HcfKeyPair *keyPair = nullptr;
947     res = generator->generateKeyPair(generator, nullptr, &keyPair);
948     EXPECT_EQ(res, HCF_SUCCESS);
949 
950     HcfPriKey *prikey = keyPair->priKey;
951     HcfSign *sign = nullptr;
952     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
953     EXPECT_EQ(res, HCF_SUCCESS);
954 
955     res = sign->init(sign, nullptr, prikey);
956     EXPECT_EQ(res, HCF_SUCCESS);
957     res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_INVLAID_SALTLEN);
958     EXPECT_NE(res, HCF_SUCCESS);
959 
960     HcfObjDestroy(sign);
961     HcfObjDestroy(keyPair);
962     HcfObjDestroy(generator);
963 }
964 
965 // incorrect case : set invalid pss int item
966 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest006, TestSize.Level0)
967 {
968     HcfAsyKeyGenerator *generator = nullptr;
969     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
970     HcfKeyPair *keyPair = nullptr;
971     res = generator->generateKeyPair(generator, nullptr, &keyPair);
972     EXPECT_EQ(res, HCF_SUCCESS);
973 
974     HcfPriKey *prikey = keyPair->priKey;
975     HcfSign *sign = nullptr;
976     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
977     EXPECT_EQ(res, HCF_SUCCESS);
978 
979     res = sign->init(sign, nullptr, prikey);
980     EXPECT_EQ(res, HCF_SUCCESS);
981     res = sign->setSignSpecInt(sign, PSS_MD_NAME_STR, PSS_NORMAL_SALTLEN);
982     EXPECT_NE(res, HCF_SUCCESS);
983 
984     HcfObjDestroy(sign);
985     HcfObjDestroy(keyPair);
986     HcfObjDestroy(generator);
987 }
988 
989 // incorrect case : set pss saltLen when using pkcs1
990 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest007, TestSize.Level0)
991 {
992     HcfAsyKeyGenerator *generator = nullptr;
993     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
994     HcfKeyPair *keyPair = nullptr;
995     res = generator->generateKeyPair(generator, nullptr, &keyPair);
996     EXPECT_EQ(res, HCF_SUCCESS);
997 
998     HcfPriKey *prikey = keyPair->priKey;
999     HcfSign *sign = nullptr;
1000     res = HcfSignCreate("RSA|PKCS1|SHA512", &sign);
1001     EXPECT_EQ(res, HCF_SUCCESS);
1002 
1003     res = sign->init(sign, nullptr, prikey);
1004     EXPECT_EQ(res, HCF_SUCCESS);
1005     res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_NORMAL_SALTLEN);
1006     EXPECT_NE(res, HCF_SUCCESS);
1007 
1008     HcfObjDestroy(sign);
1009     HcfObjDestroy(keyPair);
1010     HcfObjDestroy(generator);
1011 }
1012 
1013 // incorrect case : get pss int before init and set;
1014 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest008, TestSize.Level0)
1015 {
1016     HcfSign *sign = nullptr;
1017     HcfResult res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1018 
1019     int32_t retInt = 0;
1020     res = sign->getSignSpecInt(sign, PSS_SALT_LEN_INT, &retInt);
1021     EXPECT_NE(res, HCF_SUCCESS);
1022 
1023     HcfObjDestroy(sign);
1024 }
1025 
1026 // incorrect case : get pss str before init -> correct
1027 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest009, TestSize.Level0)
1028 {
1029     HcfSign *sign = nullptr;
1030     HcfResult res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1031     EXPECT_EQ(res, HCF_SUCCESS);
1032 
1033     char *returnStr = nullptr;
1034     res = sign->getSignSpecString(sign, PSS_MD_NAME_STR, &returnStr);
1035     EXPECT_EQ(res, HCF_SUCCESS);
1036 
1037     HcfFree(returnStr);
1038     HcfObjDestroy(sign);
1039 }
1040 
1041 // incorrect case : get pss invalid int item
1042 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest090, TestSize.Level0)
1043 {
1044     HcfAsyKeyGenerator *generator = nullptr;
1045     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1046     HcfKeyPair *keyPair = nullptr;
1047     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1048     EXPECT_EQ(res, HCF_SUCCESS);
1049 
1050     HcfPriKey *prikey = keyPair->priKey;
1051     HcfSign *sign = nullptr;
1052     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1053     EXPECT_EQ(res, HCF_SUCCESS);
1054 
1055     res = sign->init(sign, nullptr, prikey);
1056     EXPECT_EQ(res, HCF_SUCCESS);
1057     int32_t retInt = 0;
1058     res = sign->getSignSpecInt(sign, PSS_MD_NAME_STR, &retInt);
1059     EXPECT_NE(res, HCF_SUCCESS);
1060 
1061     HcfObjDestroy(sign);
1062     HcfObjDestroy(keyPair);
1063     HcfObjDestroy(generator);
1064 }
1065 
1066 // incorrect case : get pss int item with nullptr sign
1067 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest091, TestSize.Level0)
1068 {
1069     HcfAsyKeyGenerator *generator = nullptr;
1070     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1071     HcfKeyPair *keyPair = nullptr;
1072     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1073     EXPECT_EQ(res, HCF_SUCCESS);
1074 
1075     HcfPriKey *prikey = keyPair->priKey;
1076     HcfSign *sign = nullptr;
1077     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1078     EXPECT_EQ(res, HCF_SUCCESS);
1079 
1080     res = sign->init(sign, nullptr, prikey);
1081     EXPECT_EQ(res, HCF_SUCCESS);
1082     int32_t retInt = 0;
1083     res = sign->getSignSpecInt(nullptr, PSS_SALT_LEN_INT, &retInt);
1084     EXPECT_NE(res, HCF_SUCCESS);
1085 
1086     HcfObjDestroy(sign);
1087     HcfObjDestroy(keyPair);
1088     HcfObjDestroy(generator);
1089 }
1090 
1091 // incorrect case : get pss int item with no sign object
1092 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest092, TestSize.Level0)
1093 {
1094     HcfAsyKeyGenerator *generator = nullptr;
1095     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1096     HcfKeyPair *keyPair = nullptr;
1097     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1098     EXPECT_EQ(res, HCF_SUCCESS);
1099 
1100     HcfPriKey *prikey = keyPair->priKey;
1101     HcfSign *sign = nullptr;
1102     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1103     EXPECT_EQ(res, HCF_SUCCESS);
1104 
1105     res = sign->init(sign, nullptr, prikey);
1106     EXPECT_EQ(res, HCF_SUCCESS);
1107     int32_t retInt = 0;
1108     res = sign->getSignSpecInt(reinterpret_cast<HcfSign *>(generator), PSS_SALT_LEN_INT, &retInt);
1109     EXPECT_NE(res, HCF_SUCCESS);
1110 
1111     HcfObjDestroy(sign);
1112     HcfObjDestroy(keyPair);
1113     HcfObjDestroy(generator);
1114 }
1115 
1116 // incorrect case : get pss int item with nullptr int
1117 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest093, TestSize.Level0)
1118 {
1119     HcfAsyKeyGenerator *generator = nullptr;
1120     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1121     HcfKeyPair *keyPair = nullptr;
1122     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1123     EXPECT_EQ(res, HCF_SUCCESS);
1124 
1125     HcfPriKey *prikey = keyPair->priKey;
1126     HcfSign *sign = nullptr;
1127     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1128     EXPECT_EQ(res, HCF_SUCCESS);
1129 
1130     res = sign->init(sign, nullptr, prikey);
1131     EXPECT_EQ(res, HCF_SUCCESS);
1132 
1133     res = sign->getSignSpecInt(sign, PSS_SALT_LEN_INT, nullptr);
1134     EXPECT_NE(res, HCF_SUCCESS);
1135 
1136     HcfObjDestroy(sign);
1137     HcfObjDestroy(keyPair);
1138     HcfObjDestroy(generator);
1139 }
1140 
1141 // incorrect case : get pss int item with PKCS1 mode
1142 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest094, TestSize.Level0)
1143 {
1144     HcfAsyKeyGenerator *generator = nullptr;
1145     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1146     HcfKeyPair *keyPair = nullptr;
1147     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1148     EXPECT_EQ(res, HCF_SUCCESS);
1149 
1150     HcfPriKey *prikey = keyPair->priKey;
1151     HcfSign *sign = nullptr;
1152     res = HcfSignCreate("RSA|PKCS1|SHA1", &sign);
1153     EXPECT_EQ(res, HCF_SUCCESS);
1154 
1155     res = sign->init(sign, nullptr, prikey);
1156     EXPECT_EQ(res, HCF_SUCCESS);
1157 
1158     int32_t retInt = 0;
1159     res = sign->getSignSpecInt(sign, PSS_SALT_LEN_INT, &retInt);
1160     EXPECT_NE(res, HCF_SUCCESS);
1161 
1162     HcfObjDestroy(sign);
1163     HcfObjDestroy(keyPair);
1164     HcfObjDestroy(generator);
1165 }
1166 
1167 // incorrect case : get pss invalid string item
1168 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest095, TestSize.Level0)
1169 {
1170     HcfAsyKeyGenerator *generator = nullptr;
1171     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1172     HcfKeyPair *keyPair = nullptr;
1173     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1174     EXPECT_EQ(res, HCF_SUCCESS);
1175 
1176     HcfPriKey *prikey = keyPair->priKey;
1177     HcfSign *sign = nullptr;
1178     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1179     EXPECT_EQ(res, HCF_SUCCESS);
1180 
1181     res = sign->init(sign, nullptr, prikey);
1182     EXPECT_EQ(res, HCF_SUCCESS);
1183     char *retStr = nullptr;
1184     res = sign->getSignSpecString(sign, PSS_SALT_LEN_INT, &retStr);
1185     EXPECT_NE(res, HCF_SUCCESS);
1186 
1187     HcfObjDestroy(sign);
1188     HcfObjDestroy(keyPair);
1189     HcfObjDestroy(generator);
1190 }
1191 
1192 // incorrect case : get pss string item with nullptr sign
1193 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest096, TestSize.Level0)
1194 {
1195     HcfAsyKeyGenerator *generator = nullptr;
1196     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1197     HcfKeyPair *keyPair = nullptr;
1198     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1199     EXPECT_EQ(res, HCF_SUCCESS);
1200 
1201     HcfPriKey *prikey = keyPair->priKey;
1202     HcfSign *sign = nullptr;
1203     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1204     EXPECT_EQ(res, HCF_SUCCESS);
1205 
1206     res = sign->init(sign, nullptr, prikey);
1207     EXPECT_EQ(res, HCF_SUCCESS);
1208     char *retStr = nullptr;
1209     res = sign->getSignSpecString(nullptr, PSS_MD_NAME_STR, &retStr);
1210     EXPECT_NE(res, HCF_SUCCESS);
1211 
1212     HcfObjDestroy(sign);
1213     HcfObjDestroy(keyPair);
1214     HcfObjDestroy(generator);
1215 }
1216 
1217 // incorrect case : get pss string item with no sign object
1218 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest097, TestSize.Level0)
1219 {
1220     HcfAsyKeyGenerator *generator = nullptr;
1221     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1222     HcfKeyPair *keyPair = nullptr;
1223     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1224     EXPECT_EQ(res, HCF_SUCCESS);
1225 
1226     HcfPriKey *prikey = keyPair->priKey;
1227     HcfSign *sign = nullptr;
1228     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1229     EXPECT_EQ(res, HCF_SUCCESS);
1230 
1231     res = sign->init(sign, nullptr, prikey);
1232     EXPECT_EQ(res, HCF_SUCCESS);
1233     char *retStr = nullptr;
1234     res = sign->getSignSpecString(reinterpret_cast<HcfSign *>(generator), PSS_MD_NAME_STR, &retStr);
1235     EXPECT_NE(res, HCF_SUCCESS);
1236 
1237     HcfObjDestroy(sign);
1238     HcfObjDestroy(keyPair);
1239     HcfObjDestroy(generator);
1240 }
1241 
1242 // incorrect case : get pss string item with nullptr int
1243 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest098, TestSize.Level0)
1244 {
1245     HcfAsyKeyGenerator *generator = nullptr;
1246     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1247     HcfKeyPair *keyPair = nullptr;
1248     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1249     EXPECT_EQ(res, HCF_SUCCESS);
1250 
1251     HcfPriKey *prikey = keyPair->priKey;
1252     HcfSign *sign = nullptr;
1253     res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1254     EXPECT_EQ(res, HCF_SUCCESS);
1255 
1256     res = sign->init(sign, nullptr, prikey);
1257     EXPECT_EQ(res, HCF_SUCCESS);
1258 
1259     res = sign->getSignSpecString(sign, PSS_MD_NAME_STR, nullptr);
1260     EXPECT_NE(res, HCF_SUCCESS);
1261 
1262     HcfObjDestroy(sign);
1263     HcfObjDestroy(keyPair);
1264     HcfObjDestroy(generator);
1265 }
1266 
1267 // incorrect case : get pss string item with PKCS1 mode
1268 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest099, TestSize.Level0)
1269 {
1270     HcfAsyKeyGenerator *generator = nullptr;
1271     HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1272     HcfKeyPair *keyPair = nullptr;
1273     res = generator->generateKeyPair(generator, nullptr, &keyPair);
1274     EXPECT_EQ(res, HCF_SUCCESS);
1275 
1276     HcfPriKey *prikey = keyPair->priKey;
1277     HcfSign *sign = nullptr;
1278     res = HcfSignCreate("RSA|PKCS1|SHA1", &sign);
1279     EXPECT_EQ(res, HCF_SUCCESS);
1280 
1281     res = sign->init(sign, nullptr, prikey);
1282     EXPECT_EQ(res, HCF_SUCCESS);
1283 
1284     char *retStr = nullptr;
1285     res = sign->getSignSpecString(sign, PSS_MD_NAME_STR, &retStr);
1286     EXPECT_NE(res, HCF_SUCCESS);
1287 
1288     HcfObjDestroy(sign);
1289     HcfObjDestroy(keyPair);
1290     HcfObjDestroy(generator);
1291 }
1292 
1293 // correct case: sign and update with spec
1294 // correct case: sign and update with key pair's private key by key pair spec
1295 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest010, TestSize.Level0)
1296 {
1297     uint8_t plan[] = "this is rsa verify test.";
1298     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1299     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1300     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1301     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1302     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1303 
1304     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1305     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1306     EXPECT_EQ(res, HCF_SUCCESS);
1307     EXPECT_NE(generator, nullptr);
1308 
1309     HcfKeyPair *keyPair = nullptr;
1310     res = generator->generateKeyPair(generator, &keyPair);
1311     EXPECT_EQ(res, HCF_SUCCESS);
1312     EXPECT_NE(keyPair, nullptr);
1313 
1314     HcfPriKey *prikey = keyPair->priKey;
1315     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1316     HcfBlob verifyData = {.data = nullptr, .len = 0};
1317     HcfSign *sign = nullptr;
1318     res = HcfSignCreate("RSA|PKCS1|SHA1", &sign);
1319     EXPECT_EQ(res, HCF_SUCCESS);
1320     res = sign->init(sign, nullptr, prikey);
1321     EXPECT_EQ(res, HCF_SUCCESS);
1322     res = sign->sign(sign, &input, &verifyData);
1323 
1324     HcfObjDestroy(sign);
1325     HcfFree(verifyData.data);
1326     HcfObjDestroy(keyPair);
1327     HcfObjDestroy(generator);
1328 }
1329 
1330 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest011, TestSize.Level0)
1331 {
1332     uint8_t plan[] = "this is rsa verify test.";
1333     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1334     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1335     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1336     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1337     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1338 
1339     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1340     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1341     EXPECT_EQ(res, HCF_SUCCESS);
1342     EXPECT_NE(generator, nullptr);
1343 
1344     HcfKeyPair *keyPair = nullptr;
1345     res = generator->generateKeyPair(generator, &keyPair);
1346     EXPECT_EQ(res, HCF_SUCCESS);
1347     EXPECT_NE(keyPair, nullptr);
1348 
1349     HcfPriKey *prikey = keyPair->priKey;
1350     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1351     HcfBlob verifyData = {.data = nullptr, .len = 0};
1352     HcfSign *sign = nullptr;
1353     res = HcfSignCreate("RSA|PKCS1|SHA256", &sign);
1354     EXPECT_EQ(res, HCF_SUCCESS);
1355     res = sign->init(sign, nullptr, prikey);
1356     EXPECT_EQ(res, HCF_SUCCESS);
1357     res = sign->sign(sign, &input, &verifyData);
1358 
1359     HcfObjDestroy(sign);
1360     HcfFree(verifyData.data);
1361     HcfObjDestroy(keyPair);
1362     HcfObjDestroy(generator);
1363 }
1364 
1365 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest012, TestSize.Level0)
1366 {
1367     uint8_t plan[] = "this is rsa verify test.";
1368     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1369     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1370     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1371     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1372     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1373 
1374     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1375     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1376     EXPECT_EQ(res, HCF_SUCCESS);
1377     EXPECT_NE(generator, nullptr);
1378 
1379     HcfKeyPair *keyPair = nullptr;
1380     res = generator->generateKeyPair(generator, &keyPair);
1381     EXPECT_EQ(res, HCF_SUCCESS);
1382     EXPECT_NE(keyPair, nullptr);
1383 
1384     HcfPriKey *prikey = keyPair->priKey;
1385     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1386     HcfBlob verifyData = {.data = nullptr, .len = 0};
1387     HcfSign *sign = nullptr;
1388     res = HcfSignCreate("RSA|PKCS1|SHA512", &sign);
1389     EXPECT_EQ(res, HCF_SUCCESS);
1390     res = sign->init(sign, nullptr, prikey);
1391     EXPECT_EQ(res, HCF_SUCCESS);
1392     res = sign->sign(sign, &input, &verifyData);
1393 
1394     HcfObjDestroy(sign);
1395     HcfFree(verifyData.data);
1396     HcfObjDestroy(keyPair);
1397     HcfObjDestroy(generator);
1398 }
1399 
1400 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest013, TestSize.Level0)
1401 {
1402     uint8_t plan[] = "this is rsa verify test.";
1403     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1404     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1405     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1406     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1407     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1408 
1409     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1410     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1411     EXPECT_EQ(res, HCF_SUCCESS);
1412     EXPECT_NE(generator, nullptr);
1413 
1414     HcfKeyPair *keyPair = nullptr;
1415     res = generator->generateKeyPair(generator, &keyPair);
1416     EXPECT_EQ(res, HCF_SUCCESS);
1417     EXPECT_NE(keyPair, nullptr);
1418 
1419     HcfPriKey *prikey = keyPair->priKey;
1420     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1421     HcfBlob verifyData = {.data = nullptr, .len = 0};
1422     HcfSign *sign = nullptr;
1423     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1424     EXPECT_EQ(res, HCF_SUCCESS);
1425     res = sign->init(sign, nullptr, prikey);
1426     EXPECT_EQ(res, HCF_SUCCESS);
1427     res = sign->sign(sign, &input, &verifyData);
1428 
1429     HcfObjDestroy(sign);
1430     HcfFree(verifyData.data);
1431     HcfObjDestroy(keyPair);
1432     HcfObjDestroy(generator);
1433 }
1434 
1435 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest014, TestSize.Level0)
1436 {
1437     uint8_t plan[] = "this is rsa verify test.";
1438     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1439     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1440     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1441     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1442     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1443 
1444     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1445     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1446     EXPECT_EQ(res, HCF_SUCCESS);
1447     EXPECT_NE(generator, nullptr);
1448 
1449     HcfKeyPair *keyPair = nullptr;
1450     res = generator->generateKeyPair(generator, &keyPair);
1451     EXPECT_EQ(res, HCF_SUCCESS);
1452     EXPECT_NE(keyPair, nullptr);
1453 
1454     HcfPriKey *prikey = keyPair->priKey;
1455     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1456     HcfBlob verifyData = {.data = nullptr, .len = 0};
1457     HcfSign *sign = nullptr;
1458     res = HcfSignCreate("RSA|PSS|SHA512|MGF1_SHA256", &sign);
1459     EXPECT_EQ(res, HCF_SUCCESS);
1460     res = sign->init(sign, nullptr, prikey);
1461     EXPECT_EQ(res, HCF_SUCCESS);
1462     res = sign->sign(sign, &input, &verifyData);
1463 
1464     HcfObjDestroy(sign);
1465     HcfFree(verifyData.data);
1466     HcfObjDestroy(keyPair);
1467     HcfObjDestroy(generator);
1468 }
1469 
1470 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest015, TestSize.Level0)
1471 {
1472     uint8_t plan[] = "this is rsa verify test.";
1473     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1474     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1475     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1476     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1477     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1478 
1479     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1480     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1481     EXPECT_EQ(res, HCF_SUCCESS);
1482     EXPECT_NE(generator, nullptr);
1483 
1484     HcfKeyPair *keyPair = nullptr;
1485     res = generator->generateKeyPair(generator, &keyPair);
1486     EXPECT_EQ(res, HCF_SUCCESS);
1487     EXPECT_NE(keyPair, nullptr);
1488 
1489     HcfPriKey *prikey = keyPair->priKey;
1490     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1491     HcfBlob verifyData = {.data = nullptr, .len = 0};
1492     HcfSign *sign = nullptr;
1493     res = HcfSignCreate("RSA|PSS|SHA1|MGF1_SHA256", &sign);
1494     EXPECT_EQ(res, HCF_SUCCESS);
1495     res = sign->init(sign, nullptr, prikey);
1496     EXPECT_EQ(res, HCF_SUCCESS);
1497     res = sign->sign(sign, &input, &verifyData);
1498 
1499     HcfObjDestroy(sign);
1500     HcfFree(verifyData.data);
1501     HcfObjDestroy(keyPair);
1502     HcfObjDestroy(generator);
1503 }
1504 
1505 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest016, TestSize.Level0)
1506 {
1507     uint8_t plan[] = "this is rsa verify test.";
1508     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1509     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1510     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1511     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1512     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1513 
1514     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1515     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1516     EXPECT_EQ(res, HCF_SUCCESS);
1517     EXPECT_NE(generator, nullptr);
1518 
1519     HcfKeyPair *keyPair = nullptr;
1520     res = generator->generateKeyPair(generator, &keyPair);
1521     EXPECT_EQ(res, HCF_SUCCESS);
1522     EXPECT_NE(keyPair, nullptr);
1523 
1524     HcfPriKey *prikey = keyPair->priKey;
1525     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1526     HcfBlob verifyData = {.data = nullptr, .len = 0};
1527     HcfSign *sign = nullptr;
1528     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_MD5", &sign);
1529     EXPECT_EQ(res, HCF_SUCCESS);
1530     res = sign->init(sign, nullptr, prikey);
1531     EXPECT_EQ(res, HCF_SUCCESS);
1532     res = sign->sign(sign, &input, &verifyData);
1533 
1534     HcfObjDestroy(sign);
1535     HcfFree(verifyData.data);
1536     HcfObjDestroy(keyPair);
1537     HcfObjDestroy(generator);
1538 }
1539 
1540 // correct case: sign and update with private key by key pair spec and sign RSA
1541 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest020, TestSize.Level0)
1542 {
1543     uint8_t plan[] = "this is rsa verify test.";
1544     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1545     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1546     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1547     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1548     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1549 
1550     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1551     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1552     EXPECT_EQ(res, HCF_SUCCESS);
1553     EXPECT_NE(generator, nullptr);
1554 
1555     HcfPriKey *prikey = nullptr;
1556     res = generator->generatePriKey(generator, &prikey);
1557     EXPECT_EQ(res, HCF_SUCCESS);
1558     EXPECT_NE(prikey, nullptr);
1559 
1560     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1561     HcfBlob verifyData = {.data = nullptr, .len = 0};
1562     HcfSign *sign = nullptr;
1563     res = HcfSignCreate("RSA|PKCS1|SHA1", &sign);
1564     EXPECT_EQ(res, HCF_SUCCESS);
1565     res = sign->init(sign, nullptr, prikey);
1566     EXPECT_EQ(res, HCF_SUCCESS);
1567     res = sign->sign(sign, &input, &verifyData);
1568 
1569     HcfObjDestroy(sign);
1570     HcfFree(verifyData.data);
1571     HcfObjDestroy(prikey);
1572     HcfObjDestroy(generator);
1573 }
1574 
1575 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest021, TestSize.Level0)
1576 {
1577     uint8_t plan[] = "this is rsa verify test.";
1578     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1579     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1580     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1581     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1582     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1583 
1584     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1585     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1586     EXPECT_EQ(res, HCF_SUCCESS);
1587     EXPECT_NE(generator, nullptr);
1588 
1589     HcfPriKey *prikey = nullptr;
1590     res = generator->generatePriKey(generator, &prikey);
1591     EXPECT_EQ(res, HCF_SUCCESS);
1592     EXPECT_NE(prikey, nullptr);
1593 
1594     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1595     HcfBlob verifyData = {.data = nullptr, .len = 0};
1596     HcfSign *sign = nullptr;
1597     res = HcfSignCreate("RSA|PKCS1|SHA256", &sign);
1598     EXPECT_EQ(res, HCF_SUCCESS);
1599     res = sign->init(sign, nullptr, prikey);
1600     EXPECT_EQ(res, HCF_SUCCESS);
1601     res = sign->sign(sign, &input, &verifyData);
1602 
1603     HcfObjDestroy(sign);
1604     HcfFree(verifyData.data);
1605     HcfObjDestroy(prikey);
1606     HcfObjDestroy(generator);
1607 }
1608 
1609 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest022, TestSize.Level0)
1610 {
1611     uint8_t plan[] = "this is rsa verify test.";
1612     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1613     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1614     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1615     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1616     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1617 
1618     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1619     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1620     EXPECT_EQ(res, HCF_SUCCESS);
1621     EXPECT_NE(generator, nullptr);
1622 
1623     HcfPriKey *prikey = nullptr;
1624     res = generator->generatePriKey(generator, &prikey);
1625     EXPECT_EQ(res, HCF_SUCCESS);
1626     EXPECT_NE(prikey, nullptr);
1627 
1628     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1629     HcfBlob verifyData = {.data = nullptr, .len = 0};
1630     HcfSign *sign = nullptr;
1631     res = HcfSignCreate("RSA|PKCS1|SHA512", &sign);
1632     EXPECT_EQ(res, HCF_SUCCESS);
1633     res = sign->init(sign, nullptr, prikey);
1634     EXPECT_EQ(res, HCF_SUCCESS);
1635     res = sign->sign(sign, &input, &verifyData);
1636 
1637     HcfObjDestroy(sign);
1638     HcfFree(verifyData.data);
1639     HcfObjDestroy(prikey);
1640     HcfObjDestroy(generator);
1641 }
1642 
1643 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest023, TestSize.Level0)
1644 {
1645     uint8_t plan[] = "this is rsa verify test.";
1646     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1647     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1648     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1649     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1650     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1651 
1652     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1653     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1654     EXPECT_EQ(res, HCF_SUCCESS);
1655     EXPECT_NE(generator, nullptr);
1656 
1657     HcfPriKey *prikey = nullptr;
1658     res = generator->generatePriKey(generator, &prikey);
1659     EXPECT_EQ(res, HCF_SUCCESS);
1660     EXPECT_NE(prikey, nullptr);
1661 
1662     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1663     HcfBlob verifyData = {.data = nullptr, .len = 0};
1664     HcfSign *sign = nullptr;
1665     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1666     EXPECT_EQ(res, HCF_SUCCESS);
1667     res = sign->init(sign, nullptr, prikey);
1668     EXPECT_EQ(res, HCF_SUCCESS);
1669     res = sign->sign(sign, &input, &verifyData);
1670 
1671     HcfObjDestroy(sign);
1672     HcfFree(verifyData.data);
1673     HcfObjDestroy(prikey);
1674     HcfObjDestroy(generator);
1675 }
1676 
1677 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest024, TestSize.Level0)
1678 {
1679     uint8_t plan[] = "this is rsa verify test.";
1680     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1681     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1682     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1683     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1684     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1685 
1686     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1687     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1688     EXPECT_EQ(res, HCF_SUCCESS);
1689     EXPECT_NE(generator, nullptr);
1690 
1691     HcfPriKey *prikey = nullptr;
1692     res = generator->generatePriKey(generator, &prikey);
1693     EXPECT_EQ(res, HCF_SUCCESS);
1694     EXPECT_NE(prikey, nullptr);
1695 
1696     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1697     HcfBlob verifyData = {.data = nullptr, .len = 0};
1698     HcfSign *sign = nullptr;
1699     res = HcfSignCreate("RSA|PSS|SHA512|MGF1_SHA256", &sign);
1700     EXPECT_EQ(res, HCF_SUCCESS);
1701     res = sign->init(sign, nullptr, prikey);
1702     EXPECT_EQ(res, HCF_SUCCESS);
1703     res = sign->sign(sign, &input, &verifyData);
1704 
1705     HcfObjDestroy(sign);
1706     HcfFree(verifyData.data);
1707     HcfObjDestroy(prikey);
1708     HcfObjDestroy(generator);
1709 }
1710 
1711 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest025, TestSize.Level0)
1712 {
1713     uint8_t plan[] = "this is rsa verify test.";
1714     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1715     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1716     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1717     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1718     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1719 
1720     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1721     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1722     EXPECT_EQ(res, HCF_SUCCESS);
1723     EXPECT_NE(generator, nullptr);
1724 
1725     HcfPriKey *prikey = nullptr;
1726     res = generator->generatePriKey(generator, &prikey);
1727     EXPECT_EQ(res, HCF_SUCCESS);
1728     EXPECT_NE(prikey, nullptr);
1729 
1730     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1731     HcfBlob verifyData = {.data = nullptr, .len = 0};
1732     HcfSign *sign = nullptr;
1733     res = HcfSignCreate("RSA|PSS|SHA1|MGF1_SHA256", &sign);
1734     EXPECT_EQ(res, HCF_SUCCESS);
1735     res = sign->init(sign, nullptr, prikey);
1736     EXPECT_EQ(res, HCF_SUCCESS);
1737     res = sign->sign(sign, &input, &verifyData);
1738 
1739     HcfObjDestroy(sign);
1740     HcfFree(verifyData.data);
1741     HcfObjDestroy(prikey);
1742     HcfObjDestroy(generator);
1743 }
1744 
1745 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest026, TestSize.Level0)
1746 {
1747     uint8_t plan[] = "this is rsa verify test.";
1748     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1749     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1750     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1751     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1752     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1753 
1754     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1755     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1756     EXPECT_EQ(res, HCF_SUCCESS);
1757     EXPECT_NE(generator, nullptr);
1758 
1759     HcfPriKey *prikey = nullptr;
1760     res = generator->generatePriKey(generator, &prikey);
1761     EXPECT_EQ(res, HCF_SUCCESS);
1762     EXPECT_NE(prikey, nullptr);
1763 
1764     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1765     HcfBlob verifyData = {.data = nullptr, .len = 0};
1766     HcfSign *sign = nullptr;
1767     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_MD5", &sign);
1768     EXPECT_EQ(res, HCF_SUCCESS);
1769     res = sign->init(sign, nullptr, prikey);
1770     EXPECT_EQ(res, HCF_SUCCESS);
1771     res = sign->sign(sign, &input, &verifyData);
1772 
1773     HcfObjDestroy(sign);
1774     HcfFree(verifyData.data);
1775     HcfObjDestroy(prikey);
1776     HcfObjDestroy(generator);
1777 }
1778 
1779 // correct case: set pss saltLen
1780 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest027, TestSize.Level0)
1781 {
1782     uint8_t plan[] = "this is rsa verify test.";
1783     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1784     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1785     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1786     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1787     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1788 
1789     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1790     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1791     EXPECT_EQ(res, HCF_SUCCESS);
1792     EXPECT_NE(generator, nullptr);
1793 
1794     HcfKeyPair *keyPair = nullptr;
1795     res = generator->generateKeyPair(generator, &keyPair);
1796     EXPECT_EQ(res, HCF_SUCCESS);
1797     EXPECT_NE(keyPair, nullptr);
1798 
1799     HcfPriKey *prikey = keyPair->priKey;
1800     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1801     HcfBlob verifyData = {.data = nullptr, .len = 0};
1802     HcfSign *sign = nullptr;
1803     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1804     EXPECT_EQ(res, HCF_SUCCESS);
1805     res = sign->init(sign, nullptr, prikey);
1806     EXPECT_EQ(res, HCF_SUCCESS);
1807 
1808     res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_NORMAL_SALTLEN);
1809     EXPECT_EQ(res, HCF_SUCCESS);
1810     res = sign->sign(sign, &input, &verifyData);
1811     EXPECT_EQ(res, HCF_SUCCESS);
1812 
1813     HcfObjDestroy(sign);
1814     HcfFree(verifyData.data);
1815     HcfObjDestroy(keyPair);
1816     HcfObjDestroy(generator);
1817 }
1818 
1819 // correct case: get pss saltLen
1820 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest028, TestSize.Level0)
1821 {
1822     uint8_t plan[] = "this is rsa verify test.";
1823     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1824     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1825     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1826     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1827     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1828 
1829     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1830     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1831     EXPECT_EQ(res, HCF_SUCCESS);
1832     EXPECT_NE(generator, nullptr);
1833 
1834     HcfKeyPair *keyPair = nullptr;
1835     res = generator->generateKeyPair(generator, &keyPair);
1836     EXPECT_EQ(res, HCF_SUCCESS);
1837     EXPECT_NE(keyPair, nullptr);
1838 
1839     HcfPriKey *prikey = keyPair->priKey;
1840     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1841     HcfBlob verifyData = {.data = nullptr, .len = 0};
1842     HcfSign *sign = nullptr;
1843     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1844     EXPECT_EQ(res, HCF_SUCCESS);
1845     res = sign->init(sign, nullptr, prikey);
1846     EXPECT_EQ(res, HCF_SUCCESS);
1847 
1848     res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_NORMAL_SALTLEN);
1849     EXPECT_EQ(res, HCF_SUCCESS);
1850 
1851     int32_t retInt = 0;
1852     res = sign->getSignSpecInt(sign, PSS_SALT_LEN_INT, &retInt);
1853     EXPECT_EQ(res, HCF_SUCCESS);
1854     EXPECT_EQ(retInt, PSS_NORMAL_SALTLEN);
1855 
1856     res = sign->sign(sign, &input, &verifyData);
1857     EXPECT_EQ(res, HCF_SUCCESS);
1858 
1859     HcfObjDestroy(sign);
1860     HcfFree(verifyData.data);
1861     HcfObjDestroy(keyPair);
1862     HcfObjDestroy(generator);
1863 }
1864 
1865 // correct case: get pss trail field len
1866 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest029, TestSize.Level0)
1867 {
1868     uint8_t plan[] = "this is rsa verify test.";
1869     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1870     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1871     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1872     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1873     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1874 
1875     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1876     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1877     EXPECT_EQ(res, HCF_SUCCESS);
1878     EXPECT_NE(generator, nullptr);
1879 
1880     HcfKeyPair *keyPair = nullptr;
1881     res = generator->generateKeyPair(generator, &keyPair);
1882     EXPECT_EQ(res, HCF_SUCCESS);
1883     EXPECT_NE(keyPair, nullptr);
1884 
1885     HcfPriKey *prikey = keyPair->priKey;
1886     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1887     HcfBlob verifyData = {.data = nullptr, .len = 0};
1888     HcfSign *sign = nullptr;
1889     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1890     EXPECT_EQ(res, HCF_SUCCESS);
1891     res = sign->init(sign, nullptr, prikey);
1892     EXPECT_EQ(res, HCF_SUCCESS);
1893 
1894     int32_t retInt = 0;
1895     res = sign->getSignSpecInt(sign, PSS_TRAILER_FIELD_INT, &retInt);
1896     EXPECT_EQ(res, HCF_SUCCESS);
1897     EXPECT_EQ(retInt, PSS_TRAILER_FIELD_LEN);
1898 
1899     res = sign->sign(sign, &input, &verifyData);
1900     EXPECT_EQ(res, HCF_SUCCESS);
1901 
1902     HcfObjDestroy(sign);
1903     HcfFree(verifyData.data);
1904     HcfObjDestroy(keyPair);
1905     HcfObjDestroy(generator);
1906 }
1907 
1908 // correct case: get pss md string
1909 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest030, TestSize.Level0)
1910 {
1911     uint8_t plan[] = "this is rsa verify test.";
1912     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1913     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1914     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1915     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1916     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1917 
1918     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1919     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1920     EXPECT_EQ(res, HCF_SUCCESS);
1921     EXPECT_NE(generator, nullptr);
1922 
1923     HcfKeyPair *keyPair = nullptr;
1924     res = generator->generateKeyPair(generator, &keyPair);
1925     EXPECT_EQ(res, HCF_SUCCESS);
1926     EXPECT_NE(keyPair, nullptr);
1927 
1928     HcfPriKey *prikey = keyPair->priKey;
1929     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1930     HcfBlob verifyData = {.data = nullptr, .len = 0};
1931     HcfSign *sign = nullptr;
1932     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1933     EXPECT_EQ(res, HCF_SUCCESS);
1934     res = sign->init(sign, nullptr, prikey);
1935     EXPECT_EQ(res, HCF_SUCCESS);
1936 
1937     char *retStr = nullptr;
1938     res = sign->getSignSpecString(sign, PSS_MD_NAME_STR, &retStr);
1939     EXPECT_EQ(res, HCF_SUCCESS);
1940     EXPECT_STREQ(g_sha256MdName, retStr);
1941 
1942     res = sign->sign(sign, &input, &verifyData);
1943     EXPECT_EQ(res, HCF_SUCCESS);
1944 
1945     HcfObjDestroy(sign);
1946     HcfFree(retStr);
1947     HcfFree(verifyData.data);
1948     HcfObjDestroy(keyPair);
1949     HcfObjDestroy(generator);
1950 }
1951 
1952 // correct case: get pss mgf1 string
1953 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest031, TestSize.Level0)
1954 {
1955     uint8_t plan[] = "this is rsa verify test.";
1956     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1957     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1958     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1959     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1960     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1961 
1962     HcfAsyKeyGeneratorBySpec *generator = nullptr;
1963     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1964     EXPECT_EQ(res, HCF_SUCCESS);
1965     EXPECT_NE(generator, nullptr);
1966 
1967     HcfKeyPair *keyPair = nullptr;
1968     res = generator->generateKeyPair(generator, &keyPair);
1969     EXPECT_EQ(res, HCF_SUCCESS);
1970     EXPECT_NE(keyPair, nullptr);
1971 
1972     HcfPriKey *prikey = keyPair->priKey;
1973     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1974     HcfBlob verifyData = {.data = nullptr, .len = 0};
1975     HcfSign *sign = nullptr;
1976     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1977     EXPECT_EQ(res, HCF_SUCCESS);
1978     res = sign->init(sign, nullptr, prikey);
1979     EXPECT_EQ(res, HCF_SUCCESS);
1980 
1981     char *retStr = nullptr;
1982     res = sign->getSignSpecString(sign, PSS_MGF_NAME_STR, &retStr);
1983     EXPECT_EQ(res, HCF_SUCCESS);
1984     EXPECT_STREQ(g_mgf1Name, retStr);
1985 
1986     res = sign->sign(sign, &input, &verifyData);
1987     EXPECT_EQ(res, HCF_SUCCESS);
1988 
1989     HcfObjDestroy(sign);
1990     HcfFree(retStr);
1991     HcfFree(verifyData.data);
1992     HcfObjDestroy(keyPair);
1993     HcfObjDestroy(generator);
1994 }
1995 
1996 // correct case: get pss mgf1 md string
1997 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest032, TestSize.Level0)
1998 {
1999     uint8_t plan[] = "this is rsa verify test.";
2000     HcfRsaKeyPairParamsSpec rsaPairSpec = {};
2001     unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
2002     unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
2003     unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
2004     GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
2005 
2006     HcfAsyKeyGeneratorBySpec *generator = nullptr;
2007     HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
2008     EXPECT_EQ(res, HCF_SUCCESS);
2009     EXPECT_NE(generator, nullptr);
2010 
2011     HcfKeyPair *keyPair = nullptr;
2012     res = generator->generateKeyPair(generator, &keyPair);
2013     EXPECT_EQ(res, HCF_SUCCESS);
2014     EXPECT_NE(keyPair, nullptr);
2015 
2016     HcfPriKey *prikey = keyPair->priKey;
2017     HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
2018     HcfBlob verifyData = {.data = nullptr, .len = 0};
2019     HcfSign *sign = nullptr;
2020     res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
2021     EXPECT_EQ(res, HCF_SUCCESS);
2022     res = sign->init(sign, nullptr, prikey);
2023     EXPECT_EQ(res, HCF_SUCCESS);
2024 
2025     char *retStr = nullptr;
2026     res = sign->getSignSpecString(sign, PSS_MGF1_MD_STR, &retStr);
2027     EXPECT_EQ(res, HCF_SUCCESS);
2028     EXPECT_STREQ(g_sha256MdName, retStr);
2029 
2030     res = sign->sign(sign, &input, &verifyData);
2031     EXPECT_EQ(res, HCF_SUCCESS);
2032 
2033     HcfObjDestroy(sign);
2034     HcfFree(retStr);
2035     HcfFree(verifyData.data);
2036     HcfObjDestroy(keyPair);
2037     HcfObjDestroy(generator);
2038 }
2039 }
2040