Second phase of EVP cipher overhaul.

Change functions like EVP_EncryptUpdate() so they now return a
value. These normally have software only implementations
which cannot fail so this was acceptable. However ciphers
can be implemented in hardware and these could return errors.
This commit is contained in:
Dr. Stephen Henson 2000-05-27 12:38:43 +00:00
parent 7f0606016c
commit be06a9348d
34 changed files with 259 additions and 184 deletions

12
CHANGES
View File

@ -9,9 +9,15 @@
support added for variable key length ciphers via the support added for variable key length ciphers via the
EVP_CIPHER_CTX_set_key_length() function. Other cipher specific EVP_CIPHER_CTX_set_key_length() function. Other cipher specific
parameters will be added later via the new catchall 'ctrl' function. parameters will be added later via the new catchall 'ctrl' function.
New functionality allows removal of S/MIME code RC2 hack. Still needs New functionality allows removal of S/MIME code RC2 hack.
support in other library functions, also need to add return codes to
some EVP functions. Still needs support in other library functions, and allow parameter
setting for algorithms like RC2, RC5.
Change lots of functions like EVP_EncryptUpdate() to now return a
value: although software versions of the algorithms cannot fail
any installed hardware versions can.
[Steve Henson] [Steve Henson]
*) Implement SSL_OP_TLS_ROLLBACK_BUG: In ssl3_get_client_key_exchange, if *) Implement SSL_OP_TLS_ROLLBACK_BUG: In ssl3_get_client_key_exchange, if

View File

