Add functions des_set_key_checked, des_set_key_unchecked.
[openssl.git] / crypto / evp / e_xcbc_d.c
index 001a77f1d5d7e0e1631b86df4101ed51aedd5b03..7568fad4ff76a6e023828ff3ca339b45b1384c50 100644 (file)
  * [including the GNU Public Licence.]
  */
 
+#ifndef NO_DES
 #include <stdio.h>
 #include "cryptlib.h"
 #include <openssl/evp.h>
 #include <openssl/objects.h>
 
-#ifndef NOPROTO
 static void desx_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
        unsigned char *iv,int enc);
 static void desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
        unsigned char *in, unsigned int inl);
-#else
-static void desx_cbc_init_key();
-static void desx_cbc_cipher();
-#endif
-
 static EVP_CIPHER d_xcbc_cipher=
        {
        NID_desx_cbc,
@@ -92,12 +87,14 @@ EVP_CIPHER *EVP_desx_cbc(void)
 static void desx_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
-       if (key != NULL)
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.desx_cbc.ks);
+               des_set_key_unchecked(deskey,ctx->c.desx_cbc.ks);
                memcpy(&(ctx->c.desx_cbc.inw[0]),&(key[8]),8);
                memcpy(&(ctx->c.desx_cbc.outw[0]),&(key[16]),8);
                }
@@ -107,8 +104,9 @@ static void desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
             unsigned char *in, unsigned int inl)
        {
        des_xcbc_encrypt(in,out,inl,ctx->c.desx_cbc.ks,
-               &(ctx->iv[0]),
-               &(ctx->c.desx_cbc.inw[0]),
-               &(ctx->c.desx_cbc.outw[0]),
+               (des_cblock *)&(ctx->iv[0]),
+               &ctx->c.desx_cbc.inw,
+               &ctx->c.desx_cbc.outw,
                ctx->encrypt);
        }
+#endif