rctest.c revision 1.1.1.1.12.1 1 1.1.1.1.12.1 snj /* $NetBSD: rctest.c,v 1.1.1.1.12.1 2017/08/30 06:54:26 snj Exp $ */
2 1.1 elric
3 1.1 elric /*
4 1.1 elric * Copyright (c) 2004 Kungliga Tekniska Hgskolan
5 1.1 elric * (Royal Institute of Technology, Stockholm, Sweden).
6 1.1 elric * All rights reserved.
7 1.1 elric *
8 1.1 elric * Redistribution and use in source and binary forms, with or without
9 1.1 elric * modification, are permitted provided that the following conditions
10 1.1 elric * are met:
11 1.1 elric *
12 1.1 elric * 1. Redistributions of source code must retain the above copyright
13 1.1 elric * notice, this list of conditions and the following disclaimer.
14 1.1 elric *
15 1.1 elric * 2. Redistributions in binary form must reproduce the above copyright
16 1.1 elric * notice, this list of conditions and the following disclaimer in the
17 1.1 elric * documentation and/or other materials provided with the distribution.
18 1.1 elric *
19 1.1 elric * 3. Neither the name of the Institute nor the names of its contributors
20 1.1 elric * may be used to endorse or promote products derived from this software
21 1.1 elric * without specific prior written permission.
22 1.1 elric *
23 1.1 elric * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
24 1.1 elric * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 1.1 elric * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 1.1 elric * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
27 1.1 elric * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 1.1 elric * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 1.1 elric * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 1.1 elric * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 1.1 elric * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 1.1 elric * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 1.1 elric * SUCH DAMAGE.
34 1.1 elric */
35 1.1 elric
36 1.1 elric #include <config.h>
37 1.1.1.1.12.1 snj #include <krb5/roken.h>
38 1.1 elric #include <rc4.h>
39 1.1 elric
40 1.1 elric static unsigned char plain1[8] =
41 1.1 elric { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
42 1.1 elric static unsigned char key1[8] =
43 1.1 elric { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF };
44 1.1 elric static unsigned char cipher1[8] =
45 1.1 elric { 0x74, 0x94, 0xC2, 0xE7, 0x10, 0x4B, 0x08, 0x79 };
46 1.1 elric
47 1.1 elric static unsigned char plain2[5] =
48 1.1 elric { 0xdc, 0xee, 0x4c, 0xf9, 0x2c };
49 1.1 elric static unsigned char key2[5] =
50 1.1 elric { 0x61, 0x8a, 0x63, 0xd2, 0xfb };
51 1.1 elric static unsigned char cipher2[5] =
52 1.1 elric { 0xf1, 0x38, 0x29, 0xc9, 0xde };
53 1.1 elric
54 1.1 elric static unsigned char plain3[] =
55 1.1 elric {
56 1.1 elric 0x52, 0x75, 0x69, 0x73, 0x6c, 0x69, 0x6e, 0x6e,
57 1.1 elric 0x75, 0x6e, 0x20, 0x6c, 0x61, 0x75, 0x6c, 0x75,
58 1.1 elric 0x20, 0x6b, 0x6f, 0x72, 0x76, 0x69, 0x73, 0x73,
59 1.1 elric 0x73, 0x61, 0x6e, 0x69, 0x2c, 0x20, 0x74, 0xe4,
60 1.1 elric 0x68, 0x6b, 0xe4, 0x70, 0xe4, 0x69, 0x64, 0x65,
61 1.1 elric 0x6e, 0x20, 0x70, 0xe4, 0xe4, 0x6c, 0x6c, 0xe4,
62 1.1 elric 0x20, 0x74, 0xe4, 0x79, 0x73, 0x69, 0x6b, 0x75,
63 1.1 elric 0x75, 0x2e, 0x20, 0x4b, 0x65, 0x73, 0xe4, 0x79,
64 1.1 elric 0xf6, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x6e,
65 1.1 elric 0x6e, 0x69, 0x20, 0x6f, 0x6d, 0x61, 0x6e, 0x61,
66 1.1 elric 0x6e, 0x69, 0x2c, 0x20, 0x6b, 0x61, 0x73, 0x6b,
67 1.1 elric 0x69, 0x73, 0x61, 0x76, 0x75, 0x75, 0x6e, 0x20,
68 1.1 elric 0x6c, 0x61, 0x61, 0x6b, 0x73, 0x6f, 0x74, 0x20,
69 1.1 elric 0x76, 0x65, 0x72, 0x68, 0x6f, 0x75, 0x75, 0x2e,
70 1.1 elric 0x20, 0x45, 0x6e, 0x20, 0x6d, 0x61, 0x20, 0x69,
71 1.1 elric 0x6c, 0x6f, 0x69, 0x74, 0x73, 0x65, 0x2c, 0x20,
72 1.1 elric 0x73, 0x75, 0x72, 0x65, 0x20, 0x68, 0x75, 0x6f,
73 1.1 elric 0x6b, 0x61, 0x61, 0x2c, 0x20, 0x6d, 0x75, 0x74,
74 1.1 elric 0x74, 0x61, 0x20, 0x6d, 0x65, 0x74, 0x73, 0xe4,
75 1.1 elric 0x6e, 0x20, 0x74, 0x75, 0x6d, 0x6d, 0x75, 0x75,
76 1.1 elric 0x73, 0x20, 0x6d, 0x75, 0x6c, 0x6c, 0x65, 0x20,
77 1.1 elric 0x74, 0x75, 0x6f, 0x6b, 0x61, 0x61, 0x2e, 0x20,
78 1.1 elric 0x50, 0x75, 0x75, 0x6e, 0x74, 0x6f, 0x20, 0x70,
79 1.1 elric 0x69, 0x6c, 0x76, 0x65, 0x6e, 0x2c, 0x20, 0x6d,
80 1.1 elric 0x69, 0x20, 0x68, 0x75, 0x6b, 0x6b, 0x75, 0x75,
81 1.1 elric 0x2c, 0x20, 0x73, 0x69, 0x69, 0x6e, 0x74, 0x6f,
82 1.1 elric 0x20, 0x76, 0x61, 0x72, 0x61, 0x6e, 0x20, 0x74,
83 1.1 elric 0x75, 0x75, 0x6c, 0x69, 0x73, 0x65, 0x6e, 0x2c,
84 1.1 elric 0x20, 0x6d, 0x69, 0x20, 0x6e, 0x75, 0x6b, 0x6b,
85 1.1 elric 0x75, 0x75, 0x2e, 0x20, 0x54, 0x75, 0x6f, 0x6b,
86 1.1 elric 0x73, 0x75, 0x74, 0x20, 0x76, 0x61, 0x6e, 0x61,
87 1.1 elric 0x6d, 0x6f, 0x6e, 0x20, 0x6a, 0x61, 0x20, 0x76,
88 1.1 elric 0x61, 0x72, 0x6a, 0x6f, 0x74, 0x20, 0x76, 0x65,
89 1.1 elric 0x65, 0x6e, 0x2c, 0x20, 0x6e, 0x69, 0x69, 0x73,
90 1.1 elric 0x74, 0xe4, 0x20, 0x73, 0x79, 0x64, 0xe4, 0x6d,
91 1.1 elric 0x65, 0x6e, 0x69, 0x20, 0x6c, 0x61, 0x75, 0x6c,
92 1.1 elric 0x75, 0x6e, 0x20, 0x74, 0x65, 0x65, 0x6e, 0x2e,
93 1.1 elric 0x20, 0x2d, 0x20, 0x45, 0x69, 0x6e, 0x6f, 0x20,
94 1.1 elric 0x4c, 0x65, 0x69, 0x6e, 0x6f };
95 1.1 elric
96 1.1 elric static unsigned char key3[16] =
97 1.1 elric { 0x29, 0x04, 0x19, 0x72, 0xfb, 0x42, 0xba, 0x5f,
98 1.1 elric 0xc7, 0x12, 0x77, 0x12, 0xf1, 0x38, 0x29, 0xc9 };
99 1.1 elric
100 1.1 elric const unsigned char cipher3[] =
101 1.1 elric { 0x35, 0x81, 0x86, 0x99, 0x90, 0x01, 0xe6, 0xb5,
102 1.1 elric 0xda, 0xf0, 0x5e, 0xce, 0xeb, 0x7e, 0xee, 0x21,
103 1.1 elric 0xe0, 0x68, 0x9c, 0x1f, 0x00, 0xee, 0xa8, 0x1f,
104 1.1 elric 0x7d, 0xd2, 0xca, 0xae, 0xe1, 0xd2, 0x76, 0x3e,
105 1.1 elric 0x68, 0xaf, 0x0e, 0xad, 0x33, 0xd6, 0x6c, 0x26,
106 1.1 elric 0x8b, 0xc9, 0x46, 0xc4, 0x84, 0xfb, 0xe9, 0x4c,
107 1.1 elric 0x5f, 0x5e, 0x0b, 0x86, 0xa5, 0x92, 0x79, 0xe4,
108 1.1 elric 0xf8, 0x24, 0xe7, 0xa6, 0x40, 0xbd, 0x22, 0x32,
109 1.1 elric 0x10, 0xb0, 0xa6, 0x11, 0x60, 0xb7, 0xbc, 0xe9,
110 1.1 elric 0x86, 0xea, 0x65, 0x68, 0x80, 0x03, 0x59, 0x6b,
111 1.1 elric 0x63, 0x0a, 0x6b, 0x90, 0xf8, 0xe0, 0xca, 0xf6,
112 1.1 elric 0x91, 0x2a, 0x98, 0xeb, 0x87, 0x21, 0x76, 0xe8,
113 1.1 elric 0x3c, 0x20, 0x2c, 0xaa, 0x64, 0x16, 0x6d, 0x2c,
114 1.1 elric 0xce, 0x57, 0xff, 0x1b, 0xca, 0x57, 0xb2, 0x13,
115 1.1 elric 0xf0, 0xed, 0x1a, 0xa7, 0x2f, 0xb8, 0xea, 0x52,
116 1.1 elric 0xb0, 0xbe, 0x01, 0xcd, 0x1e, 0x41, 0x28, 0x67,
117 1.1 elric 0x72, 0x0b, 0x32, 0x6e, 0xb3, 0x89, 0xd0, 0x11,
118 1.1 elric 0xbd, 0x70, 0xd8, 0xaf, 0x03, 0x5f, 0xb0, 0xd8,
119 1.1 elric 0x58, 0x9d, 0xbc, 0xe3, 0xc6, 0x66, 0xf5, 0xea,
120 1.1 elric 0x8d, 0x4c, 0x79, 0x54, 0xc5, 0x0c, 0x3f, 0x34,
121 1.1 elric 0x0b, 0x04, 0x67, 0xf8, 0x1b, 0x42, 0x59, 0x61,
122 1.1 elric 0xc1, 0x18, 0x43, 0x07, 0x4d, 0xf6, 0x20, 0xf2,
123 1.1 elric 0x08, 0x40, 0x4b, 0x39, 0x4c, 0xf9, 0xd3, 0x7f,
124 1.1 elric 0xf5, 0x4b, 0x5f, 0x1a, 0xd8, 0xf6, 0xea, 0x7d,
125 1.1 elric 0xa3, 0xc5, 0x61, 0xdf, 0xa7, 0x28, 0x1f, 0x96,
126 1.1 elric 0x44, 0x63, 0xd2, 0xcc, 0x35, 0xa4, 0xd1, 0xb0,
127 1.1 elric 0x34, 0x90, 0xde, 0xc5, 0x1b, 0x07, 0x11, 0xfb,
128 1.1 elric 0xd6, 0xf5, 0x5f, 0x79, 0x23, 0x4d, 0x5b, 0x7c,
129 1.1 elric 0x76, 0x66, 0x22, 0xa6, 0x6d, 0xe9, 0x2b, 0xe9,
130 1.1 elric 0x96, 0x46, 0x1d, 0x5e, 0x4d, 0xc8, 0x78, 0xef,
131 1.1 elric 0x9b, 0xca, 0x03, 0x05, 0x21, 0xe8, 0x35, 0x1e,
132 1.1 elric 0x4b, 0xae, 0xd2, 0xfd, 0x04, 0xf9, 0x46, 0x73,
133 1.1 elric 0x68, 0xc4, 0xad, 0x6a, 0xc1, 0x86, 0xd0, 0x82,
134 1.1 elric 0x45, 0xb2, 0x63, 0xa2, 0x66, 0x6d, 0x1f, 0x6c,
135 1.1 elric 0x54, 0x20, 0xf1, 0x59, 0x9d, 0xfd, 0x9f, 0x43,
136 1.1 elric 0x89, 0x21, 0xc2, 0xf5, 0xa4, 0x63, 0x93, 0x8c,
137 1.1 elric 0xe0, 0x98, 0x22, 0x65, 0xee, 0xf7, 0x01, 0x79,
138 1.1 elric 0xbc, 0x55, 0x3f, 0x33, 0x9e, 0xb1, 0xa4, 0xc1,
139 1.1 elric 0xaf, 0x5f, 0x6a, 0x54, 0x7f };
140 1.1 elric
141 1.1 elric int
142 1.1 elric main (void)
143 1.1 elric {
144 1.1 elric unsigned char buf[1024];
145 1.1 elric RC4_KEY key;
146 1.1 elric
147 1.1 elric RC4_set_key(&key, 8, key1);
148 1.1 elric RC4(&key, 8, plain1, buf);
149 1.1 elric if (memcmp(buf, cipher1, 8) != 0)
150 1.1 elric return 1;
151 1.1 elric
152 1.1 elric RC4_set_key(&key, 5, key2);
153 1.1 elric RC4(&key, 5, plain2, buf);
154 1.1 elric if (memcmp(buf, cipher2, 5) != 0)
155 1.1 elric return 1;
156 1.1 elric
157 1.1 elric RC4_set_key(&key, 16, key3);
158 1.1 elric RC4(&key, 309, plain3, buf);
159 1.1 elric if (memcmp(buf, cipher3, 309) != 0)
160 1.1 elric return 1;
161 1.1 elric
162 1.1 elric return 0;
163 1.1 elric }
164