@ -62,11 +62,11 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_cbc_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_cbc_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER d_cbc_ede_cipher2= static EVP_CIPHER d_cbc_ede_cipher2=
{ {
@ -108,7 +108,7 @@ EVP_CIPHER *EVP_des_ede3_cbc(void)
return(&d_cbc_ede_cipher3); return(&d_cbc_ede_cipher3);
} }
static void des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -125,9 +125,10 @@ static void des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
(char *)ctx->c.des_ede.ks1, (char *)ctx->c.des_ede.ks1,
sizeof(ctx->c.des_ede.ks1)); sizeof(ctx->c.des_ede.ks1));
} }
return 1;
} }
static void des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -142,14 +143,16 @@ static void des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
des_set_key_unchecked(&deskey[1],ctx->c.des_ede.ks2); des_set_key_unchecked(&deskey[1],ctx->c.des_ede.ks2);
des_set_key_unchecked(&deskey[2],ctx->c.des_ede.ks3); des_set_key_unchecked(&deskey[2],ctx->c.des_ede.ks3);
} }
return 1;
} }
static void des_cbc_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_cbc_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
des_ede3_cbc_encrypt(in,out,inl, ctx->c.des_ede.ks1, des_ede3_cbc_encrypt(in,out,inl, ctx->c.des_ede.ks1,
ctx->c.des_ede.ks2,ctx->c.des_ede.ks3, ctx->c.des_ede.ks2,ctx->c.des_ede.ks3,
(des_cblock *) &(ctx->iv[0]), (des_cblock *) &(ctx->iv[0]),
ctx->encrypt); ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -62,9 +62,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void bf_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int bf_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void bf_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int bf_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER bfish_cbc_cipher= static EVP_CIPHER bfish_cbc_cipher=
{ {
@ -86,7 +86,7 @@ EVP_CIPHER *EVP_bf_cbc(void)
return(&bfish_cbc_cipher); return(&bfish_cbc_cipher);
} }
static void bf_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int bf_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (iv != NULL) if (iv != NULL)
@ -94,15 +94,17 @@ static void bf_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (key != NULL) if (key != NULL)
BF_set_key(&(ctx->c.bf_ks),EVP_CIPHER_CTX_key_length(ctx),key); BF_set_key(&(ctx->c.bf_ks),EVP_CIPHER_CTX_key_length(ctx),key);
return 1;
} }
static void bf_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int bf_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
BF_cbc_encrypt( BF_cbc_encrypt(
in,out,(long)inl, in,out,(long)inl,
&(ctx->c.bf_ks),&(ctx->iv[0]), &(ctx->c.bf_ks),&(ctx->iv[0]),
ctx->encrypt); ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void cast_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int cast_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void cast_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cast_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER cast5_cbc_cipher= static EVP_CIPHER cast5_cbc_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_cast5_cbc(void)
return(&cast5_cbc_cipher); return(&cast5_cbc_cipher);
} }
static void cast_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int cast_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (iv != NULL) if (iv != NULL)
@ -95,15 +95,17 @@ static void cast_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (key != NULL) if (key != NULL)
CAST_set_key(&(ctx->c.cast_ks),EVP_CIPHER_CTX_key_length(ctx),key); CAST_set_key(&(ctx->c.cast_ks),EVP_CIPHER_CTX_key_length(ctx),key);
return 1;
} }
static void cast_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cast_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
CAST_cbc_encrypt( CAST_cbc_encrypt(
in,out,(long)inl, in,out,(long)inl,
&(ctx->c.cast_ks),&(ctx->iv[0]), &(ctx->c.cast_ks),&(ctx->iv[0]),
ctx->encrypt); ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -62,9 +62,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void des_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER d_cbc_cipher= static EVP_CIPHER d_cbc_cipher=
{ {
@ -86,7 +86,7 @@ EVP_CIPHER *EVP_des_cbc(void)
return(&d_cbc_cipher); return(&d_cbc_cipher);
} }
static void des_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -96,13 +96,15 @@ static void des_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (deskey != NULL) if (deskey != NULL)
des_set_key_unchecked(deskey,ctx->c.des_ks); des_set_key_unchecked(deskey,ctx->c.des_ks);
return 1;
} }
static void des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
des_ncbc_encrypt(in,out,inl,ctx->c.des_ks, des_ncbc_encrypt(in,out,inl,ctx->c.des_ks,
(des_cblock *)&(ctx->iv[0]), (des_cblock *)&(ctx->iv[0]),
ctx->encrypt); ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void idea_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int idea_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void idea_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int idea_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER i_cbc_cipher= static EVP_CIPHER i_cbc_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_idea_cbc(void)
return(&i_cbc_cipher); return(&i_cbc_cipher);
} }
static void idea_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int idea_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (iv != NULL) if (iv != NULL)
@ -107,15 +107,17 @@ static void idea_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
sizeof(IDEA_KEY_SCHEDULE)); sizeof(IDEA_KEY_SCHEDULE));
} }
} }
return 1;
} }
static void idea_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int idea_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
idea_cbc_encrypt( idea_cbc_encrypt(
in,out,(long)inl, in,out,(long)inl,
&(ctx->c.idea_ks),&(ctx->iv[0]), &(ctx->c.idea_ks),&(ctx->iv[0]),
ctx->encrypt); ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void rc2_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc2_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void rc2_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc2_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static int rc2_meth_to_magic(const EVP_CIPHER *e); static int rc2_meth_to_magic(const EVP_CIPHER *e);
static EVP_CIPHER *rc2_magic_to_meth(int i); static EVP_CIPHER *rc2_magic_to_meth(int i);
@ -136,7 +136,7 @@ EVP_CIPHER *EVP_rc2_40_cbc(void)
return(&r2_40_cbc_cipher); return(&r2_40_cbc_cipher);
} }
static void rc2_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc2_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (iv != NULL) if (iv != NULL)
@ -145,15 +145,17 @@ static void rc2_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
if (key != NULL) if (key != NULL)
RC2_set_key(&(ctx->c.rc2_ks),EVP_CIPHER_CTX_key_length(ctx), RC2_set_key(&(ctx->c.rc2_ks),EVP_CIPHER_CTX_key_length(ctx),
key,EVP_CIPHER_key_length(ctx->cipher)*8); key,EVP_CIPHER_key_length(ctx->cipher)*8);
return 1;
} }
static void rc2_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc2_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
RC2_cbc_encrypt( RC2_cbc_encrypt(
in,out,(long)inl, in,out,(long)inl,
&(ctx->c.rc2_ks),&(ctx->iv[0]), &(ctx->c.rc2_ks),&(ctx->iv[0]),
ctx->encrypt); ctx->encrypt);
return 1;
} }
static int rc2_meth_to_magic(const EVP_CIPHER *e) static int rc2_meth_to_magic(const EVP_CIPHER *e)

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void r_32_12_16_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int r_32_12_16_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void r_32_12_16_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int r_32_12_16_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER rc5_32_12_16_cbc_cipher= static EVP_CIPHER rc5_32_12_16_cbc_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_rc5_32_12_16_cbc(void)
return(&rc5_32_12_16_cbc_cipher); return(&rc5_32_12_16_cbc_cipher);
} }
static void r_32_12_16_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int r_32_12_16_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (iv != NULL) if (iv != NULL)
@ -96,15 +96,17 @@ static void r_32_12_16_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
if (key != NULL) if (key != NULL)
RC5_32_set_key(&(ctx->c.rc5_ks),EVP_RC5_32_12_16_KEY_SIZE, RC5_32_set_key(&(ctx->c.rc5_ks),EVP_RC5_32_12_16_KEY_SIZE,
key,RC5_12_ROUNDS); key,RC5_12_ROUNDS);
return 1;
} }
static void r_32_12_16_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int r_32_12_16_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
RC5_32_cbc_encrypt( RC5_32_cbc_encrypt(
in,out,(long)inl, in,out,(long)inl,
&(ctx->c.rc5_ks),&(ctx->iv[0]), &(ctx->c.rc5_ks),&(ctx->iv[0]),
ctx->encrypt); ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -62,11 +62,11 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void des_ede_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_ede3_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede3_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_ede_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ede_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER d_ede_cfb_cipher2= static EVP_CIPHER d_ede_cfb_cipher2=
{ {
@ -108,7 +108,7 @@ EVP_CIPHER *EVP_des_ede3_cfb(void)
return(&d_ede3_cfb_cipher3); return(&d_ede3_cfb_cipher3);
} }
static void des_ede_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -126,9 +126,10 @@ static void des_ede_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
(char *)ctx->c.des_ede.ks1, (char *)ctx->c.des_ede.ks1,
sizeof(ctx->c.des_ede.ks1)); sizeof(ctx->c.des_ede.ks1));
} }
return 1;
} }
static void des_ede3_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede3_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -144,9 +145,10 @@ static void des_ede3_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
des_set_key_unchecked(&deskey[1],ctx->c.des_ede.ks2); des_set_key_unchecked(&deskey[1],ctx->c.des_ede.ks2);
des_set_key_unchecked(&deskey[2],ctx->c.des_ede.ks3); des_set_key_unchecked(&deskey[2],ctx->c.des_ede.ks3);
} }
return 1;
} }
static void des_ede_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ede_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
des_ede3_cfb64_encrypt(in,out,(long)inl, des_ede3_cfb64_encrypt(in,out,(long)inl,
@ -155,5 +157,6 @@ static void des_ede_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
ctx->c.des_ede.ks3, ctx->c.des_ede.ks3,
(des_cblock*)&(ctx->iv[0]), (des_cblock*)&(ctx->iv[0]),
&ctx->num,ctx->encrypt); &ctx->num,ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -62,9 +62,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void bf_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int bf_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void bf_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int bf_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER bfish_cfb_cipher= static EVP_CIPHER bfish_cfb_cipher=
{ {
@ -86,7 +86,7 @@ EVP_CIPHER *EVP_bf_cfb(void)
return(&bfish_cfb_cipher); return(&bfish_cfb_cipher);
} }
static void bf_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int bf_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -96,9 +96,10 @@ static void bf_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (key != NULL) if (key != NULL)
BF_set_key(&(ctx->c.bf_ks),EVP_CIPHER_CTX_key_length(ctx),key); BF_set_key(&(ctx->c.bf_ks),EVP_CIPHER_CTX_key_length(ctx),key);
return 1;
} }
static void bf_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int bf_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
BF_cfb64_encrypt( BF_cfb64_encrypt(
@ -106,5 +107,6 @@ static void bf_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
(long)inl, &(ctx->c.bf_ks), (long)inl, &(ctx->c.bf_ks),
&(ctx->iv[0]), &(ctx->iv[0]),
&ctx->num,ctx->encrypt); &ctx->num,ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void cast_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int cast_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void cast_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cast_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER cast5_cfb_cipher= static EVP_CIPHER cast5_cfb_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_cast5_cfb(void)
return(&cast5_cfb_cipher); return(&cast5_cfb_cipher);
} }
static void cast_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int cast_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -97,9 +97,10 @@ static void cast_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (key != NULL) if (key != NULL)
CAST_set_key(&(ctx->c.cast_ks),EVP_CIPHER_CTX_key_length(ctx),key); CAST_set_key(&(ctx->c.cast_ks),EVP_CIPHER_CTX_key_length(ctx),key);
return 1;
} }
static void cast_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cast_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
CAST_cfb64_encrypt( CAST_cfb64_encrypt(
@ -107,5 +108,6 @@ static void cast_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
(long)inl, &(ctx->c.cast_ks), (long)inl, &(ctx->c.cast_ks),
&(ctx->iv[0]), &(ctx->iv[0]),
&ctx->num,ctx->encrypt); &ctx->num,ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -62,9 +62,9 @@
#include <openssl/objects.h> #include <openssl/objects.h>
#ifndef NO_DES #ifndef NO_DES
static void des_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER d_cfb_cipher= static EVP_CIPHER d_cfb_cipher=
{ {
@ -86,7 +86,7 @@ EVP_CIPHER *EVP_des_cfb(void)
return(&d_cfb_cipher); return(&d_cfb_cipher);
} }
static void des_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -98,9 +98,10 @@ static void des_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (deskey != NULL) if (deskey != NULL)
des_set_key_unchecked(deskey,ctx->c.des_ks); des_set_key_unchecked(deskey,ctx->c.des_ks);
return 1;
} }
static void des_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
des_cfb64_encrypt( des_cfb64_encrypt(
@ -108,5 +109,6 @@ static void des_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
(long)inl, ctx->c.des_ks, (long)inl, ctx->c.des_ks,
(des_cblock *)&(ctx->iv[0]), (des_cblock *)&(ctx->iv[0]),
&ctx->num,ctx->encrypt); &ctx->num,ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void idea_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int idea_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void idea_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int idea_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER i_cfb_cipher= static EVP_CIPHER i_cfb_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_idea_cfb(void)
return(&i_cfb_cipher); return(&i_cfb_cipher);
} }
static void idea_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int idea_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -97,15 +97,17 @@ static void idea_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (key != NULL) if (key != NULL)
idea_set_encrypt_key(key,&(ctx->c.idea_ks)); idea_set_encrypt_key(key,&(ctx->c.idea_ks));
return 1;
} }
static void idea_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int idea_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
idea_cfb64_encrypt( idea_cfb64_encrypt(
in,out,(long)inl, in,out,(long)inl,
&(ctx->c.idea_ks),&(ctx->iv[0]), &(ctx->c.idea_ks),&(ctx->iv[0]),
&ctx->num,ctx->encrypt); &ctx->num,ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void rc2_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc2_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void rc2_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc2_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER r2_cfb_cipher= static EVP_CIPHER r2_cfb_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_rc2_cfb(void)
return(&r2_cfb_cipher); return(&r2_cfb_cipher);
} }
static void rc2_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc2_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -98,9 +98,10 @@ static void rc2_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
if (key != NULL) if (key != NULL)
RC2_set_key(&(ctx->c.rc2_ks),EVP_CIPHER_CTX_key_length(ctx), RC2_set_key(&(ctx->c.rc2_ks),EVP_CIPHER_CTX_key_length(ctx),
key,EVP_CIPHER_key_length(ctx->cipher)*8); key,EVP_CIPHER_key_length(ctx->cipher)*8);
return 1;
} }
static void rc2_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc2_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
RC2_cfb64_encrypt( RC2_cfb64_encrypt(
@ -108,5 +109,6 @@ static void rc2_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
(long)inl, &(ctx->c.rc2_ks), (long)inl, &(ctx->c.rc2_ks),
&(ctx->iv[0]), &(ctx->iv[0]),
&ctx->num,ctx->encrypt); &ctx->num,ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void rc5_32_12_16_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc5_32_12_16_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void rc5_32_12_16_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc5_32_12_16_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER rc5_cfb_cipher= static EVP_CIPHER rc5_cfb_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_rc5_32_12_16_cfb(void)
return(&rc5_cfb_cipher); return(&rc5_cfb_cipher);
} }
static void rc5_32_12_16_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc5_32_12_16_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -98,9 +98,10 @@ static void rc5_32_12_16_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
if (key != NULL) if (key != NULL)
RC5_32_set_key(&(ctx->c.rc5_ks),EVP_RC5_32_12_16_KEY_SIZE,key, RC5_32_set_key(&(ctx->c.rc5_ks),EVP_RC5_32_12_16_KEY_SIZE,key,
RC5_12_ROUNDS); RC5_12_ROUNDS);
return 1;
} }
static void rc5_32_12_16_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc5_32_12_16_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
RC5_32_cfb64_encrypt( RC5_32_cfb64_encrypt(
@ -108,5 +109,6 @@ static void rc5_32_12_16_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
(long)inl, &(ctx->c.rc5_ks), (long)inl, &(ctx->c.rc5_ks),
&(ctx->iv[0]), &(ctx->iv[0]),
&ctx->num,ctx->encrypt); &ctx->num,ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -62,11 +62,11 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void des_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER d_ede_cipher2= static EVP_CIPHER d_ede_cipher2=
{ {
@ -108,7 +108,7 @@ EVP_CIPHER *EVP_des_ede3(void)
return(&d_ede3_cipher3); return(&d_ede3_cipher3);
} }
static void des_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -121,9 +121,10 @@ static void des_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
(char *)ctx->c.des_ede.ks1, (char *)ctx->c.des_ede.ks1,
sizeof(ctx->c.des_ede.ks1)); sizeof(ctx->c.des_ede.ks1));
} }
return 1;
} }
static void des_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -134,16 +135,17 @@ static void des_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
des_set_key_unchecked(&deskey[1],ctx->c.des_ede.ks2); des_set_key_unchecked(&deskey[1],ctx->c.des_ede.ks2);
des_set_key_unchecked(&deskey[2],ctx->c.des_ede.ks3); des_set_key_unchecked(&deskey[2],ctx->c.des_ede.ks3);
} }
return 1;
} }
static void des_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
unsigned int i; unsigned int i;
des_cblock *output /* = (des_cblock *)out */; des_cblock *output /* = (des_cblock *)out */;
des_cblock *input /* = (des_cblock *)in */; des_cblock *input /* = (des_cblock *)in */;
if (inl < 8) return; if (inl < 8) return 1;
inl-=8; inl-=8;
for (i=0; i<=inl; i+=8) for (i=0; i<=inl; i+=8)
{ {
@ -159,5 +161,6 @@ static void des_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
/* output++; */ /* output++; */
/* input++; */ /* input++; */
} }
return 1;
} }
#endif #endif

