summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/des/destest.c
diff options
context:
space:
mode:
authorryker <>1998-10-05 20:13:15 +0000
committerryker <>1998-10-05 20:13:15 +0000
commit536c76cbb863bab152f19842ab88772c01e922c7 (patch)
treedfecec371a097b73d605aae665887946d9982219 /src/lib/libcrypto/des/destest.c
downloadopenbsd-536c76cbb863bab152f19842ab88772c01e922c7.tar.gz
openbsd-536c76cbb863bab152f19842ab88772c01e922c7.tar.bz2
openbsd-536c76cbb863bab152f19842ab88772c01e922c7.zip
Import of SSLeay-0.9.0b with RSA and IDEA stubbed + OpenBSD build
functionality for shared libs. Note that routines such as sslv2_init and friends that use RSA will not work due to lack of RSA in this library. Needs documentation and help from ports for easy upgrade to full functionality where legally possible.
Diffstat (limited to 'src/lib/libcrypto/des/destest.c')
-rw-r--r--src/lib/libcrypto/des/destest.c882
1 files changed, 882 insertions, 0 deletions
diff --git a/src/lib/libcrypto/des/destest.c b/src/lib/libcrypto/des/destest.c
new file mode 100644
index 0000000000..620c13ba6f
--- /dev/null
+++ b/src/lib/libcrypto/des/destest.c
@@ -0,0 +1,882 @@
1/* crypto/des/destest.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#if defined(WIN32) || defined(WIN16) || defined(WINDOWS)
60#ifndef MSDOS
61#define MSDOS
62#endif
63#endif
64
65#include <stdio.h>
66#include <stdlib.h>
67#ifndef MSDOS
68#include <unistd.h>
69#else
70#include <io.h>
71#endif
72#include <string.h>
73#include "des.h"
74
75/* tisk tisk - the test keys don't all have odd parity :-( */
76/* test data */
77#define NUM_TESTS 34
78static unsigned char key_data[NUM_TESTS][8]={
79 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
80 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
81 {0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
82 {0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},
83 {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
84 {0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},
85 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
86 {0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10},
87 {0x7C,0xA1,0x10,0x45,0x4A,0x1A,0x6E,0x57},
88 {0x01,0x31,0xD9,0x61,0x9D,0xC1,0x37,0x6E},
89 {0x07,0xA1,0x13,0x3E,0x4A,0x0B,0x26,0x86},
90 {0x38,0x49,0x67,0x4C,0x26,0x02,0x31,0x9E},
91 {0x04,0xB9,0x15,0xBA,0x43,0xFE,0xB5,0xB6},
92 {0x01,0x13,0xB9,0x70,0xFD,0x34,0xF2,0xCE},
93 {0x01,0x70,0xF1,0x75,0x46,0x8F,0xB5,0xE6},
94 {0x43,0x29,0x7F,0xAD,0x38,0xE3,0x73,0xFE},
95 {0x07,0xA7,0x13,0x70,0x45,0xDA,0x2A,0x16},
96 {0x04,0x68,0x91,0x04,0xC2,0xFD,0x3B,0x2F},
97 {0x37,0xD0,0x6B,0xB5,0x16,0xCB,0x75,0x46},
98 {0x1F,0x08,0x26,0x0D,0x1A,0xC2,0x46,0x5E},
99 {0x58,0x40,0x23,0x64,0x1A,0xBA,0x61,0x76},
100 {0x02,0x58,0x16,0x16,0x46,0x29,0xB0,0x07},
101 {0x49,0x79,0x3E,0xBC,0x79,0xB3,0x25,0x8F},
102 {0x4F,0xB0,0x5E,0x15,0x15,0xAB,0x73,0xA7},
103 {0x49,0xE9,0x5D,0x6D,0x4C,0xA2,0x29,0xBF},
104 {0x01,0x83,0x10,0xDC,0x40,0x9B,0x26,0xD6},
105 {0x1C,0x58,0x7F,0x1C,0x13,0x92,0x4F,0xEF},
106 {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},
107 {0x1F,0x1F,0x1F,0x1F,0x0E,0x0E,0x0E,0x0E},
108 {0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE},
109 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
110 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
111 {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
112 {0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10}};
113
114static unsigned char plain_data[NUM_TESTS][8]={
115 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
116 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
117 {0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x01},
118 {0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},
119 {0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},
120 {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
121 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
122 {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
123 {0x01,0xA1,0xD6,0xD0,0x39,0x77,0x67,0x42},
124 {0x5C,0xD5,0x4C,0xA8,0x3D,0xEF,0x57,0xDA},
125 {0x02,0x48,0xD4,0x38,0x06,0xF6,0x71,0x72},
126 {0x51,0x45,0x4B,0x58,0x2D,0xDF,0x44,0x0A},
127 {0x42,0xFD,0x44,0x30,0x59,0x57,0x7F,0xA2},
128 {0x05,0x9B,0x5E,0x08,0x51,0xCF,0x14,0x3A},
129 {0x07,0x56,0xD8,0xE0,0x77,0x47,0x61,0xD2},
130 {0x76,0x25,0x14,0xB8,0x29,0xBF,0x48,0x6A},
131 {0x3B,0xDD,0x11,0x90,0x49,0x37,0x28,0x02},
132 {0x26,0x95,0x5F,0x68,0x35,0xAF,0x60,0x9A},
133 {0x16,0x4D,0x5E,0x40,0x4F,0x27,0x52,0x32},
134 {0x6B,0x05,0x6E,0x18,0x75,0x9F,0x5C,0xCA},
135 {0x00,0x4B,0xD6,0xEF,0x09,0x17,0x60,0x62},
136 {0x48,0x0D,0x39,0x00,0x6E,0xE7,0x62,0xF2},
137 {0x43,0x75,0x40,0xC8,0x69,0x8F,0x3C,0xFA},
138 {0x07,0x2D,0x43,0xA0,0x77,0x07,0x52,0x92},
139 {0x02,0xFE,0x55,0x77,0x81,0x17,0xF1,0x2A},
140 {0x1D,0x9D,0x5C,0x50,0x18,0xF7,0x28,0xC2},
141 {0x30,0x55,0x32,0x28,0x6D,0x6F,0x29,0x5A},
142 {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
143 {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
144 {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
145 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
146 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
147 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
148 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}};
149
150static unsigned char cipher_data[NUM_TESTS][8]={
151 {0x8C,0xA6,0x4D,0xE9,0xC1,0xB1,0x23,0xA7},
152 {0x73,0x59,0xB2,0x16,0x3E,0x4E,0xDC,0x58},
153 {0x95,0x8E,0x6E,0x62,0x7A,0x05,0x55,0x7B},
154 {0xF4,0x03,0x79,0xAB,0x9E,0x0E,0xC5,0x33},
155 {0x17,0x66,0x8D,0xFC,0x72,0x92,0x53,0x2D},
156 {0x8A,0x5A,0xE1,0xF8,0x1A,0xB8,0xF2,0xDD},
157 {0x8C,0xA6,0x4D,0xE9,0xC1,0xB1,0x23,0xA7},
158 {0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4},
159 {0x69,0x0F,0x5B,0x0D,0x9A,0x26,0x93,0x9B},
160 {0x7A,0x38,0x9D,0x10,0x35,0x4B,0xD2,0x71},
161 {0x86,0x8E,0xBB,0x51,0xCA,0xB4,0x59,0x9A},
162 {0x71,0x78,0x87,0x6E,0x01,0xF1,0x9B,0x2A},
163 {0xAF,0x37,0xFB,0x42,0x1F,0x8C,0x40,0x95},
164 {0x86,0xA5,0x60,0xF1,0x0E,0xC6,0xD8,0x5B},
165 {0x0C,0xD3,0xDA,0x02,0x00,0x21,0xDC,0x09},
166 {0xEA,0x67,0x6B,0x2C,0xB7,0xDB,0x2B,0x7A},
167 {0xDF,0xD6,0x4A,0x81,0x5C,0xAF,0x1A,0x0F},
168 {0x5C,0x51,0x3C,0x9C,0x48,0x86,0xC0,0x88},
169 {0x0A,0x2A,0xEE,0xAE,0x3F,0xF4,0xAB,0x77},
170 {0xEF,0x1B,0xF0,0x3E,0x5D,0xFA,0x57,0x5A},
171 {0x88,0xBF,0x0D,0xB6,0xD7,0x0D,0xEE,0x56},
172 {0xA1,0xF9,0x91,0x55,0x41,0x02,0x0B,0x56},
173 {0x6F,0xBF,0x1C,0xAF,0xCF,0xFD,0x05,0x56},
174 {0x2F,0x22,0xE4,0x9B,0xAB,0x7C,0xA1,0xAC},
175 {0x5A,0x6B,0x61,0x2C,0xC2,0x6C,0xCE,0x4A},
176 {0x5F,0x4C,0x03,0x8E,0xD1,0x2B,0x2E,0x41},
177 {0x63,0xFA,0xC0,0xD0,0x34,0xD9,0xF7,0x93},
178 {0x61,0x7B,0x3A,0x0C,0xE8,0xF0,0x71,0x00},
179 {0xDB,0x95,0x86,0x05,0xF8,0xC8,0xC6,0x06},
180 {0xED,0xBF,0xD1,0xC6,0x6C,0x29,0xCC,0xC7},
181 {0x35,0x55,0x50,0xB2,0x15,0x0E,0x24,0x51},
182 {0xCA,0xAA,0xAF,0x4D,0xEA,0xF1,0xDB,0xAE},
183 {0xD5,0xD4,0x4F,0xF7,0x20,0x68,0x3D,0x0D},
184 {0x2A,0x2B,0xB0,0x08,0xDF,0x97,0xC2,0xF2}};
185
186static unsigned char cipher_ecb2[NUM_TESTS-1][8]={
187 {0x92,0x95,0xB5,0x9B,0xB3,0x84,0x73,0x6E},
188 {0x19,0x9E,0x9D,0x6D,0xF3,0x9A,0xA8,0x16},
189 {0x2A,0x4B,0x4D,0x24,0x52,0x43,0x84,0x27},
190 {0x35,0x84,0x3C,0x01,0x9D,0x18,0xC5,0xB6},
191 {0x4A,0x5B,0x2F,0x42,0xAA,0x77,0x19,0x25},
192 {0xA0,0x6B,0xA9,0xB8,0xCA,0x5B,0x17,0x8A},
193 {0xAB,0x9D,0xB7,0xFB,0xED,0x95,0xF2,0x74},
194 {0x3D,0x25,0x6C,0x23,0xA7,0x25,0x2F,0xD6},
195 {0xB7,0x6F,0xAB,0x4F,0xBD,0xBD,0xB7,0x67},
196 {0x8F,0x68,0x27,0xD6,0x9C,0xF4,0x1A,0x10},
197 {0x82,0x57,0xA1,0xD6,0x50,0x5E,0x81,0x85},
198 {0xA2,0x0F,0x0A,0xCD,0x80,0x89,0x7D,0xFA},
199 {0xCD,0x2A,0x53,0x3A,0xDB,0x0D,0x7E,0xF3},
200 {0xD2,0xC2,0xBE,0x27,0xE8,0x1B,0x68,0xE3},
201 {0xE9,0x24,0xCF,0x4F,0x89,0x3C,0x5B,0x0A},
202 {0xA7,0x18,0xC3,0x9F,0xFA,0x9F,0xD7,0x69},
203 {0x77,0x2C,0x79,0xB1,0xD2,0x31,0x7E,0xB1},
204 {0x49,0xAB,0x92,0x7F,0xD0,0x22,0x00,0xB7},
205 {0xCE,0x1C,0x6C,0x7D,0x85,0xE3,0x4A,0x6F},
206 {0xBE,0x91,0xD6,0xE1,0x27,0xB2,0xE9,0x87},
207 {0x70,0x28,0xAE,0x8F,0xD1,0xF5,0x74,0x1A},
208 {0xAA,0x37,0x80,0xBB,0xF3,0x22,0x1D,0xDE},
209 {0xA6,0xC4,0xD2,0x5E,0x28,0x93,0xAC,0xB3},
210 {0x22,0x07,0x81,0x5A,0xE4,0xB7,0x1A,0xAD},
211 {0xDC,0xCE,0x05,0xE7,0x07,0xBD,0xF5,0x84},
212 {0x26,0x1D,0x39,0x2C,0xB3,0xBA,0xA5,0x85},
213 {0xB4,0xF7,0x0F,0x72,0xFB,0x04,0xF0,0xDC},
214 {0x95,0xBA,0xA9,0x4E,0x87,0x36,0xF2,0x89},
215 {0xD4,0x07,0x3A,0xF1,0x5A,0x17,0x82,0x0E},
216 {0xEF,0x6F,0xAF,0xA7,0x66,0x1A,0x7E,0x89},
217 {0xC1,0x97,0xF5,0x58,0x74,0x8A,0x20,0xE7},
218 {0x43,0x34,0xCF,0xDA,0x22,0xC4,0x86,0xC8},
219 {0x08,0xD7,0xB4,0xFB,0x62,0x9D,0x08,0x85}};
220
221static unsigned char cbc_key [8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
222static unsigned char cbc2_key[8]={0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x96,0x87};
223static unsigned char cbc3_key[8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
224static unsigned char cbc_iv [8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
225/* Changed the following text constant to binary so it will work on ebcdic
226 * machines :-) */
227/* static char cbc_data[40]="7654321 Now is the time for \0001"; */
228static char cbc_data[40]={
229 0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x20,
230 0x4E,0x6F,0x77,0x20,0x69,0x73,0x20,0x74,
231 0x68,0x65,0x20,0x74,0x69,0x6D,0x65,0x20,
232 0x66,0x6F,0x72,0x20,0x00,0x31,0x00,0x00,
233 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
234 };
235
236static unsigned char cbc_ok[32]={
237 0xcc,0xd1,0x73,0xff,0xab,0x20,0x39,0xf4,
238 0xac,0xd8,0xae,0xfd,0xdf,0xd8,0xa1,0xeb,
239 0x46,0x8e,0x91,0x15,0x78,0x88,0xba,0x68,
240 0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
241
242static unsigned char xcbc_ok[32]={
243 0x86,0x74,0x81,0x0D,0x61,0xA4,0xA5,0x48,
244 0xB9,0x93,0x03,0xE1,0xB8,0xBB,0xBD,0xBD,
245 0x64,0x30,0x0B,0xB9,0x06,0x65,0x81,0x76,
246 0x04,0x1D,0x77,0x62,0x17,0xCA,0x2B,0xD2,
247 };
248
249static unsigned char cbc3_ok[32]={
250 0x3F,0xE3,0x01,0xC9,0x62,0xAC,0x01,0xD0,
251 0x22,0x13,0x76,0x3C,0x1C,0xBD,0x4C,0xDC,
252 0x79,0x96,0x57,0xC0,0x64,0xEC,0xF5,0xD4,
253 0x1C,0x67,0x38,0x12,0xCF,0xDE,0x96,0x75};
254
255static unsigned char pcbc_ok[32]={
256 0xcc,0xd1,0x73,0xff,0xab,0x20,0x39,0xf4,
257 0x6d,0xec,0xb4,0x70,0xa0,0xe5,0x6b,0x15,
258 0xae,0xa6,0xbf,0x61,0xed,0x7d,0x9c,0x9f,
259 0xf7,0x17,0x46,0x3b,0x8a,0xb3,0xcc,0x88};
260
261static unsigned char cfb_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
262static unsigned char cfb_iv[8]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
263static unsigned char cfb_buf1[40],cfb_buf2[40],cfb_tmp[8];
264static unsigned char plain[24]=
265 {
266 0x4e,0x6f,0x77,0x20,0x69,0x73,
267 0x20,0x74,0x68,0x65,0x20,0x74,
268 0x69,0x6d,0x65,0x20,0x66,0x6f,
269 0x72,0x20,0x61,0x6c,0x6c,0x20
270 };
271static unsigned char cfb_cipher8[24]= {
272 0xf3,0x1f,0xda,0x07,0x01,0x14, 0x62,0xee,0x18,0x7f,0x43,0xd8,
273 0x0a,0x7c,0xd9,0xb5,0xb0,0xd2, 0x90,0xda,0x6e,0x5b,0x9a,0x87 };
274static unsigned char cfb_cipher16[24]={
275 0xF3,0x09,0x87,0x87,0x7F,0x57, 0xF7,0x3C,0x36,0xB6,0xDB,0x70,
276 0xD8,0xD5,0x34,0x19,0xD3,0x86, 0xB2,0x23,0xB7,0xB2,0xAD,0x1B };
277static unsigned char cfb_cipher32[24]={
278 0xF3,0x09,0x62,0x49,0xA4,0xDF, 0xA4,0x9F,0x33,0xDC,0x7B,0xAD,
279 0x4C,0xC8,0x9F,0x64,0xE4,0x53, 0xE5,0xEC,0x67,0x20,0xDA,0xB6 };
280static unsigned char cfb_cipher48[24]={
281 0xF3,0x09,0x62,0x49,0xC7,0xF4, 0x30,0xB5,0x15,0xEC,0xBB,0x85,
282 0x97,0x5A,0x13,0x8C,0x68,0x60, 0xE2,0x38,0x34,0x3C,0xDC,0x1F };
283static unsigned char cfb_cipher64[24]={
284 0xF3,0x09,0x62,0x49,0xC7,0xF4, 0x6E,0x51,0xA6,0x9E,0x83,0x9B,
285 0x1A,0x92,0xF7,0x84,0x03,0x46, 0x71,0x33,0x89,0x8E,0xA6,0x22 };
286
287static unsigned char ofb_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
288static unsigned char ofb_iv[8]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
289static unsigned char ofb_buf1[24],ofb_buf2[24],ofb_tmp[8];
290static unsigned char ofb_cipher[24]=
291 {
292 0xf3,0x09,0x62,0x49,0xc7,0xf4,0x6e,0x51,
293 0x35,0xf2,0x4a,0x24,0x2e,0xeb,0x3d,0x3f,
294 0x3d,0x6d,0x5b,0xe3,0x25,0x5a,0xf8,0xc3
295 };
296
297DES_LONG cbc_cksum_ret=0xB462FEF7L;
298unsigned char cbc_cksum_data[8]={0x1D,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
299
300#ifndef NOPROTO
301static char *pt(unsigned char *p);
302static int cfb_test(int bits, unsigned char *cfb_cipher);
303static int cfb64_test(unsigned char *cfb_cipher);
304static int ede_cfb64_test(unsigned char *cfb_cipher);
305#else
306static char *pt();
307static int cfb_test();
308static int cfb64_test();
309static int ede_cfb64_test();
310#endif
311
312int main(argc,argv)
313int argc;
314char *argv[];
315 {
316 int i,j,err=0;
317 des_cblock in,out,outin,iv3;
318 des_key_schedule ks,ks2,ks3;
319 unsigned char cbc_in[40];
320 unsigned char cbc_out[40];
321 DES_LONG cs;
322 unsigned char qret[4][4],cret[8];
323 DES_LONG lqret[4];
324 int num;
325 char *str;
326
327 printf("Doing ecb\n");
328 for (i=0; i<NUM_TESTS; i++)
329 {
330 if ((j=des_key_sched((C_Block *)(key_data[i]),ks)) != 0)
331 {
332 printf("Key error %2d:%d\n",i+1,j);
333 err=1;
334 }
335 memcpy(in,plain_data[i],8);
336 memset(out,0,8);
337 memset(outin,0,8);
338 des_ecb_encrypt((C_Block *)in,(C_Block *)out,ks,DES_ENCRYPT);
339 des_ecb_encrypt((C_Block *)out,(C_Block *)outin,ks,DES_DECRYPT);
340
341 if (memcmp(out,cipher_data[i],8) != 0)
342 {
343 printf("Encryption error %2d\nk=%s p=%s o=%s act=%s\n",
344 i+1,pt(key_data[i]),pt(in),pt(cipher_data[i]),
345 pt(out));
346 err=1;
347 }
348 if (memcmp(in,outin,8) != 0)
349 {
350 printf("Decryption error %2d\nk=%s p=%s o=%s act=%s\n",
351 i+1,pt(key_data[i]),pt(out),pt(in),pt(outin));
352 err=1;
353 }
354 }
355
356#ifndef LIBDES_LIT
357 printf("Doing ede ecb\n");
358 for (i=0; i<(NUM_TESTS-1); i++)
359 {
360 if ((j=des_key_sched((C_Block *)(key_data[i]),ks)) != 0)
361 {
362 err=1;
363 printf("Key error %2d:%d\n",i+1,j);
364 }
365 if ((j=des_key_sched((C_Block *)(key_data[i+1]),ks2)) != 0)
366 {
367 printf("Key error %2d:%d\n",i+2,j);
368 err=1;
369 }
370 if ((j=des_key_sched((C_Block *)(key_data[i+2]),ks3)) != 0)
371 {
372 printf("Key error %2d:%d\n",i+3,j);
373 err=1;
374 }
375 memcpy(in,plain_data[i],8);
376 memset(out,0,8);
377 memset(outin,0,8);
378 des_ecb2_encrypt((C_Block *)in,(C_Block *)out,ks,ks2,
379 DES_ENCRYPT);
380 des_ecb2_encrypt((C_Block *)out,(C_Block *)outin,ks,ks2,
381 DES_DECRYPT);
382
383 if (memcmp(out,cipher_ecb2[i],8) != 0)
384 {
385 printf("Encryption error %2d\nk=%s p=%s o=%s act=%s\n",
386 i+1,pt(key_data[i]),pt(in),pt(cipher_ecb2[i]),
387 pt(out));
388 err=1;
389 }
390 if (memcmp(in,outin,8) != 0)
391 {
392 printf("Decryption error %2d\nk=%s p=%s o=%s act=%s\n",
393 i+1,pt(key_data[i]),pt(out),pt(in),pt(outin));
394 err=1;
395 }
396 }
397#endif
398
399 printf("Doing cbc\n");
400 if ((j=des_key_sched((C_Block *)cbc_key,ks)) != 0)
401 {
402 printf("Key error %d\n",j);
403 err=1;
404 }
405 memset(cbc_out,0,40);
406 memset(cbc_in,0,40);
407 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
408 des_ncbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out,
409 (long)strlen((char *)cbc_data)+1,ks,
410 (C_Block *)iv3,DES_ENCRYPT);
411 if (memcmp(cbc_out,cbc_ok,32) != 0)
412 printf("cbc_encrypt encrypt error\n");
413
414 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
415 des_ncbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in,
416 (long)strlen((char *)cbc_data)+1,ks,
417 (C_Block *)iv3,DES_DECRYPT);
418 if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)) != 0)
419 {
420 printf("cbc_encrypt decrypt error\n");
421 err=1;
422 }
423
424#ifndef LIBDES_LIT
425 printf("Doing desx cbc\n");
426 if ((j=des_key_sched((C_Block *)cbc_key,ks)) != 0)
427 {
428 printf("Key error %d\n",j);
429 err=1;
430 }
431 memset(cbc_out,0,40);
432 memset(cbc_in,0,40);
433 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
434 des_xcbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out,
435 (long)strlen((char *)cbc_data)+1,ks,
436 (C_Block *)iv3,
437 (C_Block *)cbc2_key, (C_Block *)cbc3_key, DES_ENCRYPT);
438 if (memcmp(cbc_out,xcbc_ok,32) != 0)
439 {
440 printf("des_xcbc_encrypt encrypt error\n");
441 }
442 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
443 des_xcbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in,
444 (long)strlen((char *)cbc_data)+1,ks,
445 (C_Block *)iv3,
446 (C_Block *)cbc2_key, (C_Block *)cbc3_key, DES_DECRYPT);
447 if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
448 {
449 printf("des_xcbc_encrypt decrypt error\n");
450 err=1;
451 }
452#endif
453
454 printf("Doing ede cbc\n");
455 if ((j=des_key_sched((C_Block *)cbc_key,ks)) != 0)
456 {
457 printf("Key error %d\n",j);
458 err=1;
459 }
460 if ((j=des_key_sched((C_Block *)cbc2_key,ks2)) != 0)
461 {
462 printf("Key error %d\n",j);
463 err=1;
464 }
465 if ((j=des_key_sched((C_Block *)cbc3_key,ks3)) != 0)
466 {
467 printf("Key error %d\n",j);
468 err=1;
469 }
470 memset(cbc_out,0,40);
471 memset(cbc_in,0,40);
472 i=strlen((char *)cbc_data)+1;
473 /* i=((i+7)/8)*8; */
474 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
475
476 des_ede3_cbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out,
477 16L,ks,ks2,ks3,(C_Block *)iv3,DES_ENCRYPT);
478 des_ede3_cbc_encrypt((C_Block *)&(cbc_data[16]),
479 (C_Block *)&(cbc_out[16]),
480 (long)i-16,ks,ks2,ks3,(C_Block *)iv3,DES_ENCRYPT);
481 if (memcmp(cbc_out,cbc3_ok,
482 (unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0)
483 {
484 printf("des_ede3_cbc_encrypt encrypt error\n");
485 err=1;
486 }
487
488 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
489 des_ede3_cbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in,
490 (long)i,ks,ks2,ks3,(C_Block *)iv3,DES_DECRYPT);
491 if (memcmp(cbc_in,cbc_data,strlen(cbc_data)+1) != 0)
492 {
493 printf("des_ede3_cbc_encrypt decrypt error\n");
494 err=1;
495 }
496
497#ifndef LIBDES_LIT
498 printf("Doing pcbc\n");
499 if ((j=des_key_sched((C_Block *)cbc_key,ks)) != 0)
500 {
501 printf("Key error %d\n",j);
502 err=1;
503 }
504 memset(cbc_out,0,40);
505 memset(cbc_in,0,40);
506 des_pcbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out,
507 (long)strlen(cbc_data)+1,ks,(C_Block *)cbc_iv,DES_ENCRYPT);
508 if (memcmp(cbc_out,pcbc_ok,32) != 0)
509 {
510 printf("pcbc_encrypt encrypt error\n");
511 err=1;
512 }
513 des_pcbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in,
514 (long)strlen(cbc_data)+1,ks,(C_Block *)cbc_iv,DES_DECRYPT);
515 if (memcmp(cbc_in,cbc_data,strlen(cbc_data)+1) != 0)
516 {
517 printf("pcbc_encrypt decrypt error\n");
518 err=1;
519 }
520
521 printf("Doing ");
522 printf("cfb8 ");
523 err+=cfb_test(8,cfb_cipher8);
524 printf("cfb16 ");
525 err+=cfb_test(16,cfb_cipher16);
526 printf("cfb32 ");
527 err+=cfb_test(32,cfb_cipher32);
528 printf("cfb48 ");
529 err+=cfb_test(48,cfb_cipher48);
530 printf("cfb64 ");
531 err+=cfb_test(64,cfb_cipher64);
532
533 printf("cfb64() ");
534 err+=cfb64_test(cfb_cipher64);
535
536 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
537 for (i=0; i<sizeof(plain); i++)
538 des_cfb_encrypt(&(plain[i]),&(cfb_buf1[i]),
539 8,(long)1,ks,(C_Block *)cfb_tmp,DES_ENCRYPT);
540 if (memcmp(cfb_cipher8,cfb_buf1,sizeof(plain)) != 0)
541 {
542 printf("cfb_encrypt small encrypt error\n");
543 err=1;
544 }
545
546 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
547 for (i=0; i<sizeof(plain); i++)
548 des_cfb_encrypt(&(cfb_buf1[i]),&(cfb_buf2[i]),
549 8,(long)1,ks,(C_Block *)cfb_tmp,DES_DECRYPT);
550 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
551 {
552 printf("cfb_encrypt small decrypt error\n");
553 err=1;
554 }
555
556 printf("ede_cfb64() ");
557 err+=ede_cfb64_test(cfb_cipher64);
558
559 printf("done\n");
560
561 printf("Doing ofb\n");
562 des_key_sched((C_Block *)ofb_key,ks);
563 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
564 des_ofb_encrypt(plain,ofb_buf1,64,(long)sizeof(plain)/8,ks,
565 (C_Block *)ofb_tmp);
566 if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
567 {
568 printf("ofb_encrypt encrypt error\n");
569printf("%02X %02X %02X %02X %02X %02X %02X %02X\n",
570ofb_buf1[8+0], ofb_buf1[8+1], ofb_buf1[8+2], ofb_buf1[8+3],
571ofb_buf1[8+4], ofb_buf1[8+5], ofb_buf1[8+6], ofb_buf1[8+7]);
572printf("%02X %02X %02X %02X %02X %02X %02X %02X\n",
573ofb_buf1[8+0], ofb_cipher[8+1], ofb_cipher[8+2], ofb_cipher[8+3],
574ofb_buf1[8+4], ofb_cipher[8+5], ofb_cipher[8+6], ofb_cipher[8+7]);
575 err=1;
576 }
577 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
578 des_ofb_encrypt(ofb_buf1,ofb_buf2,64,(long)sizeof(ofb_buf1)/8,ks,
579 (C_Block *)ofb_tmp);
580 if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
581 {
582 printf("ofb_encrypt decrypt error\n");
583printf("%02X %02X %02X %02X %02X %02X %02X %02X\n",
584ofb_buf2[8+0], ofb_buf2[8+1], ofb_buf2[8+2], ofb_buf2[8+3],
585ofb_buf2[8+4], ofb_buf2[8+5], ofb_buf2[8+6], ofb_buf2[8+7]);
586printf("%02X %02X %02X %02X %02X %02X %02X %02X\n",
587plain[8+0], plain[8+1], plain[8+2], plain[8+3],
588plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
589 err=1;
590 }
591
592 printf("Doing ofb64\n");
593 des_key_sched((C_Block *)ofb_key,ks);
594 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
595 memset(ofb_buf1,0,sizeof(ofb_buf1));
596 memset(ofb_buf2,0,sizeof(ofb_buf1));
597 num=0;
598 for (i=0; i<sizeof(plain); i++)
599 {
600 des_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,
601 (C_Block *)ofb_tmp,&num);
602 }
603 if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
604 {
605 printf("ofb64_encrypt encrypt error\n");
606 err=1;
607 }
608 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
609 num=0;
610 des_ofb64_encrypt(ofb_buf1,ofb_buf2,(long)sizeof(ofb_buf1),ks,
611 (C_Block *)ofb_tmp,&num);
612 if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
613 {
614 printf("ofb64_encrypt decrypt error\n");
615 err=1;
616 }
617
618 printf("Doing ede_ofb64\n");
619 des_key_sched((C_Block *)ofb_key,ks);
620 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
621 memset(ofb_buf1,0,sizeof(ofb_buf1));
622 memset(ofb_buf2,0,sizeof(ofb_buf1));
623 num=0;
624 for (i=0; i<sizeof(plain); i++)
625 {
626 des_ede3_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,ks,ks,
627 (C_Block *)ofb_tmp,&num);
628 }
629 if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
630 {
631 printf("ede_ofb64_encrypt encrypt error\n");
632 err=1;
633 }
634 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
635 num=0;
636 des_ede3_ofb64_encrypt(ofb_buf1,ofb_buf2,(long)sizeof(ofb_buf1),ks,
637 ks,ks,(C_Block *)ofb_tmp,&num);
638 if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
639 {
640 printf("ede_ofb64_encrypt decrypt error\n");
641 err=1;
642 }
643
644 printf("Doing cbc_cksum\n");
645 des_key_sched((C_Block *)cbc_key,ks);
646 cs=des_cbc_cksum((C_Block *)cbc_data,(C_Block *)cret,
647 (long)strlen(cbc_data),ks,(C_Block *)cbc_iv);
648 if (cs != cbc_cksum_ret)
649 {
650 printf("bad return value (%08lX), should be %08lX\n",
651 (unsigned long)cs,(unsigned long)cbc_cksum_ret);
652 err=1;
653 }
654 if (memcmp(cret,cbc_cksum_data,8) != 0)
655 {
656 printf("bad cbc_cksum block returned\n");
657 err=1;
658 }
659
660 printf("Doing quad_cksum\n");
661 cs=quad_cksum((C_Block *)cbc_data,(C_Block *)qret,
662 (long)strlen(cbc_data),2,(C_Block *)cbc_iv);
663 j=sizeof(lqret[0])-4;
664 for (i=0; i<4; i++)
665 {
666 lqret[i]=0;
667 memcpy(&(lqret[i]),&(qret[i][0]),4);
668 if (j > 0) lqret[i]=lqret[i]>>(j*8); /* For Cray */
669 }
670 { /* Big-endian fix */
671 static DES_LONG l=1;
672 static unsigned char *c=(unsigned char *)&l;
673 DES_LONG ll;
674
675 if (!c[0])
676 {
677 ll=lqret[0]^lqret[3];
678 lqret[0]^=ll;
679 lqret[3]^=ll;
680 ll=lqret[1]^lqret[2];
681 lqret[1]^=ll;
682 lqret[2]^=ll;
683 }
684 }
685 if (cs != 0x70d7a63aL)
686 {
687 printf("quad_cksum error, ret %08lx should be 70d7a63a\n",
688 (unsigned long)cs);
689 err=1;
690 }
691 if (lqret[0] != 0x327eba8dL)
692 {
693 printf("quad_cksum error, out[0] %08lx is not %08lx\n",
694 (unsigned long)lqret[0],0x327eba8dL);
695 err=1;
696 }
697 if (lqret[1] != 0x201a49ccL)
698 {
699 printf("quad_cksum error, out[1] %08lx is not %08lx\n",
700 (unsigned long)lqret[1],0x201a49ccL);
701 err=1;
702 }
703 if (lqret[2] != 0x70d7a63aL)
704 {
705 printf("quad_cksum error, out[2] %08lx is not %08lx\n",
706 (unsigned long)lqret[2],0x70d7a63aL);
707 err=1;
708 }
709 if (lqret[3] != 0x501c2c26L)
710 {
711 printf("quad_cksum error, out[3] %08lx is not %08lx\n",
712 (unsigned long)lqret[3],0x501c2c26L);
713 err=1;
714 }
715#endif
716
717 printf("input word alignment test");
718 for (i=0; i<4; i++)
719 {
720 printf(" %d",i);
721 des_ncbc_encrypt((C_Block *)&(cbc_out[i]),(C_Block *)cbc_in,
722 (long)strlen(cbc_data)+1,ks,(C_Block *)cbc_iv,
723 DES_ENCRYPT);
724 }
725 printf("\noutput word alignment test");
726 for (i=0; i<4; i++)
727 {
728 printf(" %d",i);
729 des_ncbc_encrypt((C_Block *)cbc_out,(C_Block *)&(cbc_in[i]),
730 (long)strlen(cbc_data)+1,ks,(C_Block *)cbc_iv,
731 DES_ENCRYPT);
732 }
733 printf("\n");
734 printf("fast crypt test ");
735 str=crypt("testing","ef");
736 if (strcmp("efGnQx2725bI2",str) != 0)
737 {
738 printf("fast crypt error, %s should be efGnQx2725bI2\n",str);
739 err=1;
740 }
741 str=crypt("bca76;23","yA");
742 if (strcmp("yA1Rp/1hZXIJk",str) != 0)
743 {
744 printf("fast crypt error, %s should be yA1Rp/1hZXIJk\n",str);
745 err=1;
746 }
747 printf("\n");
748 exit(err);
749 return(0);
750 }
751
752static char *pt(p)
753unsigned char *p;
754 {
755 static char bufs[10][20];
756 static int bnum=0;
757 char *ret;
758 int i;
759 static char *f="0123456789ABCDEF";
760
761 ret= &(bufs[bnum++][0]);
762 bnum%=10;
763 for (i=0; i<8; i++)
764 {
765 ret[i*2]=f[(p[i]>>4)&0xf];
766 ret[i*2+1]=f[p[i]&0xf];
767 }
768 ret[16]='\0';
769 return(ret);
770 }
771
772#ifndef LIBDES_LIT
773
774static int cfb_test(bits, cfb_cipher)
775int bits;
776unsigned char *cfb_cipher;
777 {
778 des_key_schedule ks;
779 int i,err=0;
780
781 des_key_sched((C_Block *)cfb_key,ks);
782 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
783 des_cfb_encrypt(plain,cfb_buf1,bits,(long)sizeof(plain),ks,
784 (C_Block *)cfb_tmp,DES_ENCRYPT);
785 if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
786 {
787 err=1;
788 printf("cfb_encrypt encrypt error\n");
789 for (i=0; i<24; i+=8)
790 printf("%s\n",pt(&(cfb_buf1[i])));
791 }
792 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
793 des_cfb_encrypt(cfb_buf1,cfb_buf2,bits,(long)sizeof(plain),ks,
794 (C_Block *)cfb_tmp,DES_DECRYPT);
795 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
796 {
797 err=1;
798 printf("cfb_encrypt decrypt error\n");
799 for (i=0; i<24; i+=8)
800 printf("%s\n",pt(&(cfb_buf1[i])));
801 }
802 return(err);
803 }
804
805static int cfb64_test(cfb_cipher)
806unsigned char *cfb_cipher;
807 {
808 des_key_schedule ks;
809 int err=0,i,n;
810
811 des_key_sched((C_Block *)cfb_key,ks);
812 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
813 n=0;
814 des_cfb64_encrypt(plain,cfb_buf1,(long)12,ks,
815 (C_Block *)cfb_tmp,&n,DES_ENCRYPT);
816 des_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),
817 (long)sizeof(plain)-12,ks,
818 (C_Block *)cfb_tmp,&n,DES_ENCRYPT);
819 if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
820 {
821 err=1;
822 printf("cfb_encrypt encrypt error\n");
823 for (i=0; i<24; i+=8)
824 printf("%s\n",pt(&(cfb_buf1[i])));
825 }
826 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
827 n=0;
828 des_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,ks,
829 (C_Block *)cfb_tmp,&n,DES_DECRYPT);
830 des_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
831 (long)sizeof(plain)-17,ks,
832 (C_Block *)cfb_tmp,&n,DES_DECRYPT);
833 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
834 {
835 err=1;
836 printf("cfb_encrypt decrypt error\n");
837 for (i=0; i<24; i+=8)
838 printf("%s\n",pt(&(cfb_buf2[i])));
839 }
840 return(err);
841 }
842
843static int ede_cfb64_test(cfb_cipher)
844unsigned char *cfb_cipher;
845 {
846 des_key_schedule ks;
847 int err=0,i,n;
848
849 des_key_sched((C_Block *)cfb_key,ks);
850 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
851 n=0;
852 des_ede3_cfb64_encrypt(plain,cfb_buf1,(long)12,ks,ks,ks,
853 (C_Block *)cfb_tmp,&n,DES_ENCRYPT);
854 des_ede3_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),
855 (long)sizeof(plain)-12,ks,ks,ks,
856 (C_Block *)cfb_tmp,&n,DES_ENCRYPT);
857 if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
858 {
859 err=1;
860 printf("ede_cfb_encrypt encrypt error\n");
861 for (i=0; i<24; i+=8)
862 printf("%s\n",pt(&(cfb_buf1[i])));
863 }
864 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
865 n=0;
866 des_ede3_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,ks,ks,ks,
867 (C_Block *)cfb_tmp,&n,DES_DECRYPT);
868 des_ede3_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
869 (long)sizeof(plain)-17,ks,ks,ks,
870 (C_Block *)cfb_tmp,&n,DES_DECRYPT);
871 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
872 {
873 err=1;
874 printf("ede_cfb_encrypt decrypt error\n");
875 for (i=0; i<24; i+=8)
876 printf("%s\n",pt(&(cfb_buf2[i])));
877 }
878 return(err);
879 }
880
881#endif
882