]>
Commit | Line | Data |
---|---|---|
440e5d80 RS |
1 | /* |
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. | |
0f113f3e | 3 | * |
440e5d80 RS |
4 | * Licensed under the OpenSSL license (the "License"). You may not use |
5 | * this file except in compliance with the License. You can obtain a copy | |
6 | * in the file LICENSE in the source distribution or at | |
7 | * https://www.openssl.org/source/license.html | |
d02b48c6 RE |
8 | */ |
9 | ||
0f113f3e MC |
10 | /* |
11 | * This has been a quickly hacked 'ideatest.c'. When I add tests for other | |
12 | * RC2 modes, more of the code will be uncommented. | |
13 | */ | |
d02b48c6 RE |
14 | |
15 | #include <stdio.h> | |
16 | #include <string.h> | |
17 | #include <stdlib.h> | |
f5d7a031 | 18 | |
55f78baf RL |
19 | #include "../e_os.h" |
20 | ||
cf1b7d96 | 21 | #ifdef OPENSSL_NO_RC2 |
f5d7a031 UM |
22 | int main(int argc, char *argv[]) |
23 | { | |
24 | printf("No RC2 support\n"); | |
0f113f3e | 25 | return (0); |
f5d7a031 UM |
26 | } |
27 | #else | |
0f113f3e | 28 | # include <openssl/rc2.h> |
d02b48c6 | 29 | |
0f113f3e MC |
30 | static unsigned char RC2key[4][16] = { |
31 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
32 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, | |
33 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
34 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, | |
35 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
36 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, | |
37 | {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | |
38 | 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}, | |
39 | }; | |
d02b48c6 | 40 | |
0f113f3e MC |
41 | static unsigned char RC2plain[4][8] = { |
42 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, | |
43 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, | |
44 | {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, | |
45 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, | |
46 | }; | |
47 | ||
48 | static unsigned char RC2cipher[4][8] = { | |
49 | {0x1C, 0x19, 0x8A, 0x83, 0x8D, 0xF0, 0x28, 0xB7}, | |
50 | {0x21, 0x82, 0x9C, 0x78, 0xA9, 0xF9, 0xC0, 0x74}, | |
51 | {0x13, 0xDB, 0x35, 0x17, 0xD3, 0x21, 0x86, 0x9E}, | |
52 | {0x50, 0xDC, 0x01, 0x62, 0xBD, 0x75, 0x7F, 0x31}, | |
53 | }; | |
d02b48c6 | 54 | |
6b691a5c | 55 | int main(int argc, char *argv[]) |
0f113f3e MC |
56 | { |
57 | int i, n, err = 0; | |
58 | RC2_KEY key; | |
59 | unsigned char buf[8], buf2[8]; | |
d02b48c6 | 60 | |
0f113f3e MC |
61 | for (n = 0; n < 4; n++) { |
62 | RC2_set_key(&key, 16, &(RC2key[n][0]), 0 /* or 1024 */ ); | |
d02b48c6 | 63 | |
0f113f3e MC |
64 | RC2_ecb_encrypt(&(RC2plain[n][0]), buf, &key, RC2_ENCRYPT); |
65 | if (memcmp(&(RC2cipher[n][0]), buf, 8) != 0) { | |
66 | printf("ecb rc2 error encrypting\n"); | |
67 | printf("got :"); | |
68 | for (i = 0; i < 8; i++) | |
69 | printf("%02X ", buf[i]); | |
70 | printf("\n"); | |
71 | printf("expected:"); | |
72 | for (i = 0; i < 8; i++) | |
73 | printf("%02X ", RC2cipher[n][i]); | |
74 | err = 20; | |
75 | printf("\n"); | |
76 | } | |
d02b48c6 | 77 | |
0f113f3e MC |
78 | RC2_ecb_encrypt(buf, buf2, &key, RC2_DECRYPT); |
79 | if (memcmp(&(RC2plain[n][0]), buf2, 8) != 0) { | |
80 | printf("ecb RC2 error decrypting\n"); | |
81 | printf("got :"); | |
82 | for (i = 0; i < 8; i++) | |
83 | printf("%02X ", buf[i]); | |
84 | printf("\n"); | |
85 | printf("expected:"); | |
86 | for (i = 0; i < 8; i++) | |
87 | printf("%02X ", RC2plain[n][i]); | |
88 | printf("\n"); | |
89 | err = 3; | |
90 | } | |
91 | } | |
d02b48c6 | 92 | |
0f113f3e MC |
93 | if (err == 0) |
94 | printf("ecb RC2 ok\n"); | |
d02b48c6 | 95 | |
0f113f3e | 96 | EXIT(err); |
0f113f3e | 97 | } |
d02b48c6 | 98 | |
f5d7a031 | 99 | #endif |