View File

@ -62,9 +62,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void bf_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int bf_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void bf_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int bf_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER bfish_ecb_cipher= static EVP_CIPHER bfish_ecb_cipher=
{ {
@ -86,19 +86,20 @@ EVP_CIPHER *EVP_bf_ecb(void)
return(&bfish_ecb_cipher); return(&bfish_ecb_cipher);
} }
static void bf_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int bf_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (key != NULL) if (key != NULL)
BF_set_key(&(ctx->c.bf_ks),EVP_CIPHER_CTX_key_length(ctx),key); BF_set_key(&(ctx->c.bf_ks),EVP_CIPHER_CTX_key_length(ctx),key);
return 1;
} }
static void bf_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int bf_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
unsigned int i; unsigned int i;
if (inl < 8) return; if (inl < 8) return 1;
inl-=8; inl-=8;
for (i=0; i<=inl; i+=8) for (i=0; i<=inl; i+=8)
{ {
@ -106,6 +107,7 @@ static void bf_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
&(in[i]),&(out[i]), &(in[i]),&(out[i]),
&(ctx->c.bf_ks),ctx->encrypt); &(ctx->c.bf_ks),ctx->encrypt);
} }
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void cast_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int cast_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void cast_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cast_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER cast5_ecb_cipher= static EVP_CIPHER cast5_ecb_cipher=
{ {
@ -87,19 +87,20 @@ EVP_CIPHER *EVP_cast5_ecb(void)
return(&cast5_ecb_cipher); return(&cast5_ecb_cipher);
} }
static void cast_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int cast_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (key != NULL) if (key != NULL)
CAST_set_key(&(ctx->c.cast_ks),EVP_CIPHER_CTX_key_length(ctx),key); CAST_set_key(&(ctx->c.cast_ks),EVP_CIPHER_CTX_key_length(ctx),key);
return 1;
} }
static void cast_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cast_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
unsigned int i; unsigned int i;
if (inl < 8) return; if (inl < 8) return 1;
inl-=8; inl-=8;
for (i=0; i<=inl; i+=8) for (i=0; i<=inl; i+=8)
{ {
@ -107,6 +108,7 @@ static void cast_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
&(in[i]),&(out[i]), &(in[i]),&(out[i]),
&(ctx->c.cast_ks),ctx->encrypt); &(ctx->c.cast_ks),ctx->encrypt);
} }
return 1;
} }
#endif #endif

