1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/des/destest.c */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com).
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL.
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to.  The following conditions
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA,
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed.
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used.
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package.
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    documentation and/or other materials provided with the distribution.
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    must display the following acknowledgement:
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes cryptographic software written by
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     Eric Young (eay@cryptsoft.com)"
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    The word 'cryptographic' can be left out if the rouines from the library
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    being used are not cryptographic related :-).
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the apps directory (application code) you must include an acknowledgement:
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE.
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed.  i.e. this code cannot simply be
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.]
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdio.h>
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdlib.h>
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/e_os2.h>
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16) || defined(OPENSSL_SYS_WINDOWS)
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_SYS_MSDOS
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OPENSSL_SYS_MSDOS
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_SYS_MSDOS
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_VMS_DECC)
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include OPENSSL_UNISTD
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <io.h>
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <string.h>
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_NO_DES
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint main(int argc, char *argv[])
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    printf("No DES support\n");
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    return(0);
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/des.h>
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define crypt(c,s) (DES_crypt((c),(s)))
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* tisk tisk - the test keys don't all have odd parity :-( */
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* test data */
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define NUM_TESTS 34
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char key_data[NUM_TESTS][8]={
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10},
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x7C,0xA1,0x10,0x45,0x4A,0x1A,0x6E,0x57},
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x31,0xD9,0x61,0x9D,0xC1,0x37,0x6E},
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x07,0xA1,0x13,0x3E,0x4A,0x0B,0x26,0x86},
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x38,0x49,0x67,0x4C,0x26,0x02,0x31,0x9E},
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x04,0xB9,0x15,0xBA,0x43,0xFE,0xB5,0xB6},
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x13,0xB9,0x70,0xFD,0x34,0xF2,0xCE},
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x70,0xF1,0x75,0x46,0x8F,0xB5,0xE6},
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x43,0x29,0x7F,0xAD,0x38,0xE3,0x73,0xFE},
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x07,0xA7,0x13,0x70,0x45,0xDA,0x2A,0x16},
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x04,0x68,0x91,0x04,0xC2,0xFD,0x3B,0x2F},
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x37,0xD0,0x6B,0xB5,0x16,0xCB,0x75,0x46},
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x1F,0x08,0x26,0x0D,0x1A,0xC2,0x46,0x5E},
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x58,0x40,0x23,0x64,0x1A,0xBA,0x61,0x76},
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x02,0x58,0x16,0x16,0x46,0x29,0xB0,0x07},
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x49,0x79,0x3E,0xBC,0x79,0xB3,0x25,0x8F},
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x4F,0xB0,0x5E,0x15,0x15,0xAB,0x73,0xA7},
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x49,0xE9,0x5D,0x6D,0x4C,0xA2,0x29,0xBF},
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x83,0x10,0xDC,0x40,0x9B,0x26,0xD6},
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x1C,0x58,0x7F,0x1C,0x13,0x92,0x4F,0xEF},
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x1F,0x1F,0x1F,0x1F,0x0E,0x0E,0x0E,0x0E},
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE},
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10}};
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char plain_data[NUM_TESTS][8]={
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x01},
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0xA1,0xD6,0xD0,0x39,0x77,0x67,0x42},
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x5C,0xD5,0x4C,0xA8,0x3D,0xEF,0x57,0xDA},
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x02,0x48,0xD4,0x38,0x06,0xF6,0x71,0x72},
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x51,0x45,0x4B,0x58,0x2D,0xDF,0x44,0x0A},
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x42,0xFD,0x44,0x30,0x59,0x57,0x7F,0xA2},
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x05,0x9B,0x5E,0x08,0x51,0xCF,0x14,0x3A},
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x07,0x56,0xD8,0xE0,0x77,0x47,0x61,0xD2},
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x76,0x25,0x14,0xB8,0x29,0xBF,0x48,0x6A},
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x3B,0xDD,0x11,0x90,0x49,0x37,0x28,0x02},
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x26,0x95,0x5F,0x68,0x35,0xAF,0x60,0x9A},
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x16,0x4D,0x5E,0x40,0x4F,0x27,0x52,0x32},
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x6B,0x05,0x6E,0x18,0x75,0x9F,0x5C,0xCA},
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x00,0x4B,0xD6,0xEF,0x09,0x17,0x60,0x62},
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x48,0x0D,0x39,0x00,0x6E,0xE7,0x62,0xF2},
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x43,0x75,0x40,0xC8,0x69,0x8F,0x3C,0xFA},
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x07,0x2D,0x43,0xA0,0x77,0x07,0x52,0x92},
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x02,0xFE,0x55,0x77,0x81,0x17,0xF1,0x2A},
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x1D,0x9D,0x5C,0x50,0x18,0xF7,0x28,0xC2},
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x30,0x55,0x32,0x28,0x6D,0x6F,0x29,0x5A},
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF},
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}};
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cipher_data[NUM_TESTS][8]={
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x8C,0xA6,0x4D,0xE9,0xC1,0xB1,0x23,0xA7},
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x73,0x59,0xB2,0x16,0x3E,0x4E,0xDC,0x58},
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x95,0x8E,0x6E,0x62,0x7A,0x05,0x55,0x7B},
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xF4,0x03,0x79,0xAB,0x9E,0x0E,0xC5,0x33},
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x17,0x66,0x8D,0xFC,0x72,0x92,0x53,0x2D},
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x8A,0x5A,0xE1,0xF8,0x1A,0xB8,0xF2,0xDD},
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x8C,0xA6,0x4D,0xE9,0xC1,0xB1,0x23,0xA7},
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4},
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x69,0x0F,0x5B,0x0D,0x9A,0x26,0x93,0x9B},
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x7A,0x38,0x9D,0x10,0x35,0x4B,0xD2,0x71},
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x86,0x8E,0xBB,0x51,0xCA,0xB4,0x59,0x9A},
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x71,0x78,0x87,0x6E,0x01,0xF1,0x9B,0x2A},
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xAF,0x37,0xFB,0x42,0x1F,0x8C,0x40,0x95},
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x86,0xA5,0x60,0xF1,0x0E,0xC6,0xD8,0x5B},
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x0C,0xD3,0xDA,0x02,0x00,0x21,0xDC,0x09},
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xEA,0x67,0x6B,0x2C,0xB7,0xDB,0x2B,0x7A},
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xDF,0xD6,0x4A,0x81,0x5C,0xAF,0x1A,0x0F},
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x5C,0x51,0x3C,0x9C,0x48,0x86,0xC0,0x88},
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x0A,0x2A,0xEE,0xAE,0x3F,0xF4,0xAB,0x77},
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xEF,0x1B,0xF0,0x3E,0x5D,0xFA,0x57,0x5A},
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x88,0xBF,0x0D,0xB6,0xD7,0x0D,0xEE,0x56},
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xA1,0xF9,0x91,0x55,0x41,0x02,0x0B,0x56},
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x6F,0xBF,0x1C,0xAF,0xCF,0xFD,0x05,0x56},
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x2F,0x22,0xE4,0x9B,0xAB,0x7C,0xA1,0xAC},
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x5A,0x6B,0x61,0x2C,0xC2,0x6C,0xCE,0x4A},
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x5F,0x4C,0x03,0x8E,0xD1,0x2B,0x2E,0x41},
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x63,0xFA,0xC0,0xD0,0x34,0xD9,0xF7,0x93},
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x61,0x7B,0x3A,0x0C,0xE8,0xF0,0x71,0x00},
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xDB,0x95,0x86,0x05,0xF8,0xC8,0xC6,0x06},
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xED,0xBF,0xD1,0xC6,0x6C,0x29,0xCC,0xC7},
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x35,0x55,0x50,0xB2,0x15,0x0E,0x24,0x51},
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xCA,0xAA,0xAF,0x4D,0xEA,0xF1,0xDB,0xAE},
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xD5,0xD4,0x4F,0xF7,0x20,0x68,0x3D,0x0D},
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x2A,0x2B,0xB0,0x08,0xDF,0x97,0xC2,0xF2}};
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cipher_ecb2[NUM_TESTS-1][8]={
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x92,0x95,0xB5,0x9B,0xB3,0x84,0x73,0x6E},
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x19,0x9E,0x9D,0x6D,0xF3,0x9A,0xA8,0x16},
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x2A,0x4B,0x4D,0x24,0x52,0x43,0x84,0x27},
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x35,0x84,0x3C,0x01,0x9D,0x18,0xC5,0xB6},
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x4A,0x5B,0x2F,0x42,0xAA,0x77,0x19,0x25},
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xA0,0x6B,0xA9,0xB8,0xCA,0x5B,0x17,0x8A},
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xAB,0x9D,0xB7,0xFB,0xED,0x95,0xF2,0x74},
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x3D,0x25,0x6C,0x23,0xA7,0x25,0x2F,0xD6},
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xB7,0x6F,0xAB,0x4F,0xBD,0xBD,0xB7,0x67},
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x8F,0x68,0x27,0xD6,0x9C,0xF4,0x1A,0x10},
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x82,0x57,0xA1,0xD6,0x50,0x5E,0x81,0x85},
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xA2,0x0F,0x0A,0xCD,0x80,0x89,0x7D,0xFA},
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xCD,0x2A,0x53,0x3A,0xDB,0x0D,0x7E,0xF3},
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xD2,0xC2,0xBE,0x27,0xE8,0x1B,0x68,0xE3},
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xE9,0x24,0xCF,0x4F,0x89,0x3C,0x5B,0x0A},
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xA7,0x18,0xC3,0x9F,0xFA,0x9F,0xD7,0x69},
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x77,0x2C,0x79,0xB1,0xD2,0x31,0x7E,0xB1},
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x49,0xAB,0x92,0x7F,0xD0,0x22,0x00,0xB7},
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xCE,0x1C,0x6C,0x7D,0x85,0xE3,0x4A,0x6F},
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xBE,0x91,0xD6,0xE1,0x27,0xB2,0xE9,0x87},
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x70,0x28,0xAE,0x8F,0xD1,0xF5,0x74,0x1A},
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xAA,0x37,0x80,0xBB,0xF3,0x22,0x1D,0xDE},
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xA6,0xC4,0xD2,0x5E,0x28,0x93,0xAC,0xB3},
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x22,0x07,0x81,0x5A,0xE4,0xB7,0x1A,0xAD},
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xDC,0xCE,0x05,0xE7,0x07,0xBD,0xF5,0x84},
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x26,0x1D,0x39,0x2C,0xB3,0xBA,0xA5,0x85},
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xB4,0xF7,0x0F,0x72,0xFB,0x04,0xF0,0xDC},
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x95,0xBA,0xA9,0x4E,0x87,0x36,0xF2,0x89},
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xD4,0x07,0x3A,0xF1,0x5A,0x17,0x82,0x0E},
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xEF,0x6F,0xAF,0xA7,0x66,0x1A,0x7E,0x89},
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0xC1,0x97,0xF5,0x58,0x74,0x8A,0x20,0xE7},
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x43,0x34,0xCF,0xDA,0x22,0xC4,0x86,0xC8},
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{0x08,0xD7,0xB4,0xFB,0x62,0x9D,0x08,0x85}};
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cbc_key [8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cbc2_key[8]={0xf1,0xe0,0xd3,0xc2,0xb5,0xa4,0x97,0x86};
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cbc3_key[8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cbc_iv  [8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Changed the following text constant to binary so it will work on ebcdic
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * machines :-) */
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* static char cbc_data[40]="7654321 Now is the time for \0001"; */
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cbc_data[40]={
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x20,
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x4E,0x6F,0x77,0x20,0x69,0x73,0x20,0x74,
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x68,0x65,0x20,0x74,0x69,0x6D,0x65,0x20,
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x66,0x6F,0x72,0x20,0x00,0x31,0x00,0x00,
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cbc_ok[32]={
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xcc,0xd1,0x73,0xff,0xab,0x20,0x39,0xf4,
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xac,0xd8,0xae,0xfd,0xdf,0xd8,0xa1,0xeb,
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x46,0x8e,0x91,0x15,0x78,0x88,0xba,0x68,
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef SCREW_THE_PARITY
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#error "SCREW_THE_PARITY is not ment to be defined."
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#error "Original vectors are preserved for reference only."
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cbc2_key[8]={0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x96,0x87};
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char xcbc_ok[32]={
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x86,0x74,0x81,0x0D,0x61,0xA4,0xA5,0x48,
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xB9,0x93,0x03,0xE1,0xB8,0xBB,0xBD,0xBD,
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x64,0x30,0x0B,0xB9,0x06,0x65,0x81,0x76,
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x04,0x1D,0x77,0x62,0x17,0xCA,0x2B,0xD2,
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char xcbc_ok[32]={
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x84,0x6B,0x29,0x14,0x85,0x1E,0x9A,0x29,
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x54,0x73,0x2F,0x8A,0xA0,0xA6,0x11,0xC1,
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x15,0xCD,0xC2,0xD7,0x95,0x1B,0x10,0x53,
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xA6,0x3C,0x5E,0x03,0xB2,0x1A,0xA3,0xC4,
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cbc3_ok[32]={
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x3F,0xE3,0x01,0xC9,0x62,0xAC,0x01,0xD0,
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x22,0x13,0x76,0x3C,0x1C,0xBD,0x4C,0xDC,
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x79,0x96,0x57,0xC0,0x64,0xEC,0xF5,0xD4,
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x1C,0x67,0x38,0x12,0xCF,0xDE,0x96,0x75};
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char pcbc_ok[32]={
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xcc,0xd1,0x73,0xff,0xab,0x20,0x39,0xf4,
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x6d,0xec,0xb4,0x70,0xa0,0xe5,0x6b,0x15,
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xae,0xa6,0xbf,0x61,0xed,0x7d,0x9c,0x9f,
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xf7,0x17,0x46,0x3b,0x8a,0xb3,0xcc,0x88};
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cfb_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cfb_iv[8]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cfb_buf1[40],cfb_buf2[40],cfb_tmp[8];
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char plain[24]=
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x4e,0x6f,0x77,0x20,0x69,0x73,
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x20,0x74,0x68,0x65,0x20,0x74,
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x69,0x6d,0x65,0x20,0x66,0x6f,
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x72,0x20,0x61,0x6c,0x6c,0x20
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cfb_cipher8[24]= {
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xf3,0x1f,0xda,0x07,0x01,0x14, 0x62,0xee,0x18,0x7f,0x43,0xd8,
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x0a,0x7c,0xd9,0xb5,0xb0,0xd2, 0x90,0xda,0x6e,0x5b,0x9a,0x87 };
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cfb_cipher16[24]={
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xF3,0x09,0x87,0x87,0x7F,0x57, 0xF7,0x3C,0x36,0xB6,0xDB,0x70,
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xD8,0xD5,0x34,0x19,0xD3,0x86, 0xB2,0x23,0xB7,0xB2,0xAD,0x1B };
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cfb_cipher32[24]={
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xF3,0x09,0x62,0x49,0xA4,0xDF, 0xA4,0x9F,0x33,0xDC,0x7B,0xAD,
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x4C,0xC8,0x9F,0x64,0xE4,0x53, 0xE5,0xEC,0x67,0x20,0xDA,0xB6 };
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cfb_cipher48[24]={
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xF3,0x09,0x62,0x49,0xC7,0xF4, 0x30,0xB5,0x15,0xEC,0xBB,0x85,
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x97,0x5A,0x13,0x8C,0x68,0x60, 0xE2,0x38,0x34,0x3C,0xDC,0x1F };
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cfb_cipher64[24]={
310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xF3,0x09,0x62,0x49,0xC7,0xF4, 0x6E,0x51,0xA6,0x9E,0x83,0x9B,
311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x1A,0x92,0xF7,0x84,0x03,0x46, 0x71,0x33,0x89,0x8E,0xA6,0x22 };
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char ofb_key[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char ofb_iv[8]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char ofb_buf1[24],ofb_buf2[24],ofb_tmp[8];
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char ofb_cipher[24]=
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xf3,0x09,0x62,0x49,0xc7,0xf4,0x6e,0x51,
319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x35,0xf2,0x4a,0x24,0x2e,0xeb,0x3d,0x3f,
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x3d,0x6d,0x5b,0xe3,0x25,0x5a,0xf8,0xc3
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic DES_LONG cbc_cksum_ret=0xB462FEF7L;
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic DES_LONG cbc_cksum_ret=0xF7FE62B4L;
327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned char cbc_cksum_data[8]={0x1D,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic char *pt(unsigned char *p);
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int cfb_test(int bits, unsigned char *cfb_cipher);
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int cfb64_test(unsigned char *cfb_cipher);
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int ede_cfb64_test(unsigned char *cfb_cipher);
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint main(int argc, char *argv[])
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int j,err=0;
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned int i;
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_cblock in,out,outin,iv3,iv2;
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks,ks2,ks3;
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char cbc_in[40];
341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char cbc_out[40];
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_LONG cs;
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char cret[8];
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef _CRAY
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        struct {
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project            int a:32;
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project            int b:32;
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        } lqret[2];
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        DES_LONG lqret[4];
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int num;
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *str;
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DESCBCM
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing cbcm\n");
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Key error %d\n",j);
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((j=DES_set_key_checked(&cbc2_key,&ks2)) != 0)
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Key error %d\n",j);
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((j=DES_set_key_checked(&cbc3_key,&ks3)) != 0)
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Key error %d\n",j);
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_out,0,40);
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_in,0,40);
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	i=strlen((char *)cbc_data)+1;
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* i=((i+7)/8)*8; */
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(iv2,'\0',sizeof iv2);
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ede3_cbcm_encrypt(cbc_data,cbc_out,16L,&ks,&ks2,&ks3,&iv3,&iv2,
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			      DES_ENCRYPT);
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ede3_cbcm_encrypt(&cbc_data[16],&cbc_out[16],i-16,&ks,&ks2,&ks3,
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			      &iv3,&iv2,DES_ENCRYPT);
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/*	if (memcmp(cbc_out,cbc3_ok,
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0)
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("des_ede3_cbc_encrypt encrypt error\n");
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	*/
390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(iv2,'\0',sizeof iv2);
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ede3_cbcm_encrypt(cbc_out,cbc_in,i,&ks,&ks2,&ks3,&iv3,&iv2,DES_DECRYPT);
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		unsigned int n;
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("des_ede3_cbcm_encrypt decrypt error\n");
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for(n=0 ; n < i ; ++n)
399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		    printf(" %02x",cbc_data[n]);
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("\n");
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for(n=0 ; n < i ; ++n)
402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		    printf(" %02x",cbc_in[n]);
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("\n");
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing ecb\n");
409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<NUM_TESTS; i++)
410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		DES_set_key_unchecked(&key_data[i],&ks);
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		memcpy(in,plain_data[i],8);
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		memset(out,0,8);
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		memset(outin,0,8);
415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_ecb_encrypt(&in,&out,ks,DES_ENCRYPT);
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_ecb_encrypt(&out,&outin,ks,DES_DECRYPT);
417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (memcmp(out,cipher_data[i],8) != 0)
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("Encryption error %2d\nk=%s p=%s o=%s act=%s\n",
421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				i+1,pt(key_data[i]),pt(in),pt(cipher_data[i]),
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				pt(out));
423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			err=1;
424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (memcmp(in,outin,8) != 0)
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("Decryption error %2d\nk=%s p=%s o=%s act=%s\n",
428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				i+1,pt(key_data[i]),pt(out),pt(in),pt(outin));
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			err=1;
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef LIBDES_LIT
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing ede ecb\n");
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<(NUM_TESTS-2); i++)
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		DES_set_key_unchecked(&key_data[i],&ks);
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		DES_set_key_unchecked(&key_data[i+1],&ks2);
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		DES_set_key_unchecked(&key_data[i+2],&ks3);
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		memcpy(in,plain_data[i],8);
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		memset(out,0,8);
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		memset(outin,0,8);
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_ecb2_encrypt(&in,&out,ks,ks2,DES_ENCRYPT);
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_ecb2_encrypt(&out,&outin,ks,ks2,DES_DECRYPT);
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (memcmp(out,cipher_ecb2[i],8) != 0)
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("Encryption error %2d\nk=%s p=%s o=%s act=%s\n",
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				i+1,pt(key_data[i]),pt(in),pt(cipher_ecb2[i]),
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				pt(out));
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			err=1;
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (memcmp(in,outin,8) != 0)
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("Decryption error %2d\nk=%s p=%s o=%s act=%s\n",
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				i+1,pt(key_data[i]),pt(out),pt(in),pt(outin));
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			err=1;
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing cbc\n");
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Key error %d\n",j);
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_out,0,40);
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_in,0,40);
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ncbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			 &iv3,DES_ENCRYPT);
473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cbc_out,cbc_ok,32) != 0)
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("cbc_encrypt encrypt error\n");
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ncbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			 &iv3,DES_DECRYPT);
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)) != 0)
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("cbc_encrypt decrypt error\n");
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef LIBDES_LIT
489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing desx cbc\n");
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Key error %d\n",j);
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_out,0,40);
496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_in,0,40);
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_xcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			 &iv3,&cbc2_key,&cbc3_key, DES_ENCRYPT);
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cbc_out,xcbc_ok,32) != 0)
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("des_xcbc_encrypt encrypt error\n");
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_xcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			 &iv3,&cbc2_key,&cbc3_key, DES_DECRYPT);
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("des_xcbc_encrypt decrypt error\n");
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing ede cbc\n");
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Key error %d\n",j);
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((j=DES_set_key_checked(&cbc2_key,&ks2)) != 0)
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Key error %d\n",j);
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((j=DES_set_key_checked(&cbc3_key,&ks3)) != 0)
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Key error %d\n",j);
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_out,0,40);
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_in,0,40);
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	i=strlen((char *)cbc_data)+1;
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* i=((i+7)/8)*8; */
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ede3_cbc_encrypt(cbc_data,cbc_out,16L,ks,ks2,ks3,&iv3,
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			     DES_ENCRYPT);
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ede3_cbc_encrypt(&(cbc_data[16]),&(cbc_out[16]),i-16,ks,ks2,ks3,
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			     &iv3,DES_ENCRYPT);
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cbc_out,cbc3_ok,
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0)
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		unsigned int n;
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("des_ede3_cbc_encrypt encrypt error\n");
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for(n=0 ; n < i ; ++n)
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		    printf(" %02x",cbc_out[n]);
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("\n");
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for(n=0 ; n < i ; ++n)
551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		    printf(" %02x",cbc3_ok[n]);
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("\n");
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ede3_cbc_encrypt(cbc_out,cbc_in,i,ks,ks2,ks3,&iv3,DES_DECRYPT);
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		unsigned int n;
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("des_ede3_cbc_encrypt decrypt error\n");
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for(n=0 ; n < i ; ++n)
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		    printf(" %02x",cbc_data[n]);
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("\n");
566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for(n=0 ; n < i ; ++n)
567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		    printf(" %02x",cbc_in[n]);
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("\n");
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef LIBDES_LIT
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing pcbc\n");
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Key error %d\n",j);
577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_out,0,40);
580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(cbc_in,0,40);
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_pcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,
582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			 &cbc_iv,DES_ENCRYPT);
583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cbc_out,pcbc_ok,32) != 0)
584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("pcbc_encrypt encrypt error\n");
586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_pcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,&cbc_iv,
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			 DES_DECRYPT);
590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("pcbc_encrypt decrypt error\n");
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing ");
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("cfb8 ");
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	err+=cfb_test(8,cfb_cipher8);
599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("cfb16 ");
600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	err+=cfb_test(16,cfb_cipher16);
601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("cfb32 ");
602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	err+=cfb_test(32,cfb_cipher32);
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("cfb48 ");
604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	err+=cfb_test(48,cfb_cipher48);
605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("cfb64 ");
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	err+=cfb_test(64,cfb_cipher64);
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("cfb64() ");
609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	err+=cfb64_test(cfb_cipher64);
610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<sizeof(plain); i++)
613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_cfb_encrypt(&(plain[i]),&(cfb_buf1[i]),
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			8,1,ks,&cfb_tmp,DES_ENCRYPT);
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cfb_cipher8,cfb_buf1,sizeof(plain)) != 0)
616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("cfb_encrypt small encrypt error\n");
618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<sizeof(plain); i++)
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_cfb_encrypt(&(cfb_buf1[i]),&(cfb_buf2[i]),
624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			8,1,ks,&cfb_tmp,DES_DECRYPT);
625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("cfb_encrypt small decrypt error\n");
628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
631656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("ede_cfb64() ");
632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	err+=ede_cfb64_test(cfb_cipher64);
633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("done\n");
635656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing ofb\n");
637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_checked(&ofb_key,&ks);
638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ofb_encrypt(plain,ofb_buf1,64,sizeof(plain)/8,ks,&ofb_tmp);
640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("ofb_encrypt encrypt error\n");
643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf("%02X %02X %02X %02X %02X %02X %02X %02X\n",
644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectofb_buf1[8+0], ofb_buf1[8+1], ofb_buf1[8+2], ofb_buf1[8+3],
645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectofb_buf1[8+4], ofb_buf1[8+5], ofb_buf1[8+6], ofb_buf1[8+7]);
646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf("%02X %02X %02X %02X %02X %02X %02X %02X\n",
647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectofb_buf1[8+0], ofb_cipher[8+1], ofb_cipher[8+2], ofb_cipher[8+3],
648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectofb_buf1[8+4], ofb_cipher[8+5], ofb_cipher[8+6], ofb_cipher[8+7]);
649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ofb_encrypt(ofb_buf1,ofb_buf2,64,sizeof(ofb_buf1)/8,ks,&ofb_tmp);
653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("ofb_encrypt decrypt error\n");
656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf("%02X %02X %02X %02X %02X %02X %02X %02X\n",
657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectofb_buf2[8+0], ofb_buf2[8+1], ofb_buf2[8+2], ofb_buf2[8+3],
658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectofb_buf2[8+4], ofb_buf2[8+5], ofb_buf2[8+6], ofb_buf2[8+7]);
659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf("%02X %02X %02X %02X %02X %02X %02X %02X\n",
660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectplain[8+0], plain[8+1], plain[8+2], plain[8+3],
661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectplain[8+4], plain[8+5], plain[8+6], plain[8+7]);
662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing ofb64\n");
666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_checked(&ofb_key,&ks);
667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(ofb_buf1,0,sizeof(ofb_buf1));
669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(ofb_buf2,0,sizeof(ofb_buf1));
670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num=0;
671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<sizeof(plain); i++)
672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,&ofb_tmp,
674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				  &num);
675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("ofb64_encrypt encrypt error\n");
679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num=0;
683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),ks,&ofb_tmp,
684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			  &num);
685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("ofb64_encrypt decrypt error\n");
688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing ede_ofb64\n");
692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_checked(&ofb_key,&ks);
693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(ofb_buf1,0,sizeof(ofb_buf1));
695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(ofb_buf2,0,sizeof(ofb_buf1));
696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num=0;
697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<sizeof(plain); i++)
698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_ede3_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,ks,
700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				       ks,&ofb_tmp,&num);
701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("ede_ofb64_encrypt encrypt error\n");
705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num=0;
709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ede3_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),ks,ks,ks,
710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			       &ofb_tmp,&num);
711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("ede_ofb64_encrypt decrypt error\n");
714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
716656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
717656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing cbc_cksum\n");
718656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_checked(&cbc_key,&ks);
719656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cs=des_cbc_cksum(cbc_data,&cret,strlen((char *)cbc_data),ks,&cbc_iv);
720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (cs != cbc_cksum_ret)
721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("bad return value (%08lX), should be %08lX\n",
723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)cs,(unsigned long)cbc_cksum_ret);
724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cret,cbc_cksum_data,8) != 0)
727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("bad cbc_cksum block returned\n");
729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("Doing quad_cksum\n");
733656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cs=des_quad_cksum(cbc_data,(des_cblock *)lqret,
734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(long)strlen((char *)cbc_data),2,(des_cblock *)cbc_iv);
735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (cs != 0x70d7a63aL)
736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
737656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("quad_cksum error, ret %08lx should be 70d7a63a\n",
738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)cs);
739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef _CRAY
742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (lqret[0].a != 0x327eba8dL)
743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("quad_cksum error, out[0] %08lx is not %08lx\n",
745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)lqret[0].a,0x327eba8dUL);
746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (lqret[0].b != 0x201a49ccL)
749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
750656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("quad_cksum error, out[1] %08lx is not %08lx\n",
751656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)lqret[0].b,0x201a49ccUL);
752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
753656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
754656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (lqret[1].a != 0x70d7a63aL)
755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("quad_cksum error, out[2] %08lx is not %08lx\n",
757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)lqret[1].a,0x70d7a63aUL);
758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (lqret[1].b != 0x501c2c26L)
761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("quad_cksum error, out[3] %08lx is not %08lx\n",
763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)lqret[1].b,0x501c2c26UL);
764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
765656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (lqret[0] != 0x327eba8dL)
768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("quad_cksum error, out[0] %08lx is not %08lx\n",
770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)lqret[0],0x327eba8dUL);
771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (lqret[1] != 0x201a49ccL)
774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("quad_cksum error, out[1] %08lx is not %08lx\n",
776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)lqret[1],0x201a49ccUL);
777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (lqret[2] != 0x70d7a63aL)
780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("quad_cksum error, out[2] %08lx is not %08lx\n",
782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)lqret[2],0x70d7a63aUL);
783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (lqret[3] != 0x501c2c26L)
786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("quad_cksum error, out[3] %08lx is not %08lx\n",
788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(unsigned long)lqret[3],0x501c2c26UL);
789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("input word alignment test");
795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<4; i++)
796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf(" %d",i);
798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_ncbc_encrypt(&(cbc_out[i]),cbc_in,
799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				 strlen((char *)cbc_data)+1,ks,
800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				 &cbc_iv,DES_ENCRYPT);
801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("\noutput word alignment test");
803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<4; i++)
804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf(" %d",i);
806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		des_ncbc_encrypt(cbc_out,&(cbc_in[i]),
807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				 strlen((char *)cbc_data)+1,ks,
808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				 &cbc_iv,DES_ENCRYPT);
809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("\n");
811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("fast crypt test ");
812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str=crypt("testing","ef");
813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (strcmp("efGnQx2725bI2",str) != 0)
814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("fast crypt error, %s should be efGnQx2725bI2\n",str);
816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
817656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str=crypt("bca76;23","yA");
819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (strcmp("yA1Rp/1hZXIJk",str) != 0)
820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("fast crypt error, %s should be yA1Rp/1hZXIJk\n",str);
822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_SYS_NETWARE
825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    if (err) printf("ERROR: %d\n", err);
826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("\n");
828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(err);
829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic char *pt(unsigned char *p)
832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static char bufs[10][20];
834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static int bnum=0;
835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *ret;
836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int i;
837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static char *f="0123456789ABCDEF";
838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
839656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret= &(bufs[bnum++][0]);
840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnum%=10;
841656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<8; i++)
842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret[i*2]=f[(p[i]>>4)&0xf];
844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret[i*2+1]=f[p[i]&0xf];
845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
846656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret[16]='\0';
847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(ret);
848656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef LIBDES_LIT
851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int cfb_test(int bits, unsigned char *cfb_cipher)
853656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks;
855656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int i,err=0;
856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_checked(&cfb_key,&ks);
858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_cfb_encrypt(plain,cfb_buf1,bits,sizeof(plain),ks,&cfb_tmp,
860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			DES_ENCRYPT);
861656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
862656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
863656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
864656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("cfb_encrypt encrypt error\n");
865656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<24; i+=8)
866656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%s\n",pt(&(cfb_buf1[i])));
867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
868656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_cfb_encrypt(cfb_buf1,cfb_buf2,bits,sizeof(plain),ks,&cfb_tmp,
870656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			DES_DECRYPT);
871656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
872656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("cfb_encrypt decrypt error\n");
875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<24; i+=8)
876656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%s\n",pt(&(cfb_buf1[i])));
877656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
878656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(err);
879656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
880656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
881656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int cfb64_test(unsigned char *cfb_cipher)
882656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks;
884656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int err=0,i,n;
885656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
886656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_checked(&cfb_key,&ks);
887656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	n=0;
889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_cfb64_encrypt(plain,cfb_buf1,12,ks,&cfb_tmp,&n,DES_ENCRYPT);
890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),sizeof(plain)-12,ks,
891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			  &cfb_tmp,&n,DES_ENCRYPT);
892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
894656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("cfb_encrypt encrypt error\n");
896656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<24; i+=8)
897656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%s\n",pt(&(cfb_buf1[i])));
898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
899656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	n=0;
901656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_cfb64_encrypt(cfb_buf1,cfb_buf2,17,ks,&cfb_tmp,&n,DES_DECRYPT);
902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
903656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			  sizeof(plain)-17,ks,&cfb_tmp,&n,DES_DECRYPT);
904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("cfb_encrypt decrypt error\n");
908656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<24; i+=8)
909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%s\n",pt(&(cfb_buf2[i])));
910656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(err);
912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int ede_cfb64_test(unsigned char *cfb_cipher)
915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
916656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks;
917656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int err=0,i,n;
918656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
919656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_checked(&cfb_key,&ks);
920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	n=0;
922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ede3_cfb64_encrypt(plain,cfb_buf1,12,ks,ks,ks,&cfb_tmp,&n,
923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			       DES_ENCRYPT);
924656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ede3_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),
925656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			       sizeof(plain)-12,ks,ks,ks,
926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			       &cfb_tmp,&n,DES_ENCRYPT);
927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("ede_cfb_encrypt encrypt error\n");
931656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<24; i+=8)
932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%s\n",pt(&(cfb_buf1[i])));
933656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	n=0;
936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ede3_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,ks,ks,ks,
937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			       &cfb_tmp,&n,DES_DECRYPT);
938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_ede3_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			       sizeof(plain)-17,ks,ks,ks,
940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			       &cfb_tmp,&n,DES_DECRYPT);
941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
943656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		err=1;
944656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("ede_cfb_encrypt decrypt error\n");
945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<24; i+=8)
946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%s\n",pt(&(cfb_buf2[i])));
947656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(err);
949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
951656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
953