integration_test_ssi_data.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. /**************************************************************************************
  2. * Copyright (c) 2016-2017, ARM Limited or its affiliates. All rights reserved *
  3. * *
  4. * This file and the related binary are licensed under the following license: *
  5. * *
  6. * ARM Object Code and Header Files License, v1.0 Redistribution. *
  7. * *
  8. * Redistribution and use of object code, header files, and documentation, without *
  9. * modification, are permitted provided that the following conditions are met: *
  10. * *
  11. * 1) Redistributions must reproduce the above copyright notice and the *
  12. * following disclaimer in the documentation and/or other materials *
  13. * provided with the distribution. *
  14. * *
  15. * 2) Unless to the extent explicitly permitted by law, no reverse *
  16. * engineering, decompilation, or disassembly of is permitted. *
  17. * *
  18. * 3) Redistribution and use is permitted solely for the purpose of *
  19. * developing or executing applications that are targeted for use *
  20. * on an ARM-based product. *
  21. * *
  22. * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
  23. * CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT *
  24. * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, *
  25. * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE *
  26. * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
  27. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED *
  28. * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
  29. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
  30. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
  31. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
  32. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
  33. **************************************************************************************/
  34. #include "ssi_pal_types.h"
  35. #ifdef AES_INTEGTEST
  36. #include "ssi_aes.h"
  37. #include "crys_aesccm.h"
  38. #endif
  39. #ifdef ECC_INTEGTEST
  40. #include "crys_ecpki_types.h"
  41. #endif
  42. #ifdef HASH_INTEGTEST
  43. #include "crys_hash.h"
  44. #endif
  45. #ifdef HMAC_INTEGTEST
  46. #include "crys_hash.h"
  47. #include "crys_hmac.h"
  48. #endif
  49. #ifdef RSA_INTEGTEST
  50. #include "crys_rsa_types.h"
  51. #endif
  52. #ifdef CHACHA_INTEGTEST
  53. #include "crys_chacha.h"
  54. #include "crys_poly.h"
  55. #endif
  56. #ifdef HKDF_INTEGTEST
  57. #include "crys_hkdf.h"
  58. #endif
  59. #define MAX_TEST_DATA_SIZE 256
  60. #define MAX_AES_CCM_DATA_SIZE_VECTOR 0x40
  61. #define MAX_RND_SIZE_VECTOR 0x20
  62. #ifdef AES_INTEGTEST
  63. typedef struct aesDataStuct{
  64. uint8_t aesTest_name[MAX_TEST_DATA_SIZE];
  65. uint8_t TST_KeyData[SASI_AES_KEY_MAX_SIZE_IN_BYTES];
  66. uint8_t TST_KeySize;
  67. SaSiAesIv_t aesTest_IvCounter;
  68. uint8_t aesTest_input_data[MAX_TEST_DATA_SIZE];
  69. uint8_t aesTest_output_data[MAX_TEST_DATA_SIZE];
  70. uint8_t aesTest_Expected_output_data[MAX_TEST_DATA_SIZE];
  71. uint16_t aesTest_DataSize;
  72. SaSiAesOperationMode_t aesTest_OperationMode;
  73. SaSiAesEncryptMode_t aesTest_EncDecMode;
  74. uint32_t aesTest_OutputDataSize;
  75. } aesDataStuct;
  76. typedef struct aesCCMDataStuct{
  77. uint8_t aesCCMTest_name[MAX_TEST_DATA_SIZE];
  78. CRYS_AESCCM_Key_t aesCCMTest_Key;
  79. CRYS_AESCCM_KeySize_t aesCCMTest_KeySize;
  80. uint8_t aesCCMTest_NData[MAX_AES_CCM_DATA_SIZE_VECTOR];
  81. uint32_t aesCCMTest_NDataSize;
  82. uint8_t aesCCMTest_AddData[MAX_AES_CCM_DATA_SIZE_VECTOR];
  83. uint32_t aesCCMTest_AddDataSize;
  84. uint8_t aesCCMTest_TextData[MAX_AES_CCM_DATA_SIZE_VECTOR];
  85. uint32_t aesCCMTest_TextdataSize;
  86. uint8_t aesCCMTest_Expected_output_data[MAX_AES_CCM_DATA_SIZE_VECTOR];
  87. uint8_t aesCCMTest_Output_data[MAX_AES_CCM_DATA_SIZE_VECTOR];
  88. uint32_t aesCCMTest_OutputDataSize;
  89. uint8_t aesCCMTest_Expected_MAC_output_data[MAX_AES_CCM_DATA_SIZE_VECTOR];
  90. uint8_t aesCCMTest_Output_MAC_data[MAX_AES_CCM_DATA_SIZE_VECTOR];
  91. uint32_t aesCCMTest_Output_CCM_MACSize;
  92. } aesCCMDataStuct;
  93. #endif
  94. #ifdef ECC_INTEGTEST
  95. typedef struct eccSignDataStuct{
  96. uint8_t eccTest_name[MAX_TEST_DATA_SIZE];
  97. CRYS_ECPKI_DomainID_t eccTest_DomainID;
  98. CRYS_ECPKI_HASH_OpMode_t eccTest_HashMode;
  99. uint8_t eccTest_InputData[MAX_TEST_DATA_SIZE];
  100. uint32_t eccTest_InputDataSize;
  101. uint8_t eccTest_PubKey[MAX_TEST_DATA_SIZE];
  102. uint32_t eccTest_PubKeySize;
  103. uint8_t eccTest_PrivKey[MAX_TEST_DATA_SIZE];
  104. uint32_t eccTest_PrivKeySize;
  105. uint32_t eccTest_SignitureSize;
  106. } eccSignDataStuct;
  107. typedef struct eccDHDataStuct{
  108. uint8_t eccDHTest_name[MAX_TEST_DATA_SIZE];
  109. CRYS_ECPKI_DomainID_t eccDHTest_DomainID;
  110. uint8_t eccDHTest_PubKey1[MAX_TEST_DATA_SIZE];
  111. uint32_t eccDHTest_PubKeySize1;
  112. uint8_t eccDHTest_PrivKey1[MAX_TEST_DATA_SIZE];
  113. uint32_t eccDHTest_PrivKeySize1;
  114. uint8_t eccDHTest_PubKey2[MAX_TEST_DATA_SIZE];
  115. uint32_t eccDHTest_PubKeySize2;
  116. uint8_t eccDHTest_PrivKey2[MAX_TEST_DATA_SIZE];
  117. uint32_t eccDHTest_PrivKeySize2;
  118. } eccDHDataStuct;
  119. #endif
  120. #ifdef CHACHA_INTEGTEST
  121. typedef struct CHACHA_DataStruct {
  122. uint8_t testName[MAX_TEST_DATA_SIZE];
  123. CRYS_CHACHA_Nonce_t pIVCounter;
  124. CRYS_CHACHA_NonceSize_t IVSize;
  125. CRYS_CHACHA_Key_t pKey;
  126. uint32_t initialCounter;
  127. CRYS_CHACHA_EncryptMode_t encryptDecryptFlag;
  128. uint8_t pDataIn[MAX_TEST_DATA_SIZE];
  129. uint32_t dataInSize;
  130. uint8_t pExpectedDataOut[MAX_TEST_DATA_SIZE];
  131. CRYSError_t expectedRc;
  132. } CHACHA_DataStruct;
  133. #define TEST_CHACHA_POLY_DATA_SIZE_MAX 272
  134. typedef struct CHACHA_POLY_DataStruct {
  135. uint8_t testName[MAX_TEST_DATA_SIZE];
  136. CRYS_CHACHA_EncryptMode_t encryptDecryptFlag;
  137. CRYS_CHACHA_Key_t pKey;
  138. uint8_t pDataIn[TEST_CHACHA_POLY_DATA_SIZE_MAX];
  139. uint32_t dataInSize;
  140. CRYS_CHACHA_Nonce_t pNonce;
  141. uint8_t pAddData[TEST_CHACHA_POLY_DATA_SIZE_MAX];
  142. uint32_t addDataSize;
  143. uint8_t pExpectedDataOut[TEST_CHACHA_POLY_DATA_SIZE_MAX];
  144. uint8_t pExpectedMac[CRYS_POLY_MAC_SIZE_IN_BYTES];
  145. CRYSError_t expectedRc;
  146. } CHACHA_POLY_DataStruct_t;
  147. #endif
  148. #ifdef HASH_INTEGTEST
  149. typedef struct hashDataStuct{
  150. uint8_t hashTest_Name[MAX_TEST_DATA_SIZE];
  151. CRYS_HASH_OperationMode_t hashTest_TST_OperationMode;
  152. uint8_t hashTest_InputData[MAX_TEST_DATA_SIZE];
  153. uint32_t hashTest_InputDataSize;
  154. CRYS_HASH_Result_t hashTest_ExpOutData;
  155. uint32_t hashTest_ExpOutDataSize;
  156. } hashDataStuct;
  157. #endif
  158. #ifdef HMAC_INTEGTEST
  159. typedef struct hmacDataStuct{
  160. uint8_t hmacTest_Name[MAX_TEST_DATA_SIZE];
  161. CRYS_HASH_OperationMode_t hmacTest_TST_OperationMode;
  162. uint8_t hmacTest_Key[CRYS_HMAC_KEY_SIZE_IN_BYTES];
  163. uint16_t hmacTest_KeySize;
  164. uint8_t hmacTest_InputData[MAX_TEST_DATA_SIZE];
  165. uint32_t hmacTest_InputDataSize;
  166. CRYS_HASH_Result_t hmacTest_ExpOutData;
  167. uint32_t hmacTest_ExpOutDataSize;
  168. } hmacDataStuct;
  169. #endif
  170. #ifdef RND_INTEGTEST
  171. typedef struct rndDataStuct{
  172. uint8_t hmacTest_Name[MAX_TEST_DATA_SIZE];
  173. uint32_t rndTest_AddInputSize;
  174. uint8_t rndTest_AddInputData[MAX_RND_SIZE_VECTOR];
  175. uint32_t rndTest_RandomVectorSize;
  176. uint8_t rndTest_RandomVectorData1[MAX_RND_SIZE_VECTOR];
  177. uint8_t rndTest_RandomVectorData2[MAX_RND_SIZE_VECTOR];
  178. uint32_t rndTest_RandomVectorInRangeSize1;
  179. uint8_t rndTest_RandomVectorInRangeData[MAX_RND_SIZE_VECTOR];
  180. uint32_t rndTest_RandomVectorInRangeSize2;
  181. uint8_t rndTest_MaxVectorInRange2[MAX_RND_SIZE_VECTOR];
  182. uint8_t rndTest_RandomVectorInRangeData2[MAX_RND_SIZE_VECTOR];
  183. } rndDataStuct;
  184. #endif
  185. #ifdef RSA_INTEGTEST
  186. #define TST_MAX_PRVT_EXP_SIZE_IN_BYTES 256
  187. #define TST_MAX_PUB_EXP_SIZE_IN_BYTES 3
  188. #define TST_MAX_MOD_SIZE_IN_BYTES 256
  189. #define TST_MAX_ENCDEC_DATA_IN_BYTES 256
  190. #define TST_MAX_SIGN_VERIFY_DATA_IN_BYTES 512
  191. #define TST_MAX_PUB_EXP_SIZE_IN_BYTES 3
  192. #define TST_MAX_SINGLE_RSA_SIGN_BLOCK_SIZE_IN_BYTS 16
  193. #define TST_LESS_DATA_FOR_PKCS1V15_ENCRYPT 11
  194. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA1 42
  195. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA224 58
  196. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA256 66
  197. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA384 98
  198. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA512 130
  199. #define TST_NO_CRT 0
  200. #define TST_CRT_MODE 1
  201. #define TST_RSA_512_KEY_SIZE_IN_BYTES 64
  202. #define TST_RSA_1024_KEY_SIZE_IN_BYTES 128
  203. #define TST_LESS_DATA_FOR_PKCS1V15_ENCRYPT 11
  204. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA1 42
  205. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA224 58
  206. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA256 66
  207. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA384 98
  208. #define TST_LESS_DATA_FOR_OAEP_ENCRYPT_SHA512 130
  209. typedef struct rsaEncDecDataStuct{
  210. uint8_t rsaEncDec_Name[MAX_TEST_DATA_SIZE];
  211. uint8_t rsaEncDec_PrivetExponent_D[TST_MAX_PRVT_EXP_SIZE_IN_BYTES];
  212. uint8_t rsaEncDec_PublicExponent_E[TST_MAX_PUB_EXP_SIZE_IN_BYTES];
  213. uint8_t rsaEncDec_Modulus_N[TST_MAX_MOD_SIZE_IN_BYTES];
  214. uint8_t rsaEncDec_P[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  215. uint8_t rsaEncDec_Q[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  216. uint8_t rsaEncDec_dP[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  217. uint8_t rsaEncDec_dQ[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  218. uint8_t rsaEncDec_Qinv[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  219. uint16_t rsaEncDec_KeySize;
  220. uint16_t rsaEncDec_DPSize;
  221. uint16_t rsaEncDec_PubExponentSize;
  222. uint8_t rsaEncDec_input_data[TST_MAX_ENCDEC_DATA_IN_BYTES];
  223. uint8_t rsaEncDec_output_data[TST_MAX_ENCDEC_DATA_IN_BYTES];
  224. uint8_t rsaEncDec_Expected_output_data[TST_MAX_ENCDEC_DATA_IN_BYTES];
  225. } rsaEncDecDataStuct;
  226. typedef struct rsaSignVerifyDataStuct{
  227. char rsaSignVerify_Name[MAX_TEST_DATA_SIZE];
  228. uint8_t rsaSignVerify_PrivetExponent_D[TST_MAX_PRVT_EXP_SIZE_IN_BYTES];
  229. uint8_t rsaSignVerify_PublicExponent_E[TST_MAX_PRVT_EXP_SIZE_IN_BYTES];
  230. uint8_t rsaSignVerify_Modulus_N[TST_MAX_MOD_SIZE_IN_BYTES];
  231. uint8_t rsaSignVerify_P[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  232. uint8_t rsaSignVerify_Q[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  233. uint8_t rsaSignVerify_dP[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  234. uint8_t rsaSignVerify_dQ[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  235. uint8_t rsaSignVerify_Qinv[TST_MAX_PRVT_EXP_SIZE_IN_BYTES/2];
  236. uint16_t rsaSignVerify_KeySize;
  237. uint16_t rsaSignVerify_DPSize;
  238. uint16_t rsaSignVerify_PubExponentSize;
  239. uint16_t rsaSignVerify_SaltLength;
  240. uint8_t rsaSignVerify_input_data[TST_MAX_SIGN_VERIFY_DATA_IN_BYTES];
  241. uint16_t rsaSignVerify_input_dataSize;
  242. uint8_t rsaSignVerify_output_signiture[TST_MAX_PRVT_EXP_SIZE_IN_BYTES];
  243. uint8_t rsaSignVerify_hash_SHA1[CRYS_HASH_SHA1_DIGEST_SIZE_IN_BYTES];
  244. uint8_t rsaSignVerify_hash_SHA256[CRYS_HASH_SHA256_DIGEST_SIZE_IN_BYTES];
  245. uint8_t rsaSignVerify_hash_SHA512[CRYS_HASH_SHA512_DIGEST_SIZE_IN_BYTES];
  246. } rsaSignVerifyDataStuct;
  247. #endif
  248. #ifdef HKDF_INTEGTEST
  249. #define TST_NAME_STRING_LEN 150
  250. #define TST_HKDF_MAX_IKM_SIZE 512
  251. #define TST_HKDF_MAX_SALT_SIZE 512
  252. #define TST_HKDF_MAX_INFO_SIZE 128
  253. #define TST_HKDF_MAX_PRK_SIZE 2048
  254. #define TST_HKDF_MAX_OKM_SIZE 4096
  255. typedef struct hkdfDataStuct{
  256. char hkdf_Name[TST_NAME_STRING_LEN];
  257. CRYS_HKDF_HASH_OpMode_t hkdfHashMode;
  258. uint8_t hkdf_IKM[TST_HKDF_MAX_IKM_SIZE];
  259. uint32_t hkdf_IKMSize;
  260. uint8_t hkdf_Salt[TST_HKDF_MAX_SALT_SIZE];
  261. uint32_t hkdf_SaltSize;
  262. uint8_t hkdf_Info[TST_HKDF_MAX_INFO_SIZE];
  263. uint32_t hkdf_InfoSize;
  264. uint8_t hkdf_ExpectedPRK[TST_HKDF_MAX_PRK_SIZE];
  265. uint32_t hkdf_ExpectedPRKSize;
  266. uint8_t hkdf_ExpectOKM[TST_HKDF_MAX_OKM_SIZE];
  267. uint32_t hkdf_LSize;
  268. } hkdfDataStuct;
  269. #endif