View File

@ -62,9 +62,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void des_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER d_ecb_cipher= static EVP_CIPHER d_ecb_cipher=
{ {
@ -86,23 +86,24 @@ EVP_CIPHER *EVP_des_ecb(void)
return(&d_ecb_cipher); return(&d_ecb_cipher);
} }
static void des_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
if (deskey != NULL) if (deskey != NULL)
des_set_key_unchecked(deskey,ctx->c.des_ks); des_set_key_unchecked(deskey,ctx->c.des_ks);
return 1;
} }
static void des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
unsigned int i; unsigned int i;
des_cblock *output /* = (des_cblock *)out */; des_cblock *output /* = (des_cblock *)out */;
des_cblock *input /* = (des_cblock *)in */; des_cblock *input /* = (des_cblock *)in */;
if (inl < 8) return; if (inl < 8) return 1;
inl-=8; inl-=8;
for (i=0; i<=inl; i+=8) for (i=0; i<=inl; i+=8)
{ {
@ -116,5 +117,6 @@ static void des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
/* output++; */ /* output++; */
/* input++; */ /* input++; */
} }
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void idea_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int idea_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void idea_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int idea_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER i_ecb_cipher= static EVP_CIPHER i_ecb_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_idea_ecb(void)
return(&i_ecb_cipher); return(&i_ecb_cipher);
} }
static void idea_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int idea_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (key != NULL) if (key != NULL)
@ -104,20 +104,22 @@ static void idea_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
sizeof(IDEA_KEY_SCHEDULE)); sizeof(IDEA_KEY_SCHEDULE));
} }
} }
return 1;
} }
static void idea_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int idea_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
unsigned int i; unsigned int i;
if (inl < 8) return; if (inl < 8) return 1;
inl-=8; inl-=8;
for (i=0; i<=inl; i+=8) for (i=0; i<=inl; i+=8)
{ {
idea_ecb_encrypt( idea_ecb_encrypt(
&(in[i]),&(out[i]),&(ctx->c.idea_ks)); &(in[i]),&(out[i]),&(ctx->c.idea_ks));
} }
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void rc2_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc2_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void rc2_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc2_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER r2_ecb_cipher= static EVP_CIPHER r2_ecb_cipher=
{ {
@ -87,20 +87,21 @@ EVP_CIPHER *EVP_rc2_ecb(void)
return(&r2_ecb_cipher); return(&r2_ecb_cipher);
} }
static void rc2_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc2_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (key != NULL) if (key != NULL)
RC2_set_key(&(ctx->c.rc2_ks),EVP_CIPHER_CTX_key_length(ctx), RC2_set_key(&(ctx->c.rc2_ks),EVP_CIPHER_CTX_key_length(ctx),
key,EVP_CIPHER_key_length(ctx->cipher)*8); key,EVP_CIPHER_key_length(ctx->cipher)*8);
return 1;
} }
static void rc2_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc2_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
unsigned int i; unsigned int i;
if (inl < 8) return; if (inl < 8) return 1;
inl-=8; inl-=8;
for (i=0; i<=inl; i+=8) for (i=0; i<=inl; i+=8)
{ {
@ -108,6 +109,7 @@ static void rc2_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
&(in[i]),&(out[i]), &(in[i]),&(out[i]),
&(ctx->c.rc2_ks),ctx->encrypt); &(ctx->c.rc2_ks),ctx->encrypt);
} }
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void rc5_32_12_16_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc5_32_12_16_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void rc5_32_12_16_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc5_32_12_16_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER rc5_ecb_cipher= static EVP_CIPHER rc5_ecb_cipher=
{ {
@ -87,20 +87,21 @@ EVP_CIPHER *EVP_rc5_32_12_16_ecb(void)
return(&rc5_ecb_cipher); return(&rc5_ecb_cipher);
} }
static void rc5_32_12_16_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc5_32_12_16_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (key != NULL) if (key != NULL)
RC5_32_set_key(&(ctx->c.rc5_ks),EVP_RC5_32_12_16_KEY_SIZE,key, RC5_32_set_key(&(ctx->c.rc5_ks),EVP_RC5_32_12_16_KEY_SIZE,key,
RC5_12_ROUNDS); RC5_12_ROUNDS);
return 1;
} }
static void rc5_32_12_16_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc5_32_12_16_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
unsigned int i; unsigned int i;
if (inl < 8) return; if (inl < 8) return 1;
inl-=8; inl-=8;
for (i=0; i<=inl; i+=8) for (i=0; i<=inl; i+=8)
{ {
@ -108,6 +109,7 @@ static void rc5_32_12_16_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
&(in[i]),&(out[i]), &(in[i]),&(out[i]),
&(ctx->c.rc5_ks),ctx->encrypt); &(ctx->c.rc5_ks),ctx->encrypt);
} }
return 1;
} }
#endif #endif

