diff options
author | Matt Caswell <matt@openssl.org> | 2015-01-22 03:40:55 +0000 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2015-01-22 09:20:09 +0000 |
commit | 0f113f3ee4d629ef9a4a30911b22b224772085e5 (patch) | |
tree | e014603da5aed1d0751f587a66d6e270b6bda3de /crypto/rc5 | |
parent | 22b52164aaed31d6e93dbd2d397ace041360e6aa (diff) | |
download | openssl-0f113f3ee4d629ef9a4a30911b22b224772085e5.tar.gz |
Run util/openssl-format-source -v -c .
Reviewed-by: Tim Hudson <tjh@openssl.org>
Diffstat (limited to 'crypto/rc5')
-rw-r--r-- | crypto/rc5/rc5.h | 79 | ||||
-rw-r--r-- | crypto/rc5/rc5_ecb.c | 45 | ||||
-rw-r--r-- | crypto/rc5/rc5_enc.c | 292 | ||||
-rw-r--r-- | crypto/rc5/rc5_locl.h | 225 | ||||
-rw-r--r-- | crypto/rc5/rc5_skey.c | 103 | ||||
-rw-r--r-- | crypto/rc5/rc5cfb64.c | 127 | ||||
-rw-r--r-- | crypto/rc5/rc5ofb64.c | 105 | ||||
-rw-r--r-- | crypto/rc5/rc5test.c | 585 |
8 files changed, 772 insertions, 789 deletions
diff --git a/crypto/rc5/rc5.h b/crypto/rc5/rc5.h index a01b5e9f23..38d0b1988e 100644 --- a/crypto/rc5/rc5.h +++ b/crypto/rc5/rc5.h @@ -5,21 +5,21 @@ * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -34,10 +34,10 @@ * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -49,7 +49,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence @@ -57,58 +57,55 @@ */ #ifndef HEADER_RC5_H -#define HEADER_RC5_H +# define HEADER_RC5_H -#include <openssl/opensslconf.h> /* OPENSSL_NO_RC5 */ +# include <openssl/opensslconf.h>/* OPENSSL_NO_RC5 */ #ifdef __cplusplus extern "C" { #endif -#ifdef OPENSSL_NO_RC5 -#error RC5 is disabled. -#endif +# ifdef OPENSSL_NO_RC5 +# error RC5 is disabled. +# endif -#define RC5_ENCRYPT 1 -#define RC5_DECRYPT 0 +# define RC5_ENCRYPT 1 +# define RC5_DECRYPT 0 -#define RC5_32_INT unsigned int +# define RC5_32_INT unsigned int -#define RC5_32_BLOCK 8 -#define RC5_32_KEY_LENGTH 16 /* This is a default, max is 255 */ +# define RC5_32_BLOCK 8 +# define RC5_32_KEY_LENGTH 16/* This is a default, max is 255 */ -/* This are the only values supported. Tweak the code if you want more - * The most supported modes will be - * RC5-32/12/16 - * RC5-32/16/8 +/* + * This are the only values supported. Tweak the code if you want more The + * most supported modes will be RC5-32/12/16 RC5-32/16/8 */ -#define RC5_8_ROUNDS 8 -#define RC5_12_ROUNDS 12 -#define RC5_16_ROUNDS 16 +# define RC5_8_ROUNDS 8 +# define RC5_12_ROUNDS 12 +# define RC5_16_ROUNDS 16 -typedef struct rc5_key_st - { - /* Number of rounds */ - int rounds; - RC5_32_INT data[2*(RC5_16_ROUNDS+1)]; - } RC5_32_KEY; +typedef struct rc5_key_st { + /* Number of rounds */ + int rounds; + RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)]; +} RC5_32_KEY; - void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, - int rounds); -void RC5_32_ecb_encrypt(const unsigned char *in,unsigned char *out,RC5_32_KEY *key, - int enc); -void RC5_32_encrypt(unsigned long *data,RC5_32_KEY *key); -void RC5_32_decrypt(unsigned long *data,RC5_32_KEY *key); + int rounds); +void RC5_32_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC5_32_KEY *key, int enc); +void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out, - long length, RC5_32_KEY *ks, unsigned char *iv, - int enc); + long length, RC5_32_KEY *ks, unsigned char *iv, + int enc); void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out, - long length, RC5_32_KEY *schedule, - unsigned char *ivec, int *num, int enc); + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num, int enc); void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out, - long length, RC5_32_KEY *schedule, - unsigned char *ivec, int *num); + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num); #ifdef __cplusplus } diff --git a/crypto/rc5/rc5_ecb.c b/crypto/rc5/rc5_ecb.c index e72b535507..e657a93b9a 100644 --- a/crypto/rc5/rc5_ecb.c +++ b/crypto/rc5/rc5_ecb.c @@ -5,21 +5,21 @@ * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -34,10 +34,10 @@ * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -49,7 +49,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence @@ -60,21 +60,24 @@ #include "rc5_locl.h" #include <openssl/opensslv.h> -const char RC5_version[]="RC5" OPENSSL_VERSION_PTEXT; +const char RC5_version[] = "RC5" OPENSSL_VERSION_PTEXT; void RC5_32_ecb_encrypt(const unsigned char *in, unsigned char *out, - RC5_32_KEY *ks, int encrypt) - { - unsigned long l,d[2]; - - c2l(in,l); d[0]=l; - c2l(in,l); d[1]=l; - if (encrypt) - RC5_32_encrypt(d,ks); - else - RC5_32_decrypt(d,ks); - l=d[0]; l2c(l,out); - l=d[1]; l2c(l,out); - l=d[0]=d[1]=0; - } + RC5_32_KEY *ks, int encrypt) +{ + unsigned long l, d[2]; + c2l(in, l); + d[0] = l; + c2l(in, l); + d[1] = l; + if (encrypt) + RC5_32_encrypt(d, ks); + else + RC5_32_decrypt(d, ks); + l = d[0]; + l2c(l, out); + l = d[1]; + l2c(l, out); + l = d[0] = d[1] = 0; +} diff --git a/crypto/rc5/rc5_enc.c b/crypto/rc5/rc5_enc.c index f327d32a76..06b89d83a1 100644 --- a/crypto/rc5/rc5_enc.c +++ b/crypto/rc5/rc5_enc.c @@ -5,21 +5,21 @@ * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -34,10 +34,10 @@ * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -49,7 +49,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence @@ -61,155 +61,149 @@ #include "rc5_locl.h" void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out, - long length, RC5_32_KEY *ks, unsigned char *iv, - int encrypt) - { - register unsigned long tin0,tin1; - register unsigned long tout0,tout1,xor0,xor1; - register long l=length; - unsigned long tin[2]; + long length, RC5_32_KEY *ks, unsigned char *iv, + int encrypt) +{ + register unsigned long tin0, tin1; + register unsigned long tout0, tout1, xor0, xor1; + register long l = length; + unsigned long tin[2]; - if (encrypt) - { - c2l(iv,tout0); - c2l(iv,tout1); - iv-=8; - for (l-=8; l>=0; l-=8) - { - c2l(in,tin0); - c2l(in,tin1); - tin0^=tout0; - tin1^=tout1; - tin[0]=tin0; - tin[1]=tin1; - RC5_32_encrypt(tin,ks); - tout0=tin[0]; l2c(tout0,out); - tout1=tin[1]; l2c(tout1,out); - } - if (l != -8) - { - c2ln(in,tin0,tin1,l+8); - tin0^=tout0; - tin1^=tout1; - tin[0]=tin0; - tin[1]=tin1; - RC5_32_encrypt(tin,ks); - tout0=tin[0]; l2c(tout0,out); - tout1=tin[1]; l2c(tout1,out); - } - l2c(tout0,iv); - l2c(tout1,iv); - } - else - { - c2l(iv,xor0); - c2l(iv,xor1); - iv-=8; - for (l-=8; l>=0; l-=8) - { - c2l(in,tin0); tin[0]=tin0; - c2l(in,tin1); tin[1]=tin1; - RC5_32_decrypt(tin,ks); - tout0=tin[0]^xor0; - tout1=tin[1]^xor1; - l2c(tout0,out); - l2c(tout1,out); - xor0=tin0; - xor1=tin1; - } - if (l != -8) - { - c2l(in,tin0); tin[0]=tin0; - c2l(in,tin1); tin[1]=tin1; - RC5_32_decrypt(tin,ks); - tout0=tin[0]^xor0; - tout1=tin[1]^xor1; - l2cn(tout0,tout1,out,l+8); - xor0=tin0; - xor1=tin1; - } - l2c(xor0,iv); - l2c(xor1,iv); - } - tin0=tin1=tout0=tout1=xor0=xor1=0; - tin[0]=tin[1]=0; - } + if (encrypt) { + c2l(iv, tout0); + c2l(iv, tout1); + iv -= 8; + for (l -= 8; l >= 0; l -= 8) { + c2l(in, tin0); + c2l(in, tin1); + tin0 ^= tout0; + tin1 ^= tout1; + tin[0] = tin0; + tin[1] = tin1; + RC5_32_encrypt(tin, ks); + tout0 = tin[0]; + l2c(tout0, out); + tout1 = tin[1]; + l2c(tout1, out); + } + if (l != -8) { + c2ln(in, tin0, tin1, l + 8); + tin0 ^= tout0; + tin1 ^= tout1; + tin[0] = tin0; + tin[1] = tin1; + RC5_32_encrypt(tin, ks); + tout0 = tin[0]; + l2c(tout0, out); + tout1 = tin[1]; + l2c(tout1, out); + } + l2c(tout0, iv); + l2c(tout1, iv); + } else { + c2l(iv, xor0); + c2l(iv, xor1); + iv -= 8; + for (l -= 8; l >= 0; l -= 8) { + c2l(in, tin0); + tin[0] = tin0; + c2l(in, tin1); + tin[1] = tin1; + RC5_32_decrypt(tin, ks); + tout0 = tin[0] ^ xor0; + tout1 = tin[1] ^ xor1; + l2c(tout0, out); + l2c(tout1, out); + xor0 = tin0; + xor1 = tin1; + } + if (l != -8) { + c2l(in, tin0); + tin[0] = tin0; + c2l(in, tin1); + tin[1] = tin1; + RC5_32_decrypt(tin, ks); + tout0 = tin[0] ^ xor0; + tout1 = tin[1] ^ xor1; + l2cn(tout0, tout1, out, l + 8); + xor0 = tin0; + xor1 = tin1; + } + l2c(xor0, iv); + l2c(xor1, iv); + } + tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0; + tin[0] = tin[1] = 0; +} void RC5_32_encrypt(unsigned long *d, RC5_32_KEY *key) - { - RC5_32_INT a,b,*s; +{ + RC5_32_INT a, b, *s; - s=key->data; + s = key->data; - a=d[0]+s[0]; - b=d[1]+s[1]; - E_RC5_32(a,b,s, 2); - E_RC5_32(a,b,s, 4); - E_RC5_32(a,b,s, 6); - E_RC5_32(a,b,s, 8); - E_RC5_32(a,b,s,10); - E_RC5_32(a,b,s,12); - E_RC5_32(a,b,s,14); - E_RC5_32(a,b,s,16); - if (key->rounds == 12) - { - E_RC5_32(a,b,s,18); - E_RC5_32(a,b,s,20); - E_RC5_32(a,b,s,22); - E_RC5_32(a,b,s,24); - } - else if (key->rounds == 16) - { - /* Do a full expansion to avoid a jump */ - E_RC5_32(a,b,s,18); - E_RC5_32(a,b,s,20); - E_RC5_32(a,b,s,22); - E_RC5_32(a,b,s,24); - E_RC5_32(a,b,s,26); - E_RC5_32(a,b,s,28); - E_RC5_32(a,b,s,30); - E_RC5_32(a,b,s,32); - } - d[0]=a; - d[1]=b; - } + a = d[0] + s[0]; + b = d[1] + s[1]; + E_RC5_32(a, b, s, 2); + E_RC5_32(a, b, s, 4); + E_RC5_32(a, b, s, 6); + E_RC5_32(a, b, s, 8); + E_RC5_32(a, b, s, 10); + E_RC5_32(a, b, s, 12); + E_RC5_32(a, b, s, 14); + E_RC5_32(a, b, s, 16); + if (key->rounds == 12) { + E_RC5_32(a, b, s, 18); + E_RC5_32(a, b, s, 20); + E_RC5_32(a, b, s, 22); + E_RC5_32(a, b, s, 24); + } else if (key->rounds == 16) { + /* Do a full expansion to avoid a jump */ + E_RC5_32(a, b, s, 18); + E_RC5_32(a, b, s, 20); + E_RC5_32(a, b, s, 22); + E_RC5_32(a, b, s, 24); + E_RC5_32(a, b, s, 26); + E_RC5_32(a, b, s, 28); + E_RC5_32(a, b, s, 30); + E_RC5_32(a, b, s, 32); + } + d[0] = a; + d[1] = b; +} void RC5_32_decrypt(unsigned long *d, RC5_32_KEY *key) - { - RC5_32_INT a,b,*s; - - s=key->data; +{ + RC5_32_INT a, b, *s; - a=d[0]; - b=d[1]; - if (key->rounds == 16) - { - D_RC5_32(a,b,s,32); - D_RC5_32(a,b,s,30); - D_RC5_32(a,b,s,28); - D_RC5_32(a,b,s,26); - /* Do a full expansion to avoid a jump */ - D_RC5_32(a,b,s,24); - D_RC5_32(a,b,s,22); - D_RC5_32(a,b,s,20); - D_RC5_32(a,b,s,18); - } - else if (key->rounds == 12) - { - D_RC5_32(a,b,s,24); - D_RC5_32(a,b,s,22); - D_RC5_32(a,b,s,20); - D_RC5_32(a,b,s,18); - } - D_RC5_32(a,b,s,16); - D_RC5_32(a,b,s,14); - D_RC5_32(a,b,s,12); - D_RC5_32(a,b,s,10); - D_RC5_32(a,b,s, 8); - D_RC5_32(a,b,s, 6); - D_RC5_32(a,b,s, 4); - D_RC5_32(a,b,s, 2); - d[0]=a-s[0]; - d[1]=b-s[1]; - } + s = key->data; + a = d[0]; + b = d[1]; + if (key->rounds == 16) { + D_RC5_32(a, b, s, 32); + D_RC5_32(a, b, s, 30); + D_RC5_32(a, b, s, 28); + D_RC5_32(a, b, s, 26); + /* Do a full expansion to avoid a jump */ + D_RC5_32(a, b, s, 24); + D_RC5_32(a, b, s, 22); + D_RC5_32(a, b, s, 20); + D_RC5_32(a, b, s, 18); + } else if (key->rounds == 12) { + D_RC5_32(a, b, s, 24); + D_RC5_32(a, b, s, 22); + D_RC5_32(a, b, s, 20); + D_RC5_32(a, b, s, 18); + } + D_RC5_32(a, b, s, 16); + D_RC5_32(a, b, s, 14); + D_RC5_32(a, b, s, 12); + D_RC5_32(a, b, s, 10); + D_RC5_32(a, b, s, 8); + D_RC5_32(a, b, s, 6); + D_RC5_32(a, b, s, 4); + D_RC5_32(a, b, s, 2); + d[0] = a - s[0]; + d[1] = b - s[1]; +} diff --git a/crypto/rc5/rc5_locl.h b/crypto/rc5/rc5_locl.h index d3e8001160..ee757e6477 100644 --- a/crypto/rc5/rc5_locl.h +++ b/crypto/rc5/rc5_locl.h @@ -5,21 +5,21 @@ * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -34,10 +34,10 @@ * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -49,7 +49,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence @@ -59,80 +59,80 @@ #include <stdlib.h> #undef c2l -#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \ - l|=((unsigned long)(*((c)++)))<< 8L, \ - l|=((unsigned long)(*((c)++)))<<16L, \ - l|=((unsigned long)(*((c)++)))<<24L) +#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \ + l|=((unsigned long)(*((c)++)))<< 8L, \ + l|=((unsigned long)(*((c)++)))<<16L, \ + l|=((unsigned long)(*((c)++)))<<24L) /* NOTE - c is not incremented as per c2l */ #undef c2ln -#define c2ln(c,l1,l2,n) { \ - c+=n; \ - l1=l2=0; \ - switch (n) { \ - case 8: l2 =((unsigned long)(*(--(c))))<<24L; \ - case 7: l2|=((unsigned long)(*(--(c))))<<16L; \ - case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \ - case 5: l2|=((unsigned long)(*(--(c)))); \ - case 4: l1 =((unsigned long)(*(--(c))))<<24L; \ - case 3: l1|=((unsigned long)(*(--(c))))<<16L; \ - case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \ - case 1: l1|=((unsigned long)(*(--(c)))); \ - } \ - } +#define c2ln(c,l1,l2,n) { \ + c+=n; \ + l1=l2=0; \ + switch (n) { \ + case 8: l2 =((unsigned long)(*(--(c))))<<24L; \ + case 7: l2|=((unsigned long)(*(--(c))))<<16L; \ + case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \ + case 5: l2|=((unsigned long)(*(--(c)))); \ + case 4: l1 =((unsigned long)(*(--(c))))<<24L; \ + case 3: l1|=((unsigned long)(*(--(c))))<<16L; \ + case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \ + case 1: l1|=((unsigned long)(*(--(c)))); \ + } \ + } #undef l2c -#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ - *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \ - *((c)++)=(unsigned char)(((l)>>16L)&0xff), \ - *((c)++)=(unsigned char)(((l)>>24L)&0xff)) +#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ + *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \ + *((c)++)=(unsigned char)(((l)>>16L)&0xff), \ + *((c)++)=(unsigned char)(((l)>>24L)&0xff)) /* NOTE - c is not incremented as per l2c */ #undef l2cn -#define l2cn(l1,l2,c,n) { \ - c+=n; \ - switch (n) { \ - case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \ - case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \ - case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \ - case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \ - case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \ - case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \ - case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \ - case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \ - } \ - } +#define l2cn(l1,l2,c,n) { \ + c+=n; \ + switch (n) { \ + case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \ + case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \ + case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \ + case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \ + case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \ + case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \ + case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \ + case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \ + } \ + } /* NOTE - c is not incremented as per n2l */ -#define n2ln(c,l1,l2,n) { \ - c+=n; \ - l1=l2=0; \ - switch (n) { \ - case 8: l2 =((unsigned long)(*(--(c)))) ; \ - case 7: l2|=((unsigned long)(*(--(c))))<< 8; \ - case 6: l2|=((unsigned long)(*(--(c))))<<16; \ - case 5: l2|=((unsigned long)(*(--(c))))<<24; \ - case 4: l1 =((unsigned long)(*(--(c)))) ; \ - case 3: l1|=((unsigned long)(*(--(c))))<< 8; \ - case 2: l1|=((unsigned long)(*(--(c))))<<16; \ - case 1: l1|=((unsigned long)(*(--(c))))<<24; \ - } \ - } +#define n2ln(c,l1,l2,n) { \ + c+=n; \ + l1=l2=0; \ + switch (n) { \ + case 8: l2 =((unsigned long)(*(--(c)))) ; \ + case 7: l2|=((unsigned long)(*(--(c))))<< 8; \ + case 6: l2|=((unsigned long)(*(--(c))))<<16; \ + case 5: l2|=((unsigned long)(*(--(c))))<<24; \ + case 4: l1 =((unsigned long)(*(--(c)))) ; \ + case 3: l1|=((unsigned long)(*(--(c))))<< 8; \ + case 2: l1|=((unsigned long)(*(--(c))))<<16; \ + case 1: l1|=((unsigned long)(*(--(c))))<<24; \ + } \ + } /* NOTE - c is not incremented as per l2n */ -#define l2nn(l1,l2,c,n) { \ - c+=n; \ - switch (n) { \ - case 8: *(--(c))=(unsigned char)(((l2) )&0xff); \ - case 7: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \ - case 6: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \ - case 5: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \ - case 4: *(--(c))=(unsigned char)(((l1) )&0xff); \ - case 3: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \ - case 2: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \ - case 1: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \ - } \ - } +#define l2nn(l1,l2,c,n) { \ + c+=n; \ + switch (n) { \ + case 8: *(--(c))=(unsigned char)(((l2) )&0xff); \ + case 7: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \ + case 6: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \ + case 5: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \ + case 4: *(--(c))=(unsigned char)(((l1) )&0xff); \ + case 3: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \ + case 2: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \ + case 1: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \ + } \ + } #undef n2l #define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24L, \ @@ -147,64 +147,61 @@ *((c)++)=(unsigned char)(((l) )&0xff)) #if (defined(OPENSSL_SYS_WIN32) && defined(_MSC_VER)) -#define ROTATE_l32(a,n) _lrotl(a,n) -#define ROTATE_r32(a,n) _lrotr(a,n) +# define ROTATE_l32(a,n) _lrotl(a,n) +# define ROTATE_r32(a,n) _lrotr(a,n) #elif defined(__ICC) -#define ROTATE_l32(a,n) _rotl(a,n) -#define ROTATE_r32(a,n) _rotr(a,n) +# define ROTATE_l32(a,n) _rotl(a,n) +# define ROTATE_r32(a,n) _rotr(a,n) #elif defined(__GNUC__) && __GNUC__>=2 && !defined(__STRICT_ANSI__) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) && !defined(PEDANTIC) # if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__) -# define ROTATE_l32(a,n) ({ register unsigned int ret; \ - asm ("roll %%cl,%0" \ - : "=r"(ret) \ - : "c"(n),"0"((unsigned int)(a)) \ - : "cc"); \ - ret; \ - }) -# define ROTATE_r32(a,n) ({ register unsigned int ret; \ - asm ("rorl %%cl,%0" \ - : "=r"(ret) \ - : "c"(n),"0"((unsigned int)(a)) \ - : "cc"); \ - ret; \ - }) +# define ROTATE_l32(a,n) ({ register unsigned int ret; \ + asm ("roll %%cl,%0" \ + : "=r"(ret) \ + : "c"(n),"0"((unsigned int)(a)) \ + : "cc"); \ + ret; \ + }) +# define ROTATE_r32(a,n) ({ register unsigned int ret; \ + asm ("rorl %%cl,%0" \ + : "=r"(ret) \ + : "c"(n),"0"((unsigned int)(a)) \ + : "cc"); \ + ret; \ + }) # endif #endif #ifndef ROTATE_l32 -#define ROTATE_l32(a,n) (((a)<<(n&0x1f))|(((a)&0xffffffff)>>(32-(n&0x1f)))) +# define ROTATE_l32(a,n) (((a)<<(n&0x1f))|(((a)&0xffffffff)>>(32-(n&0x1f)))) #endif #ifndef ROTATE_r32 -#define ROTATE_r32(a,n) (((a)<<(32-(n&0x1f)))|(((a)&0xffffffff)>>(n&0x1f))) +# define ROTATE_r32(a,n) (((a)<<(32-(n&0x1f)))|(((a)&0xffffffff)>>(n&0x1f))) #endif -#define RC5_32_MASK 0xffffffffL +#define RC5_32_MASK 0xffffffffL -#define RC5_16_P 0xB7E1 -#define RC5_16_Q 0x9E37 -#define RC5_32_P 0xB7E15163L -#define RC5_32_Q 0x9E3779B9L -#define RC5_64_P 0xB7E151628AED2A6BLL -#define RC5_64_Q 0x9E3779B97F4A7C15LL +#define RC5_16_P 0xB7E1 +#define RC5_16_Q 0x9E37 +#define RC5_32_P 0xB7E15163L +#define RC5_32_Q 0x9E3779B9L +#define RC5_64_P 0xB7E151628AED2A6BLL +#define RC5_64_Q 0x9E3779B97F4A7C15LL #define E_RC5_32(a,b,s,n) \ - a^=b; \ - a=ROTATE_l32(a,b); \ - a+=s[n]; \ - a&=RC5_32_MASK; \ - b^=a; \ - b=ROTATE_l32(b,a); \ - b+=s[n+1]; \ - b&=RC5_32_MASK; + a^=b; \ + a=ROTATE_l32(a,b); \ + a+=s[n]; \ + a&=RC5_32_MASK; \ + b^=a; \ + b=ROTATE_l32(b,a); \ + b+=s[n+1]; \ + b&=RC5_32_MASK; #define D_RC5_32(a,b,s,n) \ - b-=s[n+1]; \ - b&=RC5_32_MASK; \ - b=ROTATE_r32(b,a); \ - b^=a; \ - a-=s[n]; \ - a&=RC5_32_MASK; \ - a=ROTATE_r32(a,b); \ - a^=b; - - - + b-=s[n+1]; \ + b&=RC5_32_MASK; \ + b=ROTATE_r32(b,a); \ + b^=a; \ + a-=s[n]; \ + a&=RC5_32_MASK; \ + a=ROTATE_r32(a,b); \ + a^=b; diff --git a/crypto/rc5/rc5_skey.c b/crypto/rc5/rc5_skey.c index a2e00a41c5..5dd4a52743 100644 --- a/crypto/rc5/rc5_skey.c +++ b/crypto/rc5/rc5_skey.c @@ -5,21 +5,21 @@ * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -34,10 +34,10 @@ * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -49,7 +49,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence @@ -60,54 +60,51 @@ #include "rc5_locl.h" void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, - int rounds) - { - RC5_32_INT L[64],l,ll,A,B,*S,k; - int i,j,m,c,t,ii,jj; - - if ( (rounds != RC5_16_ROUNDS) && - (rounds != RC5_12_ROUNDS) && - (rounds != RC5_8_ROUNDS)) - rounds=RC5_16_ROUNDS; + int rounds) +{ + RC5_32_INT L[64], l, ll, A, B, *S, k; + int i, j, m, c, t, ii, jj; - key->rounds=rounds; - S= &(key->data[0]); - j=0; - for (i=0; i<=(len-8); i+=8) - { - c2l(data,l); - L[j++]=l; - c2l(data,l); - L[j++]=l; - } - ii=len-i; - if (ii) - { - k=len&0x07; - c2ln(data,l,ll,k); - L[j+0]=l; - L[j+1]=ll; - } + if ((rounds != RC5_16_ROUNDS) && + (rounds != RC5_12_ROUNDS) && (rounds != RC5_8_ROUNDS)) + rounds = RC5_16_ROUNDS; - c=(len+3)/4; - t=(rounds+1)*2; - S[0]=RC5_32_P; - for (i=1; i<t; i++) - S[i]=(S[i-1]+RC5_32_Q)&RC5_32_MASK; + key->rounds = rounds; + S = &(key->data[0]); + j = 0; + for (i = 0; i <= (len - 8); i += 8) { + c2l(data, l); + L[j++] = l; + c2l(data, l); + L[j++] = l; + } + ii = len - i; + if (ii) { + k = len & 0x07; + c2ln(data, l, ll, k); + L[j + 0] = l; + L[j + 1] = ll; + } - j=(t>c)?t:c; - j*=3; - ii=jj=0; - A=B=0; - for (i=0; i<j; i++) - { - k=(S[ii]+A+B)&RC5_32_MASK; - A=S[ii]=ROTATE_l32(k,3); - m=(int)(A+B); - k=(L[jj]+A+B)&RC5_32_MASK; - B=L[jj]=ROTATE_l32(k,m); - if (++ii >= t) ii=0; - if (++jj >= c) jj=0; - } - } + c = (len + 3) / 4; + t = (rounds + 1) * 2; + S[0] = RC5_32_P; + for (i = 1; i < t; i++) + S[i] = (S[i - 1] + RC5_32_Q) & RC5_32_MASK; + j = (t > c) ? t : c; + j *= 3; + ii = jj = 0; + A = B = 0; + for (i = 0; i < j; i++) { + k = (S[ii] + A + B) & RC5_32_MASK; + A = S[ii] = ROTATE_l32(k, 3); + m = (int)(A + B); + k = (L[jj] + A + B) & RC5_32_MASK; + B = L[jj] = ROTATE_l32(k, m); + if (++ii >= t) + ii = 0; + if (++jj >= c) + jj = 0; + } +} diff --git a/crypto/rc5/rc5cfb64.c b/crypto/rc5/rc5cfb64.c index 3a8b60bc7a..a3813e030b 100644 --- a/crypto/rc5/rc5cfb64.c +++ b/crypto/rc5/rc5cfb64.c @@ -5,21 +5,21 @@ * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -34,10 +34,10 @@ * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -49,7 +49,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence @@ -59,64 +59,65 @@ #include <openssl/rc5.h> #include "rc5_locl.h" -/* The input and output encrypted as though 64bit cfb mode is being - * used. The extra state information to record how much of the - * 64bit block we have used is contained in *num; +/* + * The input and output encrypted as though 64bit cfb mode is being used. + * The extra state information to record how much of the 64bit block we have + * used is contained in *num; */ void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out, - long length, RC5_32_KEY *schedule, - unsigned char *ivec, int *num, int encrypt) - { - register unsigned long v0,v1,t; - register int n= *num; - register long l=length; - unsigned long ti[2]; - unsigned char *iv,c,cc; - - iv=(unsigned char *)ivec; - if (encrypt) - { - while (l--) - { - if (n == 0) - { - c2l(iv,v0); ti[0]=v0; - c2l(iv,v1); ti[1]=v1; - RC5_32_encrypt((unsigned long *)ti,schedule); - iv=(unsigned char *)ivec; - t=ti[0]; l2c(t,iv); - t=ti[1]; l2c(t,iv); - iv=(unsigned char *)ivec; - } - c= *(in++)^iv[n]; - *(out++)=c; - iv[n]=c; - n=(n+1)&0x07; - } - } - else - { - while (l--) - { - if (n == 0) - { - c2l(iv,v0); ti[0]=v0; - c2l(iv,v1); ti[1]=v1; - RC5_32_encrypt((unsigned long *)ti,schedule); - iv=(unsigned char *)ivec; - t=ti[0]; l2c(t,iv); - t=ti[1]; l2c(t,iv); - iv=(unsigned char *)ivec; - } - cc= *(in++); - c=iv[n]; - iv[n]=cc; - *(out++)=c^cc; - n=(n+1)&0x07; - } - } - v0=v1=ti[0]=ti[1]=t=c=cc=0; - *num=n; - } + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num, int encrypt) +{ + register unsigned long v0, v1, t; + register int n = *num; + register long l = length; + unsigned long ti[2]; + unsigned char *iv, c, cc; + iv = (unsigned char *)ivec; + if (encrypt) { + while (l--) { + if (n == 0) { + c2l(iv, v0); + ti[0] = v0; + c2l(iv, v1); + ti[1] = v1; + RC5_32_encrypt((unsigned long *)ti, schedule); + iv = (unsigned char *)ivec; + t = ti[0]; + l2c(t, iv); + t = ti[1]; + l2c(t, iv); + iv = (unsigned char *)ivec; + } + c = *(in++) ^ iv[n]; + *(out++) = c; + iv[n] = c; + n = (n + 1) & 0x07; + } + } else { + while (l--) { + if (n == 0) { + c2l(iv, v0); + ti[0] = v0; + c2l(iv, v1); + ti[1] = v1; + RC5_32_encrypt((unsigned long *)ti, schedule); + iv = (unsigned char *)ivec; + t = ti[0]; + l2c(t, iv); + t = ti[1]; + l2c(t, iv); + iv = (unsigned char *)ivec; + } + cc = *(in++); + c = iv[n]; + iv[n] = cc; + *(out++) = c ^ cc; + n = (n + 1) & 0x07; + } + } + v0 = v1 = ti[0] = ti[1] = t = c = cc = 0; + *num = n; +} diff --git a/crypto/rc5/rc5ofb64.c b/crypto/rc5/rc5ofb64.c index d412215f3c..d3c63067b7 100644 --- a/crypto/rc5/rc5ofb64.c +++ b/crypto/rc5/rc5ofb64.c @@ -5,21 +5,21 @@ * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -34,10 +34,10 @@ * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -49,7 +49,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence @@ -59,53 +59,52 @@ #include <openssl/rc5.h> #include "rc5_locl.h" -/* The input and output encrypted as though 64bit ofb mode is being - * used. The extra state information to record how much of the - * 64bit block we have used is contained in *num; +/* + * The input and output encrypted as though 64bit ofb mode is being used. + * The extra state information to record how much of the 64bit block we have + * used is contained in *num; */ void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out, - long length, RC5_32_KEY *schedule, - unsigned char *ivec, int *num) - { - register unsigned long v0,v1,t; - register int n= *num; - register long l=length; - unsigned char d[8]; - register char *dp; - unsigned long ti[2]; - unsigned char *iv; - int save=0; - - iv=(unsigned char *)ivec; - c2l(iv,v0); - c2l(iv,v1); - ti[0]=v0; - ti[1]=v1; - dp=(char *)d; - l2c(v0,dp); - l2c(v1,dp); - while (l--) - { - if (n == 0) - { - RC5_32_encrypt((unsigned long *)ti,schedule); - dp=(char *)d; - t=ti[0]; l2c(t,dp); - t=ti[1]; l2c(t,dp); - save++; - } - *(out++)= *(in++)^d[n]; - n=(n+1)&0x07; - } - if (save) - { - v0=ti[0]; - v1=ti[1]; - iv=(unsigned char *)ivec; - l2c(v0,iv); - l2c(v1,iv); - } - t=v0=v1=ti[0]=ti[1]=0; - *num=n; - } + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num) +{ + register unsigned long v0, v1, t; + register int n = *num; + register long l = length; + unsigned char d[8]; + register char *dp; + unsigned long ti[2]; + unsigned char *iv; + int save = 0; + iv = (unsigned char *)ivec; + c2l(iv, v0); + c2l(iv, v1); + ti[0] = v0; + ti[1] = v1; + dp = (char *)d; + l2c(v0, dp); + l2c(v1, dp); + while (l--) { + if (n == 0) { + RC5_32_encrypt((unsigned long *)ti, schedule); + dp = (char *)d; + t = ti[0]; + l2c(t, dp); + t = ti[1]; + l2c(t, dp); + save++; + } + *(out++) = *(in++) ^ d[n]; + n = (n + 1) & 0x07; + } + if (save) { + v0 = ti[0]; + v1 = ti[1]; + iv = (unsigned char *)ivec; + l2c(v0, iv); + l2c(v1, iv); + } + t = v0 = v1 = ti[0] = ti[1] = 0; + *num = n; +} diff --git a/crypto/rc5/rc5test.c b/crypto/rc5/rc5test.c index ce3d0cc16f..b29a436cec 100644 --- a/crypto/rc5/rc5test.c +++ b/crypto/rc5/rc5test.c @@ -5,21 +5,21 @@ * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -34,10 +34,10 @@ * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -49,15 +49,17 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence * [including the GNU Public Licence.] */ -/* This has been a quickly hacked 'ideatest.c'. When I add tests for other - * RC5 modes, more of the code will be uncommented. */ +/* + * This has been a quickly hacked 'ideatest.c'. When I add tests for other + * RC5 modes, more of the code will be uncommented. + */ #include <stdio.h> #include <string.h> @@ -69,318 +71,311 @@ int main(int argc, char *argv[]) { printf("No RC5 support\n"); - return(0); + return (0); } #else -#include <openssl/rc5.h> +# include <openssl/rc5.h> -static unsigned char RC5key[5][16]={ - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x91,0x5f,0x46,0x19,0xbe,0x41,0xb2,0x51, - 0x63,0x55,0xa5,0x01,0x10,0xa9,0xce,0x91}, - {0x78,0x33,0x48,0xe7,0x5a,0xeb,0x0f,0x2f, - 0xd7,0xb1,0x69,0xbb,0x8d,0xc1,0x67,0x87}, - {0xdc,0x49,0xdb,0x13,0x75,0xa5,0x58,0x4f, - 0x64,0x85,0xb4,0x13,0xb5,0xf1,0x2b,0xaf}, - {0x52,0x69,0xf1,0x49,0xd4,0x1b,0xa0,0x15, - 0x24,0x97,0x57,0x4d,0x7f,0x15,0x31,0x25}, - }; +static unsigned char RC5key[5][16] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x91, 0x5f, 0x46, 0x19, 0xbe, 0x41, 0xb2, 0x51, + 0x63, 0x55, 0xa5, 0x01, 0x10, 0xa9, 0xce, 0x91}, + {0x78, 0x33, 0x48, 0xe7, 0x5a, 0xeb, 0x0f, 0x2f, + 0xd7, 0xb1, 0x69, 0xbb, 0x8d, 0xc1, 0x67, 0x87}, + {0xdc, 0x49, 0xdb, 0x13, 0x75, 0xa5, 0x58, 0x4f, + 0x64, 0x85, 0xb4, 0x13, 0xb5, 0xf1, 0x2b, 0xaf}, + {0x52, 0x69, 0xf1, 0x49, 0xd4, 0x1b, 0xa0, 0x15, + 0x24, 0x97, 0x57, 0x4d, 0x7f, 0x15, 0x31, 0x25}, +}; -static unsigned char RC5plain[5][8]={ - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x21,0xA5,0xDB,0xEE,0x15,0x4B,0x8F,0x6D}, - {0xF7,0xC0,0x13,0xAC,0x5B,0x2B,0x89,0x52}, - {0x2F,0x42,0xB3,0xB7,0x03,0x69,0xFC,0x92}, - {0x65,0xC1,0x78,0xB2,0x84,0xD1,0x97,0xCC}, - }; +static unsigned char RC5plain[5][8] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x21, 0xA5, 0xDB, 0xEE, 0x15, 0x4B, 0x8F, 0x6D}, + {0xF7, 0xC0, 0x13, 0xAC, 0x5B, 0x2B, 0x89, 0x52}, + {0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92}, + {0x65, 0xC1, 0x78, 0xB2, 0x84, 0xD1, 0x97, 0xCC}, +}; -static unsigned char RC5cipher[5][8]={ - {0x21,0xA5,0xDB,0xEE,0x15,0x4B,0x8F,0x6D}, - {0xF7,0xC0,0x13,0xAC,0x5B,0x2B,0x89,0x52}, - {0x2F,0x42,0xB3,0xB7,0x03,0x69,0xFC,0x92}, - {0x65,0xC1,0x78,0xB2,0x84,0xD1,0x97,0xCC}, - {0xEB,0x44,0xE4,0x15,0xDA,0x31,0x98,0x24}, - }; +static unsigned char RC5cipher[5][8] = { + {0x21, 0xA5, 0xDB, 0xEE, 0x15, 0x4B, 0x8F, 0x6D}, + {0xF7, 0xC0, 0x13, 0xAC, 0x5B, 0x2B, 0x89, 0x52}, + {0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92}, + {0x65, 0xC1, 0x78, 0xB2, 0x84, 0xD1, 0x97, 0xCC}, + {0xEB, 0x44, 0xE4, 0x15, 0xDA, 0x31, 0x98, 0x24}, +}; -#define RC5_CBC_NUM 27 -static unsigned char rc5_cbc_cipher[RC5_CBC_NUM][8]={ - {0x7a,0x7b,0xba,0x4d,0x79,0x11,0x1d,0x1e}, - {0x79,0x7b,0xba,0x4d,0x78,0x11,0x1d,0x1e}, - {0x7a,0x7b,0xba,0x4d,0x79,0x11,0x1d,0x1f}, - {0x7a,0x7b,0xba,0x4d,0x79,0x11,0x1d,0x1f}, - {0x8b,0x9d,0xed,0x91,0xce,0x77,0x94,0xa6}, - {0x2f,0x75,0x9f,0xe7,0xad,0x86,0xa3,0x78}, - {0xdc,0xa2,0x69,0x4b,0xf4,0x0e,0x07,0x88}, - {0xdc,0xa2,0x69,0x4b,0xf4,0x0e,0x07,0x88}, - {0xdc,0xfe,0x09,0x85,0x77,0xec,0xa5,0xff}, - {0x96,0x46,0xfb,0x77,0x63,0x8f,0x9c,0xa8}, - {0xb2,0xb3,0x20,0x9d,0xb6,0x59,0x4d,0xa4}, - {0x54,0x5f,0x7f,0x32,0xa5,0xfc,0x38,0x36}, - {0x82,0x85,0xe7,0xc1,0xb5,0xbc,0x74,0x02}, - {0xfc,0x58,0x6f,0x92,0xf7,0x08,0x09,0x34}, - {0xcf,0x27,0x0e,0xf9,0x71,0x7f,0xf7,0xc4}, - {0xe4,0x93,0xf1,0xc1,0xbb,0x4d,0x6e,0x8c}, - {0x5c,0x4c,0x04,0x1e,0x0f,0x21,0x7a,0xc3}, - {0x92,0x1f,0x12,0x48,0x53,0x73,0xb4,0xf7}, - {0x5b,0xa0,0xca,0x6b,0xbe,0x7f,0x5f,0xad}, - {0xc5,0x33,0x77,0x1c,0xd0,0x11,0x0e,0x63}, - {0x29,0x4d,0xdb,0x46,0xb3,0x27,0x8d,0x60}, - {0xda,0xd6,0xbd,0xa9,0xdf,0xe8,0xf7,0xe8}, - {0x97,0xe0,0x78,0x78,0x37,0xed,0x31,0x7f}, - {0x78,0x75,0xdb,0xf6,0x73,0x8c,0x64,0x78}, - {0x8f,0x34,0xc3,0xc6,0x81,0xc9,0x96,0x95}, - {0x7c,0xb3,0xf1,0xdf,0x34,0xf9,0x48,0x11}, - {0x7f,0xd1,0xa0,0x23,0xa5,0xbb,0xa2,0x17}, - }; +# define RC5_CBC_NUM 27 +static unsigned char rc5_cbc_cipher[RC5_CBC_NUM][8] = { + {0x7a, 0x7b, 0xba, 0x4d, 0x79, 0x11, 0x1d, 0x1e}, + {0x79, 0x7b, 0xba, 0x4d, 0x78, 0x11, 0x1d, 0x1e}, + {0x7a, 0x7b, 0xba, 0x4d, 0x79, 0x11, 0x1d, 0x1f}, + {0x7a, 0x7b, 0xba, 0x4d, 0x79, 0x11, 0x1d, 0x1f}, + {0x8b, 0x9d, 0xed, 0x91, 0xce, 0x77, 0x94, 0xa6}, + {0x2f, 0x75, 0x9f, 0xe7, 0xad, 0x86, 0xa3, 0x78}, + {0xdc, 0xa2, 0x69, 0x4b, 0xf4, 0x0e, 0x07, 0x88}, + {0xdc, 0xa2, 0x69, 0x4b, 0xf4, 0x0e, 0x07, 0x88}, + {0xdc, 0xfe, 0x09, 0x85, 0x77, 0xec, 0xa5, 0xff}, + {0x96, 0x46, 0xfb, 0x77, 0x63, 0x8f, 0x9c, 0xa8}, + {0xb2, 0xb3, 0x20, 0x9d, 0xb6, 0x59, 0x4d, 0xa4}, + {0x54, 0x5f, 0x7f, 0x32, 0xa5, 0xfc, 0x38, 0x36}, + {0x82, 0x85, 0xe7, 0xc1, 0xb5, 0xbc, 0x74, 0x02}, + {0xfc, 0x58, 0x6f, 0x92, 0xf7, 0x08, 0x09, 0x34}, + {0xcf, 0x27, 0x0e, 0xf9, 0x71, 0x7f, 0xf7, 0xc4}, + {0xe4, 0x93, 0xf1, 0xc1, 0xbb, 0x4d, 0x6e, 0x8c}, + {0x5c, 0x4c, 0x04, 0x1e, 0x0f, 0x21, 0x7a, 0xc3}, + {0x92, 0x1f, 0x12, 0x48, 0x53, 0x73, 0xb4, 0xf7}, + {0x5b, 0xa0, 0xca, 0x6b, 0xbe, 0x7f, 0x5f, 0xad}, + {0xc5, 0x33, 0x77, 0x1c, 0xd0, 0x11, 0x0e, 0x63}, + {0x29, 0x4d, 0xdb, 0x46, 0xb3, 0x27, 0x8d, 0x60}, + {0xda, 0xd6, 0xbd, 0xa9, 0xdf, 0xe8, 0xf7, 0xe8}, + {0x97, 0xe0, 0x78, 0x78, 0x37, 0xed, 0x31, 0x7f}, + {0x78, 0x75, 0xdb, 0xf6, 0x73, 0x8c, 0x64, 0x78}, + {0x8f, 0x34, 0xc3, 0xc6, 0x81, 0xc9, 0x96, 0x95}, + {0x7c, 0xb3, 0xf1, 0xdf, 0x34, 0xf9, 0x48, 0x11}, + {0x7f, 0xd1, 0xa0, 0x23, 0xa5, 0xbb, 0xa2, 0x17}, +}; -static unsigned char rc5_cbc_key[RC5_CBC_NUM][17]={ - { 1,0x00}, - { 1,0x00}, - { 1,0x00}, - { 1,0x00}, - { 1,0x00}, - { 1,0x11}, - { 1,0x00}, - { 4,0x00,0x00,0x00,0x00}, - { 1,0x00}, - { 1,0x00}, - { 1,0x00}, - { 1,0x00}, - { 4,0x01,0x02,0x03,0x04}, - { 4,0x01,0x02,0x03,0x04}, - { 4,0x01,0x02,0x03,0x04}, - { 8,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - { 8,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - { 8,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - { 8,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {16,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08, - 0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {16,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08, - 0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {16,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08, - 0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - { 5,0x01,0x02,0x03,0x04,0x05}, - { 5,0x01,0x02,0x03,0x04,0x05}, - { 5,0x01,0x02,0x03,0x04,0x05}, - { 5,0x01,0x02,0x03,0x04,0x05}, - { 5,0x01,0x02,0x03,0x04,0x05}, - }; +static unsigned char rc5_cbc_key[RC5_CBC_NUM][17] = { + {1, 0x00}, + {1, 0x00}, + {1, 0x00}, + {1, 0x00}, + {1, 0x00}, + {1, 0x11}, + {1, 0x00}, + {4, 0x00, 0x00, 0x00, 0x00}, + {1, 0x00}, + {1, 0x00}, + {1, 0x00}, + {1, 0x00}, + {4, 0x01, 0x02, 0x03, 0x04}, + {4, 0x01, 0x02, 0x03, 0x04}, + {4, 0x01, 0x02, 0x03, 0x04}, + {8, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {8, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {8, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {8, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {16, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {16, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {16, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {5, 0x01, 0x02, 0x03, 0x04, 0x05}, + {5, 0x01, 0x02, 0x03, 0x04, 0x05}, + {5, 0x01, 0x02, 0x03, 0x04, 0x05}, + {5, 0x01, 0x02, 0x03, 0x04, 0x05}, + {5, 0x01, 0x02, 0x03, 0x04, 0x05}, +}; -static unsigned char rc5_cbc_plain[RC5_CBC_NUM][8]={ - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, - {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, - {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, - {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80}, - {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, - {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, - {0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x01}, - }; +static unsigned char rc5_cbc_plain[RC5_CBC_NUM][8] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}, + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x01}, +}; -static int rc5_cbc_rounds[RC5_CBC_NUM]={ - 0, 0, 0, 0, 0, 1, 2, 2, - 8, 8,12,16, 8,12,16,12, - 8,12,16, 8,12,16,12, 8, - 8, 8, 8, - }; +static int rc5_cbc_rounds[RC5_CBC_NUM] = { + 0, 0, 0, 0, 0, 1, 2, 2, + 8, 8, 12, 16, 8, 12, 16, 12, + 8, 12, 16, 8, 12, 16, 12, 8, + 8, 8, 8, +}; -static unsigned char rc5_cbc_iv[RC5_CBC_NUM][8]={ - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x78,0x75,0xdb,0xf6,0x73,0x8c,0x64,0x78}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {0x7c,0xb3,0xf1,0xdf,0x34,0xf9,0x48,0x11}, - }; +static unsigned char rc5_cbc_iv[RC5_CBC_NUM][8] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x78, 0x75, 0xdb, 0xf6, 0x73, 0x8c, 0x64, 0x78}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x7c, 0xb3, 0xf1, 0xdf, 0x34, 0xf9, 0x48, 0x11}, +}; int main(int argc, char *argv[]) - { - int i,n,err=0; - RC5_32_KEY key; - unsigned char buf[8],buf2[8],ivb[8]; +{ + int i, n, err = 0; + RC5_32_KEY key; + unsigned char buf[8], buf2[8], ivb[8]; - for (n=0; n<5; n++) - { - RC5_32_set_key(&key,16,&(RC5key[n][0]),12); + for (n = 0; n < 5; n++) { + RC5_32_set_key(&key, 16, &(RC5key[n][0]), 12); - RC5_32_ecb_encrypt(&(RC5plain[n][0]),buf,&key,RC5_ENCRYPT); - if (memcmp(&(RC5cipher[n][0]),buf,8) != 0) - { - printf("ecb RC5 error encrypting (%d)\n",n+1); - printf("got :"); - for (i=0; i<8; i++) - printf("%02X ",buf[i]); - printf("\n"); - printf("expected:"); - for (i=0; i<8; i++) - printf("%02X ",RC5cipher[n][i]); - err=20; - printf("\n"); - } + RC5_32_ecb_encrypt(&(RC5plain[n][0]), buf, &key, RC5_ENCRYPT); + if (memcmp(&(RC5cipher[n][0]), buf, 8) != 0) { + printf("ecb RC5 error encrypting (%d)\n", n + 1); + printf("got :"); + for (i = 0; i < 8; i++) + printf("%02X ", buf[i]); + printf("\n"); + printf("expected:"); + for (i = 0; i < 8; i++) + printf("%02X ", RC5cipher[n][i]); + err = 20; + printf("\n"); + } - RC5_32_ecb_encrypt(buf,buf2,&key,RC5_DECRYPT); - if (memcmp(&(RC5plain[n][0]),buf2,8) != 0) - { - printf("ecb RC5 error decrypting (%d)\n",n+1); - printf("got :"); - for (i=0; i<8; i++) - printf("%02X ",buf2[i]); - printf("\n"); - printf("expected:"); - for (i=0; i<8; i++) - printf("%02X ",RC5plain[n][i]); - printf("\n"); - err=3; - } - } - if (err == 0) printf("ecb RC5 ok\n"); + RC5_32_ecb_encrypt(buf, buf2, &key, RC5_DECRYPT); + if (memcmp(&(RC5plain[n][0]), buf2, 8) != 0) { + printf("ecb RC5 error decrypting (%d)\n", n + 1); + printf("got :"); + for (i = 0; i < 8; i++) + printf("%02X ", buf2[i]); + printf("\n"); + printf("expected:"); + for (i = 0; i < 8; i++) + printf("%02X ", RC5plain[n][i]); + printf("\n"); + err = 3; + } + } + if (err == 0) + printf("ecb RC5 ok\n"); - for (n=0; n<RC5_CBC_NUM; n++) - { - i=rc5_cbc_rounds[n]; - if (i < 8) continue; + for (n = 0; n < RC5_CBC_NUM; n++) { + i = rc5_cbc_rounds[n]; + if (i < 8) + continue; - RC5_32_set_key(&key,rc5_cbc_key[n][0],&(rc5_cbc_key[n][1]),i); + RC5_32_set_key(&key, rc5_cbc_key[n][0], &(rc5_cbc_key[n][1]), i); - memcpy(ivb,&(rc5_cbc_iv[n][0]),8); - RC5_32_cbc_encrypt(&(rc5_cbc_plain[n][0]),buf,8, - &key,&(ivb[0]),RC5_ENCRYPT); + memcpy(ivb, &(rc5_cbc_iv[n][0]), 8); + RC5_32_cbc_encrypt(&(rc5_cbc_plain[n][0]), buf, 8, + &key, &(ivb[0]), RC5_ENCRYPT); - if (memcmp(&(rc5_cbc_cipher[n][0]),buf,8) != 0) - { - printf("cbc RC5 error encrypting (%d)\n",n+1); - printf("got :"); - for (i=0; i<8; i++) - printf("%02X ",buf[i]); - printf("\n"); - printf("expected:"); - for (i=0; i<8; i++) - printf("%02X ",rc5_cbc_cipher[n][i]); - err=30; - printf("\n"); - } + if (memcmp(&(rc5_cbc_cipher[n][0]), buf, 8) != 0) { + printf("cbc RC5 error encrypting (%d)\n", n + 1); + printf("got :"); + for (i = 0; i < 8; i++) + printf("%02X ", buf[i]); + printf("\n"); + printf("expected:"); + for (i = 0; i < 8; i++) + printf("%02X ", rc5_cbc_cipher[n][i]); + err = 30; + printf("\n"); + } - memcpy(ivb,&(rc5_cbc_iv[n][0]),8); - RC5_32_cbc_encrypt(buf,buf2,8, - &key,&(ivb[0]),RC5_DECRYPT); - if (memcmp(&(rc5_cbc_plain[n][0]),buf2,8) != 0) - { - printf("cbc RC5 error decrypting (%d)\n",n+1); - printf("got :"); - for (i=0; i<8; i++) - printf("%02X ",buf2[i]); - printf("\n"); - printf("expected:"); - for (i=0; i<8; i++) - printf("%02X ",rc5_cbc_plain[n][i]); - printf("\n"); - err=3; - } - } - if (err == 0) printf("cbc RC5 ok\n"); + memcpy(ivb, &(rc5_cbc_iv[n][0]), 8); + RC5_32_cbc_encrypt(buf, buf2, 8, &key, &(ivb[0]), RC5_DECRYPT); + if (memcmp(&(rc5_cbc_plain[n][0]), buf2, 8) != 0) { + printf("cbc RC5 error decrypting (%d)\n", n + 1); + printf("got :"); + for (i = 0; i < 8; i++) + printf("%02X ", buf2[i]); + printf("\n"); + printf("expected:"); + for (i = 0; i < 8; i++) + printf("%02X ", rc5_cbc_plain[n][i]); + printf("\n"); + err = 3; + } + } + if (err == 0) + printf("cbc RC5 ok\n"); - EXIT(err); - return(err); - } + EXIT(err); + return (err); +} -#ifdef undef +# ifdef undef static int cfb64_test(unsigned char *cfb_cipher) - { - IDEA_KEY_SCHEDULE eks,dks; - int err=0,i,n; +{ + IDEA_KEY_SCHEDULE eks, dks; + int err = 0, i, n; - idea_set_encrypt_key(cfb_key,&eks); - idea_set_decrypt_key(&eks,&dks); - memcpy(cfb_tmp,cfb_iv,8); - n=0; - idea_cfb64_encrypt(plain,cfb_buf1,(long)12,&eks, - cfb_tmp,&n,IDEA_ENCRYPT); - idea_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]), - (long)CFB_TEST_SIZE-12,&eks, - cfb_tmp,&n,IDEA_ENCRYPT); - if (memcmp(cfb_cipher,cfb_buf1,CFB_TEST_SIZE) != 0) - { - err=1; - printf("idea_cfb64_encrypt encrypt error\n"); - for (i=0; i<CFB_TEST_SIZE; i+=8) - printf("%s\n",pt(&(cfb_buf1[i]))); - } - memcpy(cfb_tmp,cfb_iv,8); - n=0; - idea_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,&eks, - cfb_tmp,&n,IDEA_DECRYPT); - idea_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]), - (long)CFB_TEST_SIZE-17,&dks, - cfb_tmp,&n,IDEA_DECRYPT); - if (memcmp(plain,cfb_buf2,CFB_TEST_SIZE) != 0) - { - err=1; - printf("idea_cfb_encrypt decrypt error\n"); - for (i=0; i<24; i+=8) - printf("%s\n",pt(&(cfb_buf2[i]))); - } - return(err); - } + idea_set_encrypt_key(cfb_key, &eks); + idea_set_decrypt_key(&eks, &dks); + memcpy(cfb_tmp, cfb_iv, 8); + n = 0; + idea_cfb64_encrypt(plain, cfb_buf1, (long)12, &eks, + cfb_tmp, &n, IDEA_ENCRYPT); + idea_cfb64_encrypt(&(plain[12]), &(cfb_buf1[12]), + (long)CFB_TEST_SIZE - 12, &eks, + cfb_tmp, &n, IDEA_ENCRYPT); + if (memcmp(cfb_cipher, cfb_buf1, CFB_TEST_SIZE) != 0) { + err = 1; + printf("idea_cfb64_encrypt encrypt error\n"); + for (i = 0; i < CFB_TEST_SIZE; i += 8) + printf("%s\n", pt(&(cfb_buf1[i]))); + } + memcpy(cfb_tmp, cfb_iv, 8); + n = 0; + idea_cfb64_encrypt(cfb_buf1, cfb_buf2, (long)17, &eks, + cfb_tmp, &n, IDEA_DECRYPT); + idea_cfb64_encrypt(&(cfb_buf1[17]), &(cfb_buf2[17]), + (long)CFB_TEST_SIZE - 17, &dks, + cfb_tmp, &n, IDEA_DECRYPT); + if (memcmp(plain, cfb_buf2, CFB_TEST_SIZE) != 0) { + err = 1; + printf("idea_cfb_encrypt decrypt error\n"); + for (i = 0; i < 24; i += 8) + printf("%s\n", pt(&(cfb_buf2[i]))); + } + return (err); +} static char *pt(unsigned char *p) - { - static char bufs[10][20]; - static int bnum=0; - char *ret; - int i; - static char *f="0123456789ABCDEF"; +{ + static char bufs[10][20]; + static int bnum = 0; + char *ret; + int i; + static char *f = "0123456789ABCDEF"; - ret= &(bufs[bnum++][0]); - bnum%=10; - for (i=0; i<8; i++) - { - ret[i*2]=f[(p[i]>>4)&0xf]; - ret[i*2+1]=f[p[i]&0xf]; - } - ret[16]='\0'; - return(ret); - } - -#endif + ret = &(bufs[bnum++][0]); + bnum %= 10; + for (i = 0; i < 8; i++) { + ret[i * 2] = f[(p[i] >> 4) & 0xf]; + ret[i * 2 + 1] = f[p[i] & 0xf]; + } + ret[16] = '\0'; + return (ret); +} + +# endif #endif |