session: Use session->thread_index to correctly retrieve the session
[vpp.git] / src / plugins / unittest / crypto / chacha20_poly1305.c
1 /* Test vectors published in  */
2
3 #include <vppinfra/clib.h>
4 #include <vnet/crypto/crypto.h>
5 #include <unittest/crypto/crypto.h>
6
7 static u8 tc1_key[] = {
8     0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
9     0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
10     0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
11     0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f
12 };
13
14 static u8 tc1_iv[] = {
15     0x07, 0x00, 0x00, 0x00,
16     0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47
17 };
18
19 static u8 tc1_aad[] = {
20     0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3,
21     0xc4, 0xc5, 0xc6, 0xc7
22 };
23
24 static u8 tc1_tag[] = {
25     0x1a, 0xe1, 0x0b, 0x59, 0x4f, 0x09, 0xe2, 0x6a,
26     0x7e, 0x90, 0x2e, 0xcb, 0xd0, 0x60, 0x06, 0x91
27 };
28
29 static u8 tc1_plaintext[] = {
30     0x4c, 0x61, 0x64, 0x69, 0x65, 0x73, 0x20, 0x61,
31     0x6e, 0x64, 0x20, 0x47, 0x65, 0x6e, 0x74, 0x6c,
32     0x65, 0x6d, 0x65, 0x6e, 0x20, 0x6f, 0x66, 0x20,
33     0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x61, 0x73,
34     0x73, 0x20, 0x6f, 0x66, 0x20, 0x27, 0x39, 0x39,
35     0x3a, 0x20, 0x49, 0x66, 0x20, 0x49, 0x20, 0x63,
36     0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6f, 0x66, 0x66,
37     0x65, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x6f,
38     0x6e, 0x6c, 0x79, 0x20, 0x6f, 0x6e, 0x65, 0x20,
39     0x74, 0x69, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20,
40     0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x74, 0x75,
41     0x72, 0x65, 0x2c, 0x20, 0x73, 0x75, 0x6e, 0x73,
42     0x63, 0x72, 0x65, 0x65, 0x6e, 0x20, 0x77, 0x6f,
43     0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x69,
44     0x74, 0x2e };
45
46 static u8 tc1_ciphertext[] = {
47     0xd3, 0x1a, 0x8d, 0x34, 0x64, 0x8e, 0x60, 0xdb,
48     0x7b, 0x86, 0xaf, 0xbc, 0x53, 0xef, 0x7e, 0xc2,
49     0xa4, 0xad, 0xed, 0x51, 0x29, 0x6e, 0x08, 0xfe,
50     0xa9, 0xe2, 0xb5, 0xa7, 0x36, 0xee, 0x62, 0xd6,
51     0x3d, 0xbe, 0xa4, 0x5e, 0x8c, 0xa9, 0x67, 0x12,
52     0x82, 0xfa, 0xfb, 0x69, 0xda, 0x92, 0x72, 0x8b,
53     0x1a, 0x71, 0xde, 0x0a, 0x9e, 0x06, 0x0b, 0x29,
54     0x05, 0xd6, 0xa5, 0xb6, 0x7e, 0xcd, 0x3b, 0x36,
55     0x92, 0xdd, 0xbd, 0x7f, 0x2d, 0x77, 0x8b, 0x8c,
56     0x98, 0x03, 0xae, 0xe3, 0x28, 0x09, 0x1b, 0x58,
57     0xfa, 0xb3, 0x24, 0xe4, 0xfa, 0xd6, 0x75, 0x94,
58     0x55, 0x85, 0x80, 0x8b, 0x48, 0x31, 0xd7, 0xbc,
59     0x3f, 0xf4, 0xde, 0xf0, 0x8e, 0x4b, 0x7a, 0x9d,
60     0xe5, 0x76, 0xd2, 0x65, 0x86, 0xce, 0xc6, 0x4b,
61     0x61, 0x16
62 };
63
64 /* *INDENT-OFF* */
65 UNITTEST_REGISTER_CRYPTO_TEST (chacha20_poly1305_tc1) = {
66   .name = "CHACHA20-POLY1305 TC1",
67   .alg = VNET_CRYPTO_ALG_CHACHA20_POLY1305,
68   .key = TEST_DATA (tc1_key),
69   .iv = TEST_DATA (tc1_iv),
70   .aad = TEST_DATA (tc1_aad),
71   .tag = TEST_DATA (tc1_tag),
72   .plaintext = TEST_DATA (tc1_plaintext),
73   .ciphertext = TEST_DATA (tc1_ciphertext),
74 };
75 /* *INDENT-ON* */
76
77 static u8 tc2_key[] = {
78     0x2d, 0xb0, 0x5d, 0x40, 0xc8, 0xed, 0x44, 0x88,
79     0x34, 0xd1, 0x13, 0xaf, 0x57, 0xa1, 0xeb, 0x3a,
80     0x2a, 0x80, 0x51, 0x36, 0xec, 0x5b, 0xbc, 0x08,
81     0x93, 0x84, 0x21, 0xb5, 0x13, 0x88, 0x3c, 0x0d
82 };
83
84 static u8 tc2_iv[] = {
85     0x00, 0x00, 0x00, 0x00, 0x3d, 0x86, 0xb5, 0x6b,
86     0xc8, 0xa3, 0x1f, 0x1d
87 };
88
89 static u8 tc2_aad[] = {
90     0x33, 0x10, 0x41, 0x12, 0x1f, 0xf3, 0xd2, 0x6b
91 };
92
93 static u8 tc2_tag[] = {
94     0xdd, 0x6b, 0x3b, 0x82, 0xce, 0x5a, 0xbd, 0xd6,
95     0xa9, 0x35, 0x83, 0xd8, 0x8c, 0x3d, 0x85, 0x77
96 };
97
98 static u8 tc2_plaintext[] = { };
99
100 static u8 tc2_ciphertext[] = { };
101
102
103 /* *INDENT-OFF* */
104 UNITTEST_REGISTER_CRYPTO_TEST (chacha20_poly1305_tc2) = {
105   .name = "CHACHA20-POLY1305 TC2",
106   .alg = VNET_CRYPTO_ALG_CHACHA20_POLY1305,
107   .key = TEST_DATA (tc2_key),
108   .iv = TEST_DATA (tc2_iv),
109   .aad = TEST_DATA (tc2_aad),
110   .tag = TEST_DATA (tc2_tag),
111   .plaintext = TEST_DATA (tc2_plaintext),
112   .ciphertext = TEST_DATA (tc2_ciphertext),
113 };
114 /* *INDENT-ON* */
115
116 static u8 tc3_key[] = {
117     0x4c, 0xf5, 0x96, 0x83, 0x38, 0xe6, 0xae, 0x7f,
118     0x2d, 0x29, 0x25, 0x76, 0xd5, 0x75, 0x27, 0x86,
119     0x91, 0x9a, 0x27, 0x7a, 0xfb, 0x46, 0xc5, 0xef,
120     0x94, 0x81, 0x79, 0x57, 0x14, 0x59, 0x40, 0x68
121 };
122
123 static u8 tc3_iv[] = {
124     0x00, 0x00, 0x00, 0x00, 0xca, 0xbf, 0x33, 0x71,
125     0x32, 0x45, 0x77, 0x8e
126 };
127
128 static u8 tc3_aad[] = { };
129
130 static u8 tc3_tag[] = {
131     0xea, 0xe0, 0x1e, 0x9e, 0x2c, 0x91, 0xaa, 0xe1,
132     0xdb, 0x5d, 0x99, 0x3f, 0x8a, 0xf7, 0x69, 0x92
133    };
134
135 static u8 tc3_plaintext[] = { };
136
137 static u8 tc3_ciphertext[] = { };
138
139
140 /* *INDENT-OFF* */
141 UNITTEST_REGISTER_CRYPTO_TEST (chacha20_poly1305_tc3) = {
142   .name = "CHACHA20-POLY1305 TC3",
143   .alg = VNET_CRYPTO_ALG_CHACHA20_POLY1305,
144   .key = TEST_DATA (tc3_key),
145   .iv = TEST_DATA (tc3_iv),
146   .aad = TEST_DATA (tc3_aad),
147   .tag = TEST_DATA (tc3_tag),
148   .plaintext = TEST_DATA (tc3_plaintext),
149   .ciphertext = TEST_DATA (tc3_ciphertext),
150 };
151 /* *INDENT-ON* */
152