View File

@ -61,9 +61,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void null_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int null_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER n_cipher= static EVP_CIPHER n_cipher=
{ {
@ -84,16 +84,18 @@ EVP_CIPHER *EVP_enc_null(void)
return(&n_cipher); return(&n_cipher);
} }
static void null_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int null_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
memset(&(ctx->c),0,sizeof(ctx->c)); memset(&(ctx->c),0,sizeof(ctx->c));
return 1;
} }
static void null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
if (in != out) if (in != out)
memcpy((char *)out,(char *)in,(int)inl); memcpy((char *)out,(char *)in,(int)inl);
return 1;
} }

View File

@ -62,11 +62,11 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void des_ede_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_ede3_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede3_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_ede_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ede_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER d_ede_ofb_cipher2= static EVP_CIPHER d_ede_ofb_cipher2=
{ {
@ -108,7 +108,7 @@ EVP_CIPHER *EVP_des_ede3_ofb(void)
return(&d_ede3_ofb_cipher3); return(&d_ede3_ofb_cipher3);
} }
static void des_ede_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -126,9 +126,10 @@ static void des_ede_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
(char *)ctx->c.des_ede.ks1, (char *)ctx->c.des_ede.ks1,
sizeof(ctx->c.des_ede.ks1)); sizeof(ctx->c.des_ede.ks1));
} }
return 1;
} }
static void des_ede3_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ede3_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -144,13 +145,15 @@ static void des_ede3_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
des_set_key_unchecked(&deskey[1],ctx->c.des_ede.ks2); des_set_key_unchecked(&deskey[1],ctx->c.des_ede.ks2);
des_set_key_unchecked(&deskey[2],ctx->c.des_ede.ks3); des_set_key_unchecked(&deskey[2],ctx->c.des_ede.ks3);
} }
return 1;
} }
static void des_ede_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ede_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
des_ede3_ofb64_encrypt(in,out,inl,ctx->c.des_ede.ks1, des_ede3_ofb64_encrypt(in,out,inl,ctx->c.des_ede.ks1,
ctx->c.des_ede.ks2, ctx->c.des_ede.ks3, ctx->c.des_ede.ks2, ctx->c.des_ede.ks3,
(des_cblock *)&(ctx->iv[0]),&ctx->num); (des_cblock *)&(ctx->iv[0]),&ctx->num);
return 1;
} }
#endif #endif

View File

@ -62,9 +62,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void bf_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int bf_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void bf_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int bf_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER bfish_ofb_cipher= static EVP_CIPHER bfish_ofb_cipher=
{ {
@ -86,7 +86,7 @@ EVP_CIPHER *EVP_bf_ofb(void)
return(&bfish_ofb_cipher); return(&bfish_ofb_cipher);
} }
static void bf_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int bf_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -96,9 +96,10 @@ static void bf_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (key != NULL) if (key != NULL)
BF_set_key(&(ctx->c.bf_ks),EVP_CIPHER_CTX_key_length(ctx),key); BF_set_key(&(ctx->c.bf_ks),EVP_CIPHER_CTX_key_length(ctx),key);
return 1;
} }
static void bf_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int bf_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
BF_ofb64_encrypt( BF_ofb64_encrypt(
@ -106,6 +107,7 @@ static void bf_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
(long)inl, &(ctx->c.bf_ks), (long)inl, &(ctx->c.bf_ks),
&(ctx->iv[0]), &(ctx->iv[0]),
&ctx->num); &ctx->num);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void cast_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int cast_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void cast_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cast_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER cast5_ofb_cipher= static EVP_CIPHER cast5_ofb_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_cast5_ofb(void)
return(&cast5_ofb_cipher); return(&cast5_ofb_cipher);
} }
static void cast_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int cast_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -97,9 +97,10 @@ static void cast_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (key != NULL) if (key != NULL)
CAST_set_key(&(ctx->c.cast_ks),EVP_CIPHER_CTX_key_length(ctx),key); CAST_set_key(&(ctx->c.cast_ks),EVP_CIPHER_CTX_key_length(ctx),key);
return 1;
} }
static void cast_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cast_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
CAST_ofb64_encrypt( CAST_ofb64_encrypt(
@ -107,6 +108,7 @@ static void cast_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
(long)inl, &(ctx->c.cast_ks), (long)inl, &(ctx->c.cast_ks),
&(ctx->iv[0]), &(ctx->iv[0]),
&ctx->num); &ctx->num);
return 1;
} }
#endif #endif

