Correctly handle errors in CMS I/O code.
[openssl.git] / crypto / evp / e_bf.c
index e9a19d57d2b0cd5f069d947d131460898624d052..cc224e53639407dc06a2a9fbb56d17fa2c233dc6 100644 (file)
  * [including the GNU Public Licence.]
  */
 
-#ifndef OPENSSL_NO_BF
 #include <stdio.h>
 #include "cryptlib.h"
+#ifndef OPENSSL_NO_BF
 #include <openssl/evp.h>
 #include "evp_locl.h"
 #include <openssl/objects.h>
+#include <openssl/blowfish.h>
 
 static int bf_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
                       const unsigned char *iv, int enc);
 
-IMPLEMENT_BLOCK_CIPHER(bf, bf_ks, BF, bf_ks, NID_bf, 8, 16, 8,
+typedef struct
+       {
+       BF_KEY ks;
+       } EVP_BF_KEY;
+
+#define data(ctx)      EVP_C_DATA(EVP_BF_KEY,ctx)
+
+IMPLEMENT_BLOCK_CIPHER(bf, ks, BF, EVP_BF_KEY, NID_bf, 8, 16, 8, 64,
                        EVP_CIPH_VARIABLE_LENGTH, bf_init_key, NULL, 
                        EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, NULL)
        
 static int bf_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
                       const unsigned char *iv, int enc)
        {
-       BF_set_key(&(ctx->c.bf_ks),EVP_CIPHER_CTX_key_length(ctx),key);
+       BF_set_key(&data(ctx)->ks,EVP_CIPHER_CTX_key_length(ctx),key);
        return 1;
        }