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 #ifndef HKS_AES_CIPHER_TEST_COMMON_H
17 #define HKS_AES_CIPHER_TEST_COMMON_H
18 
19 #include <string>
20 #include "hks_three_stage_test_common.h"
21 
22 namespace Unittest::AesCipher {
23 static const uint32_t AES_COMMON_SIZE = 1024;
24 static const uint32_t IV_SIZE = 16;
25 static const uint32_t AAD_SIZE = 16;
26 static const uint32_t NONCE_SIZE = 12;
27 static const uint32_t AEAD_SIZE = 16;
28 
29 static uint8_t IV[IV_SIZE] = {0};
30 static uint8_t AAD[AAD_SIZE] = {0};
31 static uint8_t NONCE[NONCE_SIZE] = {0};
32 static uint8_t AEAD[AEAD_SIZE] = {0};
33 
34 static const std::string g_inData = "Hks_AES_Cipher_Test_000000000000000000000000000000000000000000000000000000000000"
35                                     "00000000000000000000000000000000000000000000000000000000000000000000000000000000"
36                                     "0000000000000000000000000000000000000000000000000000000000000000000000000_string";
37 
38 int32_t HksAesCipherTestEncrypt(const struct HksBlob *keyAlias, const struct HksParamSet *encryptParamSet,
39     const struct HksBlob *inData, struct HksBlob *cipherText);
40 int32_t HksAesCipherTestDecrypt(const struct HksBlob *keyAlias, const struct HksParamSet *decryptParamSet,
41     const struct HksBlob *cipherText, struct HksBlob *plainText, const struct HksBlob *inData);
42 int32_t HksAesCipherTestCaseOther(const struct HksBlob *keyAlias, struct HksParamSet *genParamSet,
43     struct HksParamSet *encryptParamSet, struct HksParamSet *decryptParamSet);
44 int32_t HksAesCipherTestCaseGcm1(const struct HksBlob *keyAlias, struct HksParamSet *genParamSet,
45     struct HksParamSet *encryptParamSet, struct HksParamSet *decryptParamSet);
46 int32_t HksAesCipherTestCaseGcm2(const struct HksBlob *keyAlias, struct HksParamSet *genParamSet,
47     struct HksParamSet *encryptParamSet, struct HksParamSet *decryptParamSet, struct HksParamSet *decrypt1ParamSet);
48 int32_t HksAesCipherTestCaseGcm3(const struct HksBlob *keyAlias, struct HksParamSet *genParamSet,
49     struct HksParamSet *encryptParamSet, struct HksParamSet *decryptParamSet, bool needAccessControl);
50 int32_t HksAesCipherTestCaseGcm4(const struct HksBlob *keyAlias, struct HksParamSet *genParamSet,
51     struct HksParamSet *encryptParamSet, struct HksParamSet *decryptParamSet, bool isTimeOut);
52 int32_t HksAesCipherTestParamAbsentCase(const struct HksBlob *keyAlias, struct HksParamSet *genParamSet,
53     struct HksParamSet *encryptParamSet, struct HksParamSet *decryptParamSet);
54 int32_t HksAesEncryptThreeStage(const struct HksBlob *keyAlias, struct HksParamSet *encryptParamSet,
55     const struct HksBlob *inData, struct HksBlob *cipherText);
56 int32_t HksAesDecryptThreeStage(const struct HksBlob *keyAlias, struct HksParamSet *decryptParamSet,
57     const struct HksBlob *inData, struct HksBlob *cipherText, struct HksBlob *plainText);
58 int32_t HksAesDecryptForBatch(const struct HksBlob *keyAlias, struct HksParamSet *decryptParamSet,
59     const struct HksBlob *inData1, struct HksBlob *cipherText1, struct HksBlob *plainText1,
60     const struct HksBlob *inData2, struct HksBlob *cipherText2, struct HksBlob *plainText2);
61 } // namespace Unittest::AesCipher
62 #endif // HKS_AES_CIPHER_TEST_COMMON_H
63