vlib: prevent some signals from being executed on workers
[vpp.git] / src / plugins / unittest / crypto / rfc2202_hmac_sha1.c
1 /*
2  * Copyright (c) 2019 Cisco and/or its affiliates.
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 /* Test vectors published in RFC2202 */
17
18 #include <vppinfra/clib.h>
19 #include <vnet/crypto/crypto.h>
20 #include <unittest/crypto/crypto.h>
21
22 static u8 sha1_tc1_key[] = {
23   0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
24   0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
25   0x0b, 0x0b, 0x0b, 0x0b
26 };
27
28 static char sha1_tc1_data[8] = "Hi There";
29
30 static u8 sha1_tc1_digest[] = {
31   0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64,
32   0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e,
33   0xf1, 0x46, 0xbe, 0x00
34 };
35
36 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc1) = {
37   .name = "RFC2202 HMAC-SHA-1 TC1",
38   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
39   .key = TEST_DATA (sha1_tc1_key),
40   .plaintext = TEST_DATA (sha1_tc1_data),
41   .digest = TEST_DATA (sha1_tc1_digest),
42 };
43
44 static char sha1_tc2_key[4] = "Jefe";
45
46 static char sha1_tc2_data[28] = "what do ya want for nothing?";
47
48 static u8 sha1_tc2_digest[] = {
49   0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2,
50   0xd2, 0x74, 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c,
51   0x25, 0x9a, 0x7c, 0x79
52 };
53
54 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc2) = {
55   .name = "RFC2202 HMAC-SHA-1 TC2",
56   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
57   .key = TEST_DATA (sha1_tc2_key),
58   .plaintext = TEST_DATA (sha1_tc2_data),
59   .digest = TEST_DATA (sha1_tc2_digest),
60 };
61
62 static u8 sha1_tc3_key[20] = {
63   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
64   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
65   0xaa, 0xaa, 0xaa, 0xaa
66 };
67
68 static u8 sha1_tc3_data[50] = {
69   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
70   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
71   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
72   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
73   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
74   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
75   0xdd, 0xdd
76 };
77
78 static u8 sha1_tc3_digest[] = {
79   0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd,
80   0x91, 0xa3, 0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f,
81   0x63, 0xf1, 0x75, 0xd3,
82 };
83
84 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc3) = {
85   .name = "RFC2202 HMAC-SHA-1 TC3",
86   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
87   .key = TEST_DATA (sha1_tc3_key),
88   .plaintext = TEST_DATA (sha1_tc3_data),
89   .digest = TEST_DATA (sha1_tc3_digest),
90 };
91
92 static u8 sha1_tc4_key[25] = {
93   0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
94   0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
95   0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
96   0x19
97 };
98
99 static u8 sha1_tc4_data[50] = {
100   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
101   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
102   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
103   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
104   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
105   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
106   0xcd, 0xcd,
107 };
108
109 static u8 sha1_tc4_digest[] = {
110   0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6,
111   0xbc, 0x84, 0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c,
112   0x2d, 0x72, 0x35, 0xda,
113 };
114
115 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc4) = {
116   .name = "RFC2202 HMAC-SHA-1 TC4",
117   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
118   .key = TEST_DATA (sha1_tc4_key),
119   .plaintext = TEST_DATA (sha1_tc4_data),
120   .digest = TEST_DATA (sha1_tc4_digest),
121 };
122
123 static u8 sha1_tc5_key[20] = {
124   0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
125   0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
126   0x0c, 0x0c, 0x0c, 0x0c
127 };
128
129 static char sha1_tc5_data[20] = "Test With Truncation";
130
131 static u8 sha1_tc5_digest[] = {
132   0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f,
133   0xe7, 0xf2, 0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32,
134   0x4a, 0x9a, 0x5a, 0x04
135 };
136
137 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc5) = {
138   .name = "RFC2202 HMAC-SHA-1 TC5",
139   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
140   .key = TEST_DATA (sha1_tc5_key),
141   .plaintext = TEST_DATA (sha1_tc5_data),
142   .digest = TEST_DATA (sha1_tc5_digest),
143 };
144
145 static u8 sha1_tc5_digest_96[12] = {
146   0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f,
147   0xe7, 0xf2, 0x7b, 0xe1
148 };
149
150 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc5_trunc) = {
151   .name = "RFC2202 HMAC-SHA-1-96 TC5-trunc",
152   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
153   .key = TEST_DATA (sha1_tc5_key),
154   .plaintext = TEST_DATA (sha1_tc5_data),
155   .digest = TEST_DATA (sha1_tc5_digest_96),
156 };
157
158 static u8 sha1_tc6_key[80] = {
159   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
160   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
161   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
162   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
163   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
164   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
165   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
166   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
167   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
168   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
169 };
170
171 static char sha1_tc6_data[54] =
172   "Test Using Larger Than Block-Size Key - Hash Key First";
173
174 static u8 sha1_tc6_digest[] = {
175   0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e,
176   0x95, 0x70, 0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55,
177   0xed, 0x40, 0x21, 0x12
178 };
179
180 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc6) = {
181   .name = "RFC2202 HMAC-SHA-1 TC6",
182   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
183   .key = TEST_DATA (sha1_tc6_key),
184   .plaintext = TEST_DATA (sha1_tc6_data),
185   .digest = TEST_DATA (sha1_tc6_digest),
186 };
187
188 static char sha1_tc7_data[73] =
189   "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data";
190
191 static u8 sha1_tc7_digest[20] = {
192   0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78,
193   0x6d, 0x6b, 0xba, 0xa7, 0x96, 0x5c, 0x78, 0x08,
194   0xbb, 0xff, 0x1a, 0x91
195 };
196
197 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc7) = {
198   .name = "RFC2202 HMAC-SHA-1 TC7",
199   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
200   .key = TEST_DATA (sha1_tc6_key),
201   .plaintext = TEST_DATA (sha1_tc7_data),
202   .digest = TEST_DATA (sha1_tc7_digest),
203 };
204
205 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc7_chained) = {
206   .name = "RFC2202 HMAC-SHA-1 TC7 [chained]",
207   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
208   .key = TEST_DATA (sha1_tc6_key),
209   .digest = TEST_DATA (sha1_tc7_digest),
210
211   .is_chained = 1,
212   .pt_chunks = {
213     TEST_DATA_CHUNK (sha1_tc7_data, 0, 40),
214     TEST_DATA_CHUNK (sha1_tc7_data, 40, 33)
215   },
216 };
217
218 UNITTEST_REGISTER_CRYPTO_TEST (rfc_2202_sha1_tc7_inc) = {
219   .name = "HMAC-SHA-1 incremental (1024 B)",
220   .alg = VNET_CRYPTO_ALG_HMAC_SHA1,
221   .plaintext_incremental = 1024,
222   .key.length = 80,
223   .digest.length = 12,
224 };
225
226 /*
227  * fd.io coding-style-patch-verification: ON
228  *
229  * Local Variables:
230  * eval: (c-set-style "gnu")
231  * End:
232  */