1 /* Test vectors published in */
3 #include <vppinfra/clib.h>
4 #include <vnet/crypto/crypto.h>
5 #include <unittest/crypto/crypto.h>
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
14 static u8 tc1_iv[] = {
15 0x07, 0x00, 0x00, 0x00,
16 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47
19 static u8 tc1_aad[] = {
20 0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3,
21 0xc4, 0xc5, 0xc6, 0xc7
24 static u8 tc1_tag[] = {
25 0x1a, 0xe1, 0x0b, 0x59, 0x4f, 0x09, 0xe2, 0x6a,
26 0x7e, 0x90, 0x2e, 0xcb, 0xd0, 0x60, 0x06, 0x91
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,
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,
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),
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
84 static u8 tc2_iv[] = {
85 0x00, 0x00, 0x00, 0x00, 0x3d, 0x86, 0xb5, 0x6b,
86 0xc8, 0xa3, 0x1f, 0x1d
89 static u8 tc2_aad[] = {
90 0x33, 0x10, 0x41, 0x12, 0x1f, 0xf3, 0xd2, 0x6b
93 static u8 tc2_tag[] = {
94 0xdd, 0x6b, 0x3b, 0x82, 0xce, 0x5a, 0xbd, 0xd6,
95 0xa9, 0x35, 0x83, 0xd8, 0x8c, 0x3d, 0x85, 0x77
98 static u8 tc2_plaintext[] = { };
100 static u8 tc2_ciphertext[] = { };
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),
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
123 static u8 tc3_iv[] = {
124 0x00, 0x00, 0x00, 0x00, 0xca, 0xbf, 0x33, 0x71,
125 0x32, 0x45, 0x77, 0x8e
128 static u8 tc3_aad[] = { };
130 static u8 tc3_tag[] = {
131 0xea, 0xe0, 0x1e, 0x9e, 0x2c, 0x91, 0xaa, 0xe1,
132 0xdb, 0x5d, 0x99, 0x3f, 0x8a, 0xf7, 0x69, 0x92
135 static u8 tc3_plaintext[] = { };
137 static u8 tc3_ciphertext[] = { };
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),