Home | History | Annotate | Line # | Download | only in hcrypto
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