Index: openssl/crypto/camellia/cmll_misc.c |
=================================================================== |
--- openssl/crypto/camellia/cmll_misc.c (revision 105093) |
+++ openssl/crypto/camellia/cmll_misc.c (working copy) |
@@ -52,78 +52,28 @@ |
#include <openssl/opensslv.h> |
#include <openssl/camellia.h> |
#include "cmll_locl.h" |
-#include <openssl/crypto.h> |
-#ifdef OPENSSL_FIPS |
-#include <openssl/fips.h> |
-#endif |
const char CAMELLIA_version[]="CAMELLIA" OPENSSL_VERSION_PTEXT; |
int Camellia_set_key(const unsigned char *userKey, const int bits, |
CAMELLIA_KEY *key) |
-#ifdef OPENSSL_FIPS |
{ |
- if (FIPS_mode()) |
- FIPS_BAD_ABORT(CAMELLIA) |
- return private_Camellia_set_key(userKey, bits, key); |
- } |
-int private_Camellia_set_key(const unsigned char *userKey, const int bits, |
- CAMELLIA_KEY *key) |
-#endif |
- { |
- if (!userKey || !key) |
- { |
+ if(!userKey || !key) |
return -1; |
- } |
- |
- switch(bits) |
- { |
- case 128: |
- camellia_setup128(userKey, (unsigned int *)key->rd_key); |
- key->enc = camellia_encrypt128; |
- key->dec = camellia_decrypt128; |
- break; |
- case 192: |
- camellia_setup192(userKey, (unsigned int *)key->rd_key); |
- key->enc = camellia_encrypt256; |
- key->dec = camellia_decrypt256; |
- break; |
- case 256: |
- camellia_setup256(userKey, (unsigned int *)key->rd_key); |
- key->enc = camellia_encrypt256; |
- key->dec = camellia_decrypt256; |
- break; |
- default: |
+ if(bits != 128 && bits != 192 && bits != 256) |
return -2; |
- } |
- |
- key->bitLength = bits; |
+ key->grand_rounds = Camellia_Ekeygen(bits , userKey, key->u.rd_key); |
return 0; |
} |
void Camellia_encrypt(const unsigned char *in, unsigned char *out, |
const CAMELLIA_KEY *key) |
{ |
- u32 tmp[CAMELLIA_BLOCK_SIZE/sizeof(u32)]; |
- const union { long one; char little; } camellia_endian = {1}; |
- |
- memcpy(tmp, in, CAMELLIA_BLOCK_SIZE); |
- if (camellia_endian.little) SWAP4WORD(tmp); |
- key->enc(key->rd_key, tmp); |
- if (camellia_endian.little) SWAP4WORD(tmp); |
- memcpy(out, tmp, CAMELLIA_BLOCK_SIZE); |
+ Camellia_EncryptBlock_Rounds(key->grand_rounds, in , key->u.rd_key , out); |
} |
void Camellia_decrypt(const unsigned char *in, unsigned char *out, |
const CAMELLIA_KEY *key) |
{ |
- u32 tmp[CAMELLIA_BLOCK_SIZE/sizeof(u32)]; |
- const union { long one; char little; } camellia_endian = {1}; |
- |
- memcpy(tmp, in, CAMELLIA_BLOCK_SIZE); |
- if (camellia_endian.little) SWAP4WORD(tmp); |
- key->dec(key->rd_key, tmp); |
- if (camellia_endian.little) SWAP4WORD(tmp); |
- memcpy(out, tmp, CAMELLIA_BLOCK_SIZE); |
+ Camellia_DecryptBlock_Rounds(key->grand_rounds, in , key->u.rd_key , out); |
} |
- |