FD.io VPP  v20.09-64-g4f7b92f0a
Vector Packet Processing
chacha20_poly1305.c
Go to the documentation of this file.
1 /* Test vectors published in */
2 
3 #include <vppinfra/clib.h>
4 #include <vnet/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 
static u8 tc3_aad[]
UNITTEST_REGISTER_CRYPTO_TEST(chacha20_poly1305_tc1)
unsigned char u8
Definition: types.h:56
static u8 tc3_plaintext[]
static u8 tc2_key[]
static u8 tc3_ciphertext[]
static u8 tc3_key[]
static u8 tc1_plaintext[]
static u8 tc2_iv[]
static u8 tc2_aad[]
static u8 tc1_key[]
static u8 tc1_aad[]
static u8 tc2_plaintext[]
static u8 tc1_tag[]
static u8 tc3_iv[]
static u8 tc2_tag[]
static u8 tc1_ciphertext[]
static u8 tc1_iv[]
#define TEST_DATA(n)
Definition: crypto.h:63
static u8 tc2_ciphertext[]
static u8 tc3_tag[]