FD.io VPP  v21.06-3-gbb25fbf28
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 
UNITTEST_REGISTER_CRYPTO_TEST
UNITTEST_REGISTER_CRYPTO_TEST(chacha20_poly1305_tc1)
crypto.h
tc3_tag
static u8 tc3_tag[]
Definition: chacha20_poly1305.c:130
tc3_aad
static u8 tc3_aad[]
Definition: chacha20_poly1305.c:128
tc1_iv
static u8 tc1_iv[]
Definition: chacha20_poly1305.c:14
clib.h
tc1_plaintext
static u8 tc1_plaintext[]
Definition: chacha20_poly1305.c:29
tc1_aad
static u8 tc1_aad[]
Definition: chacha20_poly1305.c:19
tc3_key
static u8 tc3_key[]
Definition: chacha20_poly1305.c:116
tc2_iv
static u8 tc2_iv[]
Definition: chacha20_poly1305.c:84
tc2_key
static u8 tc2_key[]
Definition: chacha20_poly1305.c:77
tc3_ciphertext
static u8 tc3_ciphertext[]
Definition: chacha20_poly1305.c:137
tc1_key
static u8 tc1_key[]
Definition: chacha20_poly1305.c:7
tc2_aad
static u8 tc2_aad[]
Definition: chacha20_poly1305.c:89
tc3_plaintext
static u8 tc3_plaintext[]
Definition: chacha20_poly1305.c:135
tc2_plaintext
static u8 tc2_plaintext[]
Definition: chacha20_poly1305.c:98
tc1_tag
static u8 tc1_tag[]
Definition: chacha20_poly1305.c:24
tc1_ciphertext
static u8 tc1_ciphertext[]
Definition: chacha20_poly1305.c:46
crypto.h
u8
unsigned char u8
Definition: types.h:56
tc3_iv
static u8 tc3_iv[]
Definition: chacha20_poly1305.c:123
tc2_tag
static u8 tc2_tag[]
Definition: chacha20_poly1305.c:93
TEST_DATA
#define TEST_DATA(n)
Definition: crypto.h:63
tc2_ciphertext
static u8 tc2_ciphertext[]
Definition: chacha20_poly1305.c:100