Properly own the duplicated string
[openssl.git] / crypto / camellia / cmll_misc.c
index f1047b54e03b427981156f338eb40700c48bd9c4..ba9370252dc92768a0b69ad6f77a3a0d1799b969 100644 (file)
@@ -1,4 +1,3 @@
-/* crypto/camellia/camellia_misc.c -*- mode:C; c-file-style: "eay" -*- */
 /* ====================================================================
  * Copyright (c) 2006 The OpenSSL Project.  All rights reserved.
  *
@@ -7,7 +6,7 @@
  * are met:
  *
  * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
+ *    notice, this list of conditions and the following disclaimer.
  *
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in
  * ====================================================================
  *
  */
+
 #include <openssl/opensslv.h>
 #include <openssl/camellia.h>
 #include "cmll_locl.h"
 
-const char CAMELLIA_version[]="CAMELLIA" OPENSSL_VERSION_PTEXT;
-
 int Camellia_set_key(const unsigned char *userKey, const int bits,
-       CAMELLIA_KEY *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:
-               return -2;
-               }
-       
-       key->bitLength = bits;
-       return 0;
-       }
+                     CAMELLIA_KEY *key)
+{
+    if (!userKey || !key)
+        return -1;
+    if (bits != 128 && bits != 192 && bits != 256)
+        return -2;
+    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);
-       }
+                      const CAMELLIA_KEY *key)
+{
+    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);
-       }
-
+                      const CAMELLIA_KEY *key)
+{
+    Camellia_DecryptBlock_Rounds(key->grand_rounds, in, key->u.rd_key, out);
+}