View File

@ -62,9 +62,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void des_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER d_ofb_cipher= static EVP_CIPHER d_ofb_cipher=
{ {
@ -86,7 +86,7 @@ EVP_CIPHER *EVP_des_ofb(void)
return(&d_ofb_cipher); return(&d_ofb_cipher);
} }
static void des_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int des_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -98,12 +98,14 @@ static void des_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (deskey != NULL) if (deskey != NULL)
des_set_key_unchecked(deskey,ctx->c.des_ks); des_set_key_unchecked(deskey,ctx->c.des_ks);
return 1;
} }
static void des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
des_ofb64_encrypt(in,out,inl,ctx->c.des_ks, des_ofb64_encrypt(in,out,inl,ctx->c.des_ks,
(des_cblock *)&(ctx->iv[0]),&ctx->num); (des_cblock *)&(ctx->iv[0]),&ctx->num);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void idea_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int idea_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void idea_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int idea_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER i_ofb_cipher= static EVP_CIPHER i_ofb_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_idea_ofb(void)
return(&i_ofb_cipher); return(&i_ofb_cipher);
} }
static void idea_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int idea_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -97,15 +97,17 @@ static void idea_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
if (key != NULL) if (key != NULL)
idea_set_encrypt_key(key,&(ctx->c.idea_ks)); idea_set_encrypt_key(key,&(ctx->c.idea_ks));
return 1;
} }
static void idea_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int idea_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
idea_ofb64_encrypt( idea_ofb64_encrypt(
in,out,(long)inl, in,out,(long)inl,
&(ctx->c.idea_ks),&(ctx->iv[0]), &(ctx->c.idea_ks),&(ctx->iv[0]),
&ctx->num); &ctx->num);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void rc2_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc2_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void rc2_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc2_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER r2_ofb_cipher= static EVP_CIPHER r2_ofb_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_rc2_ofb(void)
return(&r2_ofb_cipher); return(&r2_ofb_cipher);
} }
static void rc2_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc2_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -98,9 +98,10 @@ static void rc2_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
if (key != NULL) if (key != NULL)
RC2_set_key(&(ctx->c.rc2_ks),EVP_CIPHER_CTX_key_length(ctx), RC2_set_key(&(ctx->c.rc2_ks),EVP_CIPHER_CTX_key_length(ctx),
key,EVP_CIPHER_key_length(ctx->cipher)*8); key,EVP_CIPHER_key_length(ctx->cipher)*8);
return 1;
} }
static void rc2_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc2_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
RC2_ofb64_encrypt( RC2_ofb64_encrypt(
@ -108,6 +109,7 @@ static void rc2_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
(long)inl, &(ctx->c.rc2_ks), (long)inl, &(ctx->c.rc2_ks),
&(ctx->iv[0]), &(ctx->iv[0]),
&ctx->num); &ctx->num);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void rc5_32_12_16_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc5_32_12_16_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void rc5_32_12_16_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc5_32_12_16_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER rc5_ofb_cipher= static EVP_CIPHER rc5_ofb_cipher=
{ {
@ -87,7 +87,7 @@ EVP_CIPHER *EVP_rc5_32_12_16_ofb(void)
return(&rc5_ofb_cipher); return(&rc5_ofb_cipher);
} }
static void rc5_32_12_16_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc5_32_12_16_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
ctx->num=0; ctx->num=0;
@ -98,9 +98,10 @@ static void rc5_32_12_16_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
if (key != NULL) if (key != NULL)
RC5_32_set_key(&(ctx->c.rc5_ks),EVP_RC5_32_12_16_KEY_SIZE,key, RC5_32_set_key(&(ctx->c.rc5_ks),EVP_RC5_32_12_16_KEY_SIZE,key,
RC5_12_ROUNDS); RC5_12_ROUNDS);
return 1;
} }
static void rc5_32_12_16_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc5_32_12_16_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
RC5_32_ofb64_encrypt( RC5_32_ofb64_encrypt(
@ -108,6 +109,7 @@ static void rc5_32_12_16_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
(long)inl, &(ctx->c.rc5_ks), (long)inl, &(ctx->c.rc5_ks),
&(ctx->iv[0]), &(ctx->iv[0]),
&ctx->num); &ctx->num);
return 1;
} }
#endif #endif

View File

@ -63,9 +63,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void rc4_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc4_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER r4_cipher= static EVP_CIPHER r4_cipher=
{ {
@ -107,18 +107,20 @@ EVP_CIPHER *EVP_rc4_40(void)
return(&r4_40_cipher); return(&r4_40_cipher);
} }
static void rc4_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int rc4_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
if (key != NULL) if (key != NULL)
memcpy(&(ctx->c.rc4.key[0]),key,EVP_CIPHER_CTX_key_length(ctx)); memcpy(&(ctx->c.rc4.key[0]),key,EVP_CIPHER_CTX_key_length(ctx));
RC4_set_key(&(ctx->c.rc4.ks),EVP_CIPHER_CTX_key_length(ctx), RC4_set_key(&(ctx->c.rc4.ks),EVP_CIPHER_CTX_key_length(ctx),
ctx->c.rc4.key); ctx->c.rc4.key);
return 1;
} }
static void rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
RC4(&(ctx->c.rc4.ks),inl,in,out); RC4(&(ctx->c.rc4.ks),inl,in,out);
return 1;
} }
#endif #endif

