xref: /onnv-gate/usr/src/common/crypto/fips/fips_test_vectors.h (revision 12929:f2051cc42292)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 
22 /*
23  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
24  */
25 
26 #ifndef	_FIPS_TEST_VECTORS_H
27 #define	_FIPS_TEST_VECTORS_H
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 #define	DES3_KEY_SZ		24
34 #define	DES_IV_LEN		8
35 #define	DES_BLOCK_SZ		8
36 
37 #define	AES_BLOCK_SZ		16
38 #define	AES_MAX_KEY_SZ		32
39 
40 #define	AES_CCM_TLEN		16
41 #define	AES_CCM_NONCE_SZ	7
42 #define	AES_CCM_AUTHDATA_SZ	30
43 #define	AES_CCM_DATA_SZ		32	/* Payload size */
44 #define	AES_CCM_CIPHER_SZ	(AES_CCM_DATA_SZ + AES_CCM_TLEN)
45 
46 #define	AES_GCM_IV_LEN		12
47 #define	AES_GCM_AAD_LEN		16
48 #define	AES_GCM_DATA_SZ		16
49 #define	AES_GCM_CIPHER_SZ	((AES_GCM_DATA_SZ) + ((AES_GMAC_TAG_BITS) / 8))
50 
51 #define	AES_GMAC_IV_LEN		12
52 #define	AES_GMAC_AAD_LEN	16
53 #define	AES_GMAC_TAG_BITS	128
54 #define	AES_GMAC_TAG_SZ		((AES_GMAC_TAG_BITS) / 8)
55 #define	AES_GMAC_CIPHER_SZ	(AES_GMAC_TAG_SZ)
56 
57 #define	SHA1_HASH_SZ		20
58 #define	SHA256_HASH_SZ		32
59 #define	SHA384_HASH_SZ		48
60 #define	SHA512_HASH_SZ		64
61 
62 
63 extern uint8_t des3_known_key[DES3_KEY_SZ];
64 extern uint8_t des3_cbc_known_iv[DES_IV_LEN];
65 extern uint8_t des3_ecb_known_plaintext[DES_BLOCK_SZ];
66 extern uint8_t des3_cbc_known_plaintext[DES_BLOCK_SZ];
67 extern uint8_t des3_ecb_known_ciphertext[DES_BLOCK_SZ];
68 extern uint8_t des3_cbc_known_ciphertext[DES_BLOCK_SZ];
69 
70 extern uint8_t aes_known_key[AES_MAX_KEY_SZ];
71 extern uint8_t aes_cbc_known_initialization_vector[AES_BLOCK_SZ];
72 extern uint8_t aes_known_plaintext[AES_BLOCK_SZ];
73 extern uint8_t aes_ecb128_known_ciphertext[AES_BLOCK_SZ];
74 extern uint8_t aes_cbc128_known_ciphertext[AES_BLOCK_SZ];
75 extern uint8_t aes_ecb192_known_ciphertext[AES_BLOCK_SZ];
76 extern uint8_t aes_cbc192_known_ciphertext[AES_BLOCK_SZ];
77 extern uint8_t aes_ecb256_known_ciphertext[AES_BLOCK_SZ];
78 extern uint8_t aes_cbc256_known_ciphertext[AES_BLOCK_SZ];
79 
80 extern uint8_t aes_ctr128_known_key[16];
81 extern uint8_t aes_ctr192_known_key[24];
82 extern uint8_t aes_ctr256_known_key[32];
83 extern uint8_t aes_ctr_known_counter[AES_BLOCK_SZ];
84 extern uint8_t aes_ctr_known_plaintext[AES_BLOCK_SZ];
85 extern uint8_t aes_ctr128_known_ciphertext[AES_BLOCK_SZ];
86 extern uint8_t aes_ctr192_known_ciphertext[AES_BLOCK_SZ];
87 extern uint8_t aes_ctr256_known_ciphertext[AES_BLOCK_SZ];
88 
89 extern uint8_t aes_ccm128_known_key[16];
90 extern uint8_t aes_ccm192_known_key[24];
91 extern uint8_t aes_ccm256_known_key[32];
92 extern uint8_t aes_ccm128_known_nonce[AES_CCM_NONCE_SZ];
93 extern uint8_t aes_ccm192_known_nonce[AES_CCM_NONCE_SZ];
94 extern uint8_t aes_ccm256_known_nonce[AES_CCM_NONCE_SZ];
95 extern uint8_t aes_ccm128_known_adata[AES_CCM_AUTHDATA_SZ];
96 extern uint8_t aes_ccm192_known_adata[AES_CCM_AUTHDATA_SZ];
97 extern uint8_t aes_ccm256_known_adata[AES_CCM_AUTHDATA_SZ];
98 extern uint8_t aes_ccm128_known_plaintext[AES_CCM_DATA_SZ];
99 extern uint8_t aes_ccm192_known_plaintext[AES_CCM_DATA_SZ];
100 extern uint8_t aes_ccm256_known_plaintext[AES_CCM_DATA_SZ];
101 extern uint8_t aes_ccm128_known_ciphertext[AES_CCM_CIPHER_SZ];
102 extern uint8_t aes_ccm192_known_ciphertext[AES_CCM_CIPHER_SZ];
103 extern uint8_t aes_ccm256_known_ciphertext[AES_CCM_CIPHER_SZ];
104 
105 extern uint8_t aes_gcm128_known_key[16];
106 extern uint8_t aes_gcm192_known_key[24];
107 extern uint8_t aes_gcm256_known_key[32];
108 extern uint8_t aes_gcm128_known_iv[AES_GCM_IV_LEN];
109 extern uint8_t aes_gcm192_known_iv[AES_GCM_IV_LEN];
110 extern uint8_t aes_gcm256_known_iv[AES_GCM_IV_LEN];
111 extern uint8_t aes_gcm128_known_adata[AES_GCM_AAD_LEN];
112 extern uint8_t aes_gcm192_known_adata[AES_GCM_AAD_LEN];
113 extern uint8_t aes_gcm256_known_adata[AES_GCM_AAD_LEN];
114 extern uint8_t aes_gcm128_known_plaintext[AES_BLOCK_SZ];
115 extern uint8_t aes_gcm192_known_plaintext[AES_BLOCK_SZ];
116 extern uint8_t aes_gcm256_known_plaintext[AES_BLOCK_SZ];
117 extern uint8_t aes_gcm128_known_ciphertext[32];
118 extern uint8_t aes_gcm192_known_ciphertext[32];
119 extern uint8_t aes_gcm256_known_ciphertext[32];
120 
121 extern uint8_t aes_gmac128_known_key[16];
122 extern uint8_t aes_gmac192_known_key[24];
123 extern uint8_t aes_gmac256_known_key[32];
124 extern uint8_t aes_gmac128_known_iv[AES_GMAC_IV_LEN];
125 extern uint8_t aes_gmac192_known_iv[AES_GMAC_IV_LEN];
126 extern uint8_t aes_gmac256_known_iv[AES_GMAC_IV_LEN];
127 extern uint8_t aes_gmac128_known_tag[AES_GMAC_TAG_SZ];
128 extern uint8_t aes_gmac192_known_tag[AES_GMAC_TAG_SZ];
129 extern uint8_t aes_gmac256_known_tag[AES_GMAC_TAG_SZ];
130 extern uint8_t aes_gmac128_known_adata[AES_GMAC_AAD_LEN];
131 extern uint8_t aes_gmac192_known_adata[AES_GMAC_AAD_LEN];
132 extern uint8_t aes_gmac256_known_adata[AES_GMAC_AAD_LEN];
133 
134 
135 extern uint8_t sha1_known_hash_message[64];
136 extern uint8_t sha1_known_digest[SHA1_HASH_SZ];
137 extern uint8_t HMAC_known_secret_key[8];
138 extern uint8_t known_SHA1_hmac[10];
139 extern uint8_t hmac_sha1_known_hash_message[128];
140 extern uint8_t sha1_hmac_known_secret_key_2[SHA1_HASH_SZ];
141 extern uint8_t sha1_hmac_known_hash_message_2[9];
142 extern uint8_t sha1_known_hmac_2[SHA1_HASH_SZ];
143 
144 extern uint8_t sha256_known_hash_message[64];
145 extern uint8_t known_sha256_digest[SHA256_HASH_SZ];
146 extern uint8_t sha384_known_hash_message[64];
147 extern uint8_t known_sha384_digest[SHA384_HASH_SZ];
148 extern uint8_t sha512_known_hash_message[64];
149 extern uint8_t known_sha512_digest[SHA512_HASH_SZ];
150 extern uint8_t sha256_hmac_known_hash_message[64];
151 extern uint8_t sha256_hmac_known_secret_key[36];
152 extern uint8_t known_sha256_hmac[SHA256_HASH_SZ];
153 extern uint8_t sha256_hmac_known_hash_message_1[28];
154 extern uint8_t sha256_hmac_known_secret_key_1[4];
155 extern uint8_t sha256_known_hmac_1[SHA256_HASH_SZ];
156 extern uint8_t sha256_hmac_known_hash_message_2[50];
157 extern uint8_t sha256_hmac_known_secret_key_2[25];
158 extern uint8_t sha256_known_hmac_2[SHA256_HASH_SZ];
159 extern uint8_t sha384_hmac_known_secret_key[16];
160 extern uint8_t sha384_hmac_known_hash_message[128];
161 extern uint8_t known_sha384_hmac[SHA384_HASH_SZ];
162 extern uint8_t sha512_hmac_known_secret_key[20];
163 extern uint8_t sha512_hmac_known_hash_message[128];
164 extern uint8_t known_sha512_hmac[SHA512_HASH_SZ];
165 
166 
167 extern uint8_t rsa_modulus_1024[128];
168 extern uint8_t rsa_public_exponent_1024[3];
169 extern uint8_t rsa_private_exponent_1024[128];
170 extern uint8_t rsa_prime1_1024[64];
171 extern uint8_t rsa_prime2_1024[64];
172 extern uint8_t rsa_exponent1_1024[64];
173 extern uint8_t rsa_exponent2_1024[64];
174 extern uint8_t rsa_coefficient_1024[64];
175 extern uint8_t rsa_modulus_2048[256];
176 extern uint8_t rsa_public_exponent_2048[1];
177 extern uint8_t rsa_private_exponent_2048[256];
178 extern uint8_t rsa_prime1_2048[128];
179 extern uint8_t rsa_prime2_2048[128];
180 extern uint8_t rsa_exponent1_2048[128];
181 extern uint8_t rsa_exponent2_2048[128];
182 extern uint8_t rsa_coefficient_2048[128];
183 extern uint8_t rsa_known_plaintext_msg[128];
184 extern uint8_t rsa_x509_known_signature_1024[128];
185 extern uint8_t rsa_pkcs_known_signature_1024[128];
186 extern uint8_t rsa_x509_known_signature_2048[256];
187 extern uint8_t rsa_pkcs_known_signature_2048[256];
188 
189 extern uint8_t dsa_base_1024[128];
190 extern uint8_t dsa_prime_1024[128];
191 extern uint8_t dsa_subprime_1024[20];
192 extern uint8_t dsa_privalue_1024[20];
193 extern uint8_t dsa_pubvalue_1024[128];
194 extern uint8_t dsa_known_data[20];
195 
196 extern uint8_t ec_param_oid_secp192r1[10];
197 extern uint8_t ec_point_p192r1[49];
198 extern uint8_t ec_value_p192r1[24];
199 extern uint8_t ec_param_oid_secp224r1[7];
200 extern uint8_t ec_point_p224r1[57];
201 extern uint8_t ec_value_p224r1[28];
202 extern uint8_t ec_param_oid_secp256r1[10];
203 extern uint8_t ec_point_p256r1[65];
204 extern uint8_t ec_value_p256r1[32];
205 extern uint8_t ec_param_oid_secp384r1[7];
206 extern uint8_t ec_point_p384r1[97];
207 extern uint8_t ec_value_p384r1[48];
208 extern uint8_t ec_param_oid_secp521r1[7];
209 extern uint8_t ec_point_p521r1[133];
210 extern uint8_t ec_value_p521r1[66];
211 extern uint8_t ec_param_oid_sect163k1[7];
212 extern uint8_t ec_point_t163k1[43];
213 extern uint8_t ec_value_t163k1[21];
214 extern uint8_t ec_param_oid_sect233k1[7];
215 extern uint8_t ec_point_t233k1[61];
216 extern uint8_t ec_value_t233k1[30];
217 extern uint8_t ec_param_oid_sect283k1[7];
218 extern uint8_t ec_point_t283k1[73];
219 extern uint8_t ec_value_t283k1[36];
220 extern uint8_t ec_param_oid_sect409k1[7];
221 extern uint8_t ec_point_t409k1[105];
222 extern uint8_t ec_value_t409k1[52];
223 extern uint8_t ec_param_oid_sect571k1[7];
224 extern uint8_t ec_point_t571k1[145];
225 extern uint8_t ec_value_t571k1[72];
226 extern uint8_t ec_param_oid_sect163r2[7];
227 extern uint8_t ec_point_t163r2[43];
228 extern uint8_t ec_value_t163r2[21];
229 extern uint8_t ec_param_oid_sect233r1[7];
230 extern uint8_t ec_point_t233r1[61];
231 extern uint8_t ec_value_t233r1[30];
232 extern uint8_t ec_param_oid_sect283r1[7];
233 extern uint8_t ec_point_t283r1[73];
234 extern uint8_t ec_value_t283r1[36];
235 extern uint8_t ec_param_oid_sect409r1[7];
236 extern uint8_t ec_point_t409r1[105];
237 extern uint8_t ec_value_t409r1[52];
238 extern uint8_t ec_param_oid_sect571r1[7];
239 extern uint8_t ec_point_t571r1[145];
240 extern uint8_t ec_value_t571r1[72];
241 
242 #ifdef	__cplusplus
243 }
244 #endif
245 
246 #endif /* _FIPS_TEST_VECTORS_H */
247