]> git.ipfire.org Git - thirdparty/openssl.git/blame - test/rc5test.c
Update rc5test to use the test infrastructure
[thirdparty/openssl.git] / test / rc5test.c
CommitLineData
440e5d80 1/*
7f13fad2 2 * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
0f113f3e 3 *
440e5d80
RS
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
58964a49
RE
8 */
9
58964a49 10#include <string.h>
f5d7a031 11
55f78baf 12#include "../e_os.h"
7f13fad2
P
13#include "test_main.h"
14#include "testutil.h"
55f78baf 15
7f13fad2 16#ifndef OPENSSL_NO_RC5
0f113f3e 17# include <openssl/rc5.h>
58964a49 18
0f113f3e
MC
19static unsigned char RC5key[5][16] = {
20 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
22 {0x91, 0x5f, 0x46, 0x19, 0xbe, 0x41, 0xb2, 0x51,
23 0x63, 0x55, 0xa5, 0x01, 0x10, 0xa9, 0xce, 0x91},
24 {0x78, 0x33, 0x48, 0xe7, 0x5a, 0xeb, 0x0f, 0x2f,
25 0xd7, 0xb1, 0x69, 0xbb, 0x8d, 0xc1, 0x67, 0x87},
26 {0xdc, 0x49, 0xdb, 0x13, 0x75, 0xa5, 0x58, 0x4f,
27 0x64, 0x85, 0xb4, 0x13, 0xb5, 0xf1, 0x2b, 0xaf},
28 {0x52, 0x69, 0xf1, 0x49, 0xd4, 0x1b, 0xa0, 0x15,
29 0x24, 0x97, 0x57, 0x4d, 0x7f, 0x15, 0x31, 0x25},
30};
58964a49 31
0f113f3e
MC
32static unsigned char RC5plain[5][8] = {
33 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
34 {0x21, 0xA5, 0xDB, 0xEE, 0x15, 0x4B, 0x8F, 0x6D},
35 {0xF7, 0xC0, 0x13, 0xAC, 0x5B, 0x2B, 0x89, 0x52},
36 {0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92},
37 {0x65, 0xC1, 0x78, 0xB2, 0x84, 0xD1, 0x97, 0xCC},
38};
58964a49 39
0f113f3e
MC
40static unsigned char RC5cipher[5][8] = {
41 {0x21, 0xA5, 0xDB, 0xEE, 0x15, 0x4B, 0x8F, 0x6D},
42 {0xF7, 0xC0, 0x13, 0xAC, 0x5B, 0x2B, 0x89, 0x52},
43 {0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92},
44 {0x65, 0xC1, 0x78, 0xB2, 0x84, 0xD1, 0x97, 0xCC},
45 {0xEB, 0x44, 0xE4, 0x15, 0xDA, 0x31, 0x98, 0x24},
46};
58964a49 47
0f113f3e
MC
48# define RC5_CBC_NUM 27
49static unsigned char rc5_cbc_cipher[RC5_CBC_NUM][8] = {
50 {0x7a, 0x7b, 0xba, 0x4d, 0x79, 0x11, 0x1d, 0x1e},
51 {0x79, 0x7b, 0xba, 0x4d, 0x78, 0x11, 0x1d, 0x1e},
52 {0x7a, 0x7b, 0xba, 0x4d, 0x79, 0x11, 0x1d, 0x1f},
53 {0x7a, 0x7b, 0xba, 0x4d, 0x79, 0x11, 0x1d, 0x1f},
54 {0x8b, 0x9d, 0xed, 0x91, 0xce, 0x77, 0x94, 0xa6},
55 {0x2f, 0x75, 0x9f, 0xe7, 0xad, 0x86, 0xa3, 0x78},
56 {0xdc, 0xa2, 0x69, 0x4b, 0xf4, 0x0e, 0x07, 0x88},
57 {0xdc, 0xa2, 0x69, 0x4b, 0xf4, 0x0e, 0x07, 0x88},
58 {0xdc, 0xfe, 0x09, 0x85, 0x77, 0xec, 0xa5, 0xff},
59 {0x96, 0x46, 0xfb, 0x77, 0x63, 0x8f, 0x9c, 0xa8},
60 {0xb2, 0xb3, 0x20, 0x9d, 0xb6, 0x59, 0x4d, 0xa4},
61 {0x54, 0x5f, 0x7f, 0x32, 0xa5, 0xfc, 0x38, 0x36},
62 {0x82, 0x85, 0xe7, 0xc1, 0xb5, 0xbc, 0x74, 0x02},
63 {0xfc, 0x58, 0x6f, 0x92, 0xf7, 0x08, 0x09, 0x34},
64 {0xcf, 0x27, 0x0e, 0xf9, 0x71, 0x7f, 0xf7, 0xc4},
65 {0xe4, 0x93, 0xf1, 0xc1, 0xbb, 0x4d, 0x6e, 0x8c},
66 {0x5c, 0x4c, 0x04, 0x1e, 0x0f, 0x21, 0x7a, 0xc3},
67 {0x92, 0x1f, 0x12, 0x48, 0x53, 0x73, 0xb4, 0xf7},
68 {0x5b, 0xa0, 0xca, 0x6b, 0xbe, 0x7f, 0x5f, 0xad},
69 {0xc5, 0x33, 0x77, 0x1c, 0xd0, 0x11, 0x0e, 0x63},
70 {0x29, 0x4d, 0xdb, 0x46, 0xb3, 0x27, 0x8d, 0x60},
71 {0xda, 0xd6, 0xbd, 0xa9, 0xdf, 0xe8, 0xf7, 0xe8},
72 {0x97, 0xe0, 0x78, 0x78, 0x37, 0xed, 0x31, 0x7f},
73 {0x78, 0x75, 0xdb, 0xf6, 0x73, 0x8c, 0x64, 0x78},
74 {0x8f, 0x34, 0xc3, 0xc6, 0x81, 0xc9, 0x96, 0x95},
75 {0x7c, 0xb3, 0xf1, 0xdf, 0x34, 0xf9, 0x48, 0x11},
76 {0x7f, 0xd1, 0xa0, 0x23, 0xa5, 0xbb, 0xa2, 0x17},
77};
58964a49 78
0f113f3e
MC
79static unsigned char rc5_cbc_key[RC5_CBC_NUM][17] = {
80 {1, 0x00},
81 {1, 0x00},
82 {1, 0x00},
83 {1, 0x00},
84 {1, 0x00},
85 {1, 0x11},
86 {1, 0x00},
87 {4, 0x00, 0x00, 0x00, 0x00},
88 {1, 0x00},
89 {1, 0x00},
90 {1, 0x00},
91 {1, 0x00},
92 {4, 0x01, 0x02, 0x03, 0x04},
93 {4, 0x01, 0x02, 0x03, 0x04},
94 {4, 0x01, 0x02, 0x03, 0x04},
95 {8, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
96 {8, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
97 {8, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
98 {8, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
99 {16, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
100 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
101 {16, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
102 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
103 {16, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
104 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
105 {5, 0x01, 0x02, 0x03, 0x04, 0x05},
106 {5, 0x01, 0x02, 0x03, 0x04, 0x05},
107 {5, 0x01, 0x02, 0x03, 0x04, 0x05},
108 {5, 0x01, 0x02, 0x03, 0x04, 0x05},
109 {5, 0x01, 0x02, 0x03, 0x04, 0x05},
110};
58964a49 111
0f113f3e
MC
112static unsigned char rc5_cbc_plain[RC5_CBC_NUM][8] = {
113 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
114 {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
115 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
116 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
117 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
118 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
119 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
120 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
121 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
122 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
123 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
124 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
125 {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
126 {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
127 {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
128 {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
129 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
130 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
131 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
132 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
133 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
134 {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80},
135 {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
136 {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
137 {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08},
138 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
139 {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x01},
140};
58964a49 141
0f113f3e
MC
142static int rc5_cbc_rounds[RC5_CBC_NUM] = {
143 0, 0, 0, 0, 0, 1, 2, 2,
144 8, 8, 12, 16, 8, 12, 16, 12,
145 8, 12, 16, 8, 12, 16, 12, 8,
146 8, 8, 8,
147};
58964a49 148
0f113f3e
MC
149static unsigned char rc5_cbc_iv[RC5_CBC_NUM][8] = {
150 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
151 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
152 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
153 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
154 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
155 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
156 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
157 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
158 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
159 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
160 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
161 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
162 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
163 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
164 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
165 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
166 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
167 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
168 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
169 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
170 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
171 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
172 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
173 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
174 {0x78, 0x75, 0xdb, 0xf6, 0x73, 0x8c, 0x64, 0x78},
175 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
176 {0x7c, 0xb3, 0xf1, 0xdf, 0x34, 0xf9, 0x48, 0x11},
177};
58964a49 178
7f13fad2 179static int test_rc5_ecb(int n)
0f113f3e 180{
7f13fad2 181 int testresult = 1;
0f113f3e 182 RC5_32_KEY key;
7f13fad2 183 unsigned char buf[8], buf2[8];
58964a49 184
7f13fad2 185 RC5_32_set_key(&key, 16, &RC5key[n][0], 12);
58964a49 186
7f13fad2
P
187 RC5_32_ecb_encrypt(&RC5plain[n][0], buf, &key, RC5_ENCRYPT);
188 if (!TEST_mem_eq(&RC5cipher[n][0], sizeof(RC5cipher[0]), buf, sizeof(buf)))
189 testresult = 0;
58964a49 190
7f13fad2
P
191 RC5_32_ecb_encrypt(buf, buf2, &key, RC5_DECRYPT);
192 if (!TEST_mem_eq(&RC5plain[n][0], sizeof(RC5cipher[0]), buf2, sizeof(buf2)))
193 testresult = 0;
58964a49 194
7f13fad2
P
195 return testresult;
196}
58964a49 197
7f13fad2
P
198static int test_rc5_cbc(int n)
199{
200 int testresult = 1;
201 int i;
202 RC5_32_KEY key;
203 unsigned char buf[8], buf2[8], ivb[8];
204
205 i = rc5_cbc_rounds[n];
206 if (i >= 8) {
207 RC5_32_set_key(&key, rc5_cbc_key[n][0], &rc5_cbc_key[n][1], i);
58964a49 208
7f13fad2
P
209 memcpy(ivb, &rc5_cbc_iv[n][0], 8);
210 RC5_32_cbc_encrypt(&rc5_cbc_plain[n][0], buf, 8,
211 &key, &ivb[0], RC5_ENCRYPT);
58964a49 212
7f13fad2
P
213 if (!TEST_mem_eq(&rc5_cbc_cipher[n][0], sizeof(rc5_cbc_cipher[0]),
214 buf, sizeof(buf)))
215 testresult = 0;
58964a49 216
7f13fad2
P
217 memcpy(ivb, &rc5_cbc_iv[n][0], 8);
218 RC5_32_cbc_encrypt(buf, buf2, 8, &key, &ivb[0], RC5_DECRYPT);
219 if (!TEST_mem_eq(&rc5_cbc_plain[n][0], sizeof(rc5_cbc_plain[0]),
220 buf2, sizeof(buf2)) != 0)
221 testresult = 0;
0f113f3e 222 }
58964a49 223
7f13fad2 224 return testresult;
0f113f3e 225}
7f13fad2 226#endif
58964a49 227
7f13fad2
P
228void register_tests(void)
229{
230#ifndef OPENSSL_NO_RC5
231 ADD_ALL_TESTS(test_rc5_ecb, OSSL_NELEM(RC5key));
232 ADD_ALL_TESTS(test_rc5_cbc, RC5_CBC_NUM);
f5d7a031 233#endif
7f13fad2 234}