View File

@ -62,9 +62,9 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/objects.h> #include <openssl/objects.h>
static void desx_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int desx_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv,int enc); unsigned char *iv,int enc);
static void desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl); unsigned char *in, unsigned int inl);
static EVP_CIPHER d_xcbc_cipher= static EVP_CIPHER d_xcbc_cipher=
{ {
@ -86,7 +86,7 @@ EVP_CIPHER *EVP_desx_cbc(void)
return(&d_xcbc_cipher); return(&d_xcbc_cipher);
} }
static void desx_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, static int desx_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
unsigned char *iv, int enc) unsigned char *iv, int enc)
{ {
des_cblock *deskey = (des_cblock *)key; des_cblock *deskey = (des_cblock *)key;
@ -100,9 +100,10 @@ static void desx_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
memcpy(&(ctx->c.desx_cbc.inw[0]),&(key[8]),8); memcpy(&(ctx->c.desx_cbc.inw[0]),&(key[8]),8);
memcpy(&(ctx->c.desx_cbc.outw[0]),&(key[16]),8); memcpy(&(ctx->c.desx_cbc.outw[0]),&(key[16]),8);
} }
return 1;
} }
static void desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
unsigned char *in, unsigned int inl) unsigned char *in, unsigned int inl)
{ {
des_xcbc_encrypt(in,out,inl,ctx->c.desx_cbc.ks, des_xcbc_encrypt(in,out,inl,ctx->c.desx_cbc.ks,
@ -110,5 +111,6 @@ static void desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
&ctx->c.desx_cbc.inw, &ctx->c.desx_cbc.inw,
&ctx->c.desx_cbc.outw, &ctx->c.desx_cbc.outw,
ctx->encrypt); ctx->encrypt);
return 1;
} }
#endif #endif

View File

@ -328,9 +328,9 @@ struct evp_cipher_st
int key_len; /* Default value for variable length ciphers */ int key_len; /* Default value for variable length ciphers */
int iv_len; int iv_len;
unsigned long flags; /* Various flags */ unsigned long flags; /* Various flags */
void (*init)(EVP_CIPHER_CTX *, unsigned char *, unsigned char *, int); /* init key */ int (*init)(EVP_CIPHER_CTX *, unsigned char *, unsigned char *, int); /* init key */
void (*do_cipher)(EVP_CIPHER_CTX *, unsigned char *, unsigned char *, unsigned int);/* encrypt/decrypt data */ int (*do_cipher)(EVP_CIPHER_CTX *, unsigned char *, unsigned char *, unsigned int);/* encrypt/decrypt data */
void (*cleanup)(EVP_CIPHER_CTX *); /* cleanup ctx */ int (*cleanup)(EVP_CIPHER_CTX *); /* cleanup ctx */
int ctx_size; /* how big the ctx needs to be */ int ctx_size; /* how big the ctx needs to be */
int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Populate a ASN1_TYPE with parameters */ int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Populate a ASN1_TYPE with parameters */
int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Get parameters from a ASN1_TYPE */ int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Get parameters from a ASN1_TYPE */
@ -511,21 +511,21 @@ int EVP_BytesToKey(const EVP_CIPHER *type,EVP_MD *md,unsigned char *salt,
unsigned char *data, int datal, int count, unsigned char *data, int datal, int count,
unsigned char *key,unsigned char *iv); unsigned char *key,unsigned char *iv);
void EVP_EncryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type, int EVP_EncryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type,
unsigned char *key, unsigned char *iv); unsigned char *key, unsigned char *iv);
void EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
int *outl, unsigned char *in, int inl); int *outl, unsigned char *in, int inl);
void EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
void EVP_DecryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type, int EVP_DecryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type,
unsigned char *key, unsigned char *iv); unsigned char *key, unsigned char *iv);
void EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
int *outl, unsigned char *in, int inl); int *outl, unsigned char *in, int inl);
int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
void EVP_CipherInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type, int EVP_CipherInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type,
unsigned char *key,unsigned char *iv,int enc); unsigned char *key,unsigned char *iv,int enc);
void EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
int *outl, unsigned char *in, int inl); int *outl, unsigned char *in, int inl);
int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
@ -559,7 +559,7 @@ int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
void ERR_load_EVP_strings(void ); void ERR_load_EVP_strings(void );
void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
void EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a); int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);
int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);
#ifdef HEADER_BIO_H #ifdef HEADER_BIO_H

View File

@ -69,34 +69,29 @@ void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx)
/* ctx->cipher=NULL; */ /* ctx->cipher=NULL; */
} }
void EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *data, int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *data,
unsigned char *key, unsigned char *iv, int enc) unsigned char *key, unsigned char *iv, int enc)
{ {
if (enc) if (enc) return EVP_EncryptInit(ctx,data,key,iv);
EVP_EncryptInit(ctx,data,key,iv); else return EVP_DecryptInit(ctx,data,key,iv);
else
EVP_DecryptInit(ctx,data,key,iv);
} }
void EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
unsigned char *in, int inl) unsigned char *in, int inl)
{ {
if (ctx->encrypt) if (ctx->encrypt)
EVP_EncryptUpdate(ctx,out,outl,in,inl); return EVP_EncryptUpdate(ctx,out,outl,in,inl);
else EVP_DecryptUpdate(ctx,out,outl,in,inl); else return EVP_DecryptUpdate(ctx,out,outl,in,inl);
} }
int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
{ {
if (ctx->encrypt) if (ctx->encrypt)
{ return EVP_EncryptFinal(ctx,out,outl);
EVP_EncryptFinal(ctx,out,outl);
return(1);
}
else return(EVP_DecryptFinal(ctx,out,outl)); else return(EVP_DecryptFinal(ctx,out,outl));
} }
void EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
unsigned char *key, unsigned char *iv) unsigned char *key, unsigned char *iv)
{ {
if (cipher != NULL) if (cipher != NULL)
@ -104,12 +99,13 @@ void EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
ctx->cipher=cipher; ctx->cipher=cipher;
ctx->key_len = cipher->key_len; ctx->key_len = cipher->key_len;
} }
ctx->cipher->init(ctx,key,iv,1); if(!ctx->cipher->init(ctx,key,iv,1)) return 0;
ctx->encrypt=1; ctx->encrypt=1;
ctx->buf_len=0; ctx->buf_len=0;
return 1;
} }
void EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
unsigned char *key, unsigned char *iv) unsigned char *key, unsigned char *iv)
{ {
if (cipher != NULL) if (cipher != NULL)
@ -117,13 +113,14 @@ void EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
ctx->cipher=cipher; ctx->cipher=cipher;
ctx->key_len = cipher->key_len; ctx->key_len = cipher->key_len;
} }
ctx->cipher->init(ctx,key,iv,0); if(!ctx->cipher->init(ctx,key,iv,0)) return 0;
ctx->encrypt=0; ctx->encrypt=0;
ctx->buf_len=0; ctx->buf_len=0;
return 1;
} }
void EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
unsigned char *in, int inl) unsigned char *in, int inl)
{ {
int i,j,bl; int i,j,bl;
@ -131,20 +128,20 @@ void EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
i=ctx->buf_len; i=ctx->buf_len;
bl=ctx->cipher->block_size; bl=ctx->cipher->block_size;
*outl=0; *outl=0;
if ((inl == 0) && (i != bl)) return; if ((inl == 0) && (i != bl)) return 1;
if (i != 0) if (i != 0)
{ {
if (i+inl < bl) if (i+inl < bl)
{ {
memcpy(&(ctx->buf[i]),in,inl); memcpy(&(ctx->buf[i]),in,inl);
ctx->buf_len+=inl; ctx->buf_len+=inl;
return; return 1;
} }
else else
{ {
j=bl-i; j=bl-i;
if (j != 0) memcpy(&(ctx->buf[i]),in,j); if (j != 0) memcpy(&(ctx->buf[i]),in,j);
ctx->cipher->do_cipher(ctx,out,ctx->buf,bl); if(!ctx->cipher->do_cipher(ctx,out,ctx->buf,bl)) return 0;
inl-=j; inl-=j;
in+=j; in+=j;
out+=bl; out+=bl;
@ -155,16 +152,17 @@ void EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
inl-=i; inl-=i;
if (inl > 0) if (inl > 0)
{ {
ctx->cipher->do_cipher(ctx,out,in,inl); if(!ctx->cipher->do_cipher(ctx,out,in,inl)) return 0;
*outl+=inl; *outl+=inl;
} }
if (i != 0) if (i != 0)
memcpy(ctx->buf,&(in[inl]),i); memcpy(ctx->buf,&(in[inl]),i);
ctx->buf_len=i; ctx->buf_len=i;
return 1;
} }
void EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
{ {
int i,n,b,bl; int i,n,b,bl;
@ -172,24 +170,25 @@ void EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
if (b == 1) if (b == 1)
{ {
*outl=0; *outl=0;
return; return 1;
} }
bl=ctx->buf_len; bl=ctx->buf_len;
n=b-bl; n=b-bl;
for (i=bl; i<b; i++) for (i=bl; i<b; i++)
ctx->buf[i]=n; ctx->buf[i]=n;
ctx->cipher->do_cipher(ctx,out,ctx->buf,b); if(!ctx->cipher->do_cipher(ctx,out,ctx->buf,b)) return 0;
*outl=b; *outl=b;
return 1;
} }
void EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
unsigned char *in, int inl) unsigned char *in, int inl)
{ {
int b,bl,n; int b,bl,n;
int keep_last=0; int keep_last=0;
*outl=0; *outl=0;
if (inl == 0) return; if (inl == 0) return 1;
b=ctx->cipher->block_size; b=ctx->cipher->block_size;
if (b > 1) if (b > 1)
@ -204,13 +203,13 @@ void EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
memcpy(&(ctx->buf[bl]),in,inl); memcpy(&(ctx->buf[bl]),in,inl);
ctx->buf_len=b; ctx->buf_len=b;
*outl=0; *outl=0;
return; return 1;
} }
keep_last=1; keep_last=1;
inl-=b; /* don't do the last block */ inl-=b; /* don't do the last block */
} }
} }
EVP_EncryptUpdate(ctx,out,outl,in,inl); if(!EVP_EncryptUpdate(ctx,out,outl,in,inl)) return 0;
/* if we have 'decrypted' a multiple of block size, make sure /* if we have 'decrypted' a multiple of block size, make sure
* we have a copy of this last block */ * we have a copy of this last block */
@ -225,6 +224,7 @@ void EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
#endif #endif
ctx->buf_len=b; ctx->buf_len=b;
} }
return 1;
} }
int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
@ -241,7 +241,7 @@ int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
EVPerr(EVP_F_EVP_DECRYPTFINAL,EVP_R_WRONG_FINAL_BLOCK_LENGTH); EVPerr(EVP_F_EVP_DECRYPTFINAL,EVP_R_WRONG_FINAL_BLOCK_LENGTH);
return(0); return(0);
} }
EVP_EncryptUpdate(ctx,ctx->buf,&n,ctx->buf,0); if(!EVP_EncryptUpdate(ctx,ctx->buf,&n,ctx->buf,0)) return 0;
if (n != b) if (n != b)
return(0); return(0);
n=ctx->buf[b-1]; n=ctx->buf[b-1];
@ -268,11 +268,14 @@ int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
return(1); return(1);
} }
void EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *c) int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *c)
{ {
if ((c->cipher != NULL) && (c->cipher->cleanup != NULL)) if ((c->cipher != NULL) && (c->cipher->cleanup != NULL))
c->cipher->cleanup(c); {
if(!c->cipher->cleanup(c)) return 0;
}
memset(c,0,sizeof(EVP_CIPHER_CTX)); memset(c,0,sizeof(EVP_CIPHER_CTX));
return 1;
} }
int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *c, int keylen) int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *c, int keylen)