Loading crypto/evp/e_des.c +64 −17 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ static int des_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr); /* Because of various casts and different names can't use IMPLEMENT_BLOCK_CIPHER */ static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { BLOCK_CIPHER_ecb_loop() DES_ecb_encrypt((DES_cblock *)(in + i), (DES_cblock *)(out + i), ctx->cipher_data, ctx->encrypt); Loading @@ -80,23 +80,51 @@ static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { DES_ofb64_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num); while(inl>=EVP_MAXCHUNK) { DES_ofb64_encrypt(in, out, (long)EVP_MAXCHUNK, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ofb64_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num); return 1; } static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { while(inl>=EVP_MAXCHUNK) { DES_ncbc_encrypt(in, out, (long)EVP_MAXCHUNK, ctx->cipher_data, (DES_cblock *)ctx->iv, ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ncbc_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ctx->iv, ctx->encrypt); return 1; } static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { while(inl>=EVP_MAXCHUNK) { DES_cfb64_encrypt(in,out, (long)EVP_MAXCHUNK, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_cfb64_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); return 1; Loading @@ -105,26 +133,45 @@ static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, /* Although we have a CFB-r implementation for DES, it doesn't pack the right way, so wrap it here */ static int des_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { unsigned int n; size_t n,chunk=EVP_MAXCHUNK/8; unsigned char c[1],d[1]; for(n=0 ; n < inl * 8; ++n) if (inl<chunk) chunk=inl; while (inl && inl>=chunk) { for(n=0 ; n < chunk*8; ++n) { c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0; DES_cfb_encrypt(c,d,1,1,ctx->cipher_data,(DES_cblock *)ctx->iv, ctx->encrypt); out[n/8]=(out[n/8]&~(0x80 >> (n%8)))|((d[0]&0x80) >> (n%8)); } inl-=chunk; in +=chunk; out+=chunk; if (inl<chunk) chunk=inl; } return 1; } static int des_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { DES_cfb_encrypt(in,out,8,inl,ctx->cipher_data,(DES_cblock *)ctx->iv, ctx->encrypt); while (inl>=EVP_MAXCHUNK) { DES_cfb_encrypt(in,out,8,(long)EVP_MAXCHUNK,ctx->cipher_data, (DES_cblock *)ctx->iv,ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_cfb_encrypt(in,out,8,(long)inl,ctx->cipher_data, (DES_cblock *)ctx->iv,ctx->encrypt); return 1; } Loading crypto/evp/e_des3.c +52 −11 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ typedef struct /* Because of various casts and different args can't use IMPLEMENT_BLOCK_CIPHER */ static int des_ede_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { BLOCK_CIPHER_ecb_loop() DES_ecb3_encrypt((const_DES_cblock *)(in + i), Loading @@ -97,16 +97,27 @@ static int des_ede_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } static int des_ede_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { if (inl>=EVP_MAXCHUNK) { DES_ede3_ofb64_encrypt(in, out, (long)EVP_MAXCHUNK, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, &ctx->num); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ede3_ofb64_encrypt(in, out, (long)inl, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, &ctx->num); return 1; } static int des_ede_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { #ifdef KSSL_DEBUG { Loading @@ -119,6 +130,16 @@ static int des_ede_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, printf("\n"); } #endif /* KSSL_DEBUG */ if (inl>=EVP_MAXCHUNK) { DES_ede3_cbc_encrypt(in, out, (long)EVP_MAXCHUNK, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ede3_cbc_encrypt(in, out, (long)inl, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, ctx->encrypt); Loading @@ -126,8 +147,18 @@ static int des_ede_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } static int des_ede_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { if (inl>=EVP_MAXCHUNK) { DES_ede3_cfb64_encrypt(in, out, (long)EVP_MAXCHUNK, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ede3_cfb64_encrypt(in, out, (long)inl, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); Loading @@ -137,9 +168,9 @@ static int des_ede_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, /* Although we have a CFB-r implementation for 3-DES, it doesn't pack the right way, so wrap it here */ static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { unsigned int n; size_t n; unsigned char c[1],d[1]; for(n=0 ; n < inl ; ++n) Loading @@ -155,9 +186,19 @@ static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } static int des_ede3_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { DES_ede3_cfb_encrypt(in,out,8,inl, while (inl>=EVP_MAXCHUNK) { DES_ede3_cfb_encrypt(in,out,8,(long)EVP_MAXCHUNK, &data(ctx)->ks1,&data(ctx)->ks2,&data(ctx)->ks3, (DES_cblock *)ctx->iv,ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ede3_cfb_encrypt(in,out,8,(long)inl, &data(ctx)->ks1,&data(ctx)->ks2,&data(ctx)->ks3, (DES_cblock *)ctx->iv,ctx->encrypt); return 1; Loading crypto/evp/e_idea.c +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ static int idea_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, */ static int idea_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { BLOCK_CIPHER_ecb_loop() idea_ecb_encrypt(in + i, out + i, ctx->cipher_data); Loading crypto/evp/e_null.c +3 −3 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ static int null_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv,int enc); static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl); const unsigned char *in, size_t inl); static const EVP_CIPHER n_cipher= { NID_undef, Loading Loading @@ -93,10 +93,10 @@ static int null_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, } static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { if (in != out) memcpy((char *)out,(const char *)in,(size_t)inl); memcpy((char *)out,(const char *)in,inl); return 1; } crypto/evp/e_rc4.c +2 −2 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ typedef struct static int rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv,int enc); static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl); const unsigned char *in, size_t inl); static const EVP_CIPHER r4_cipher= { NID_rc4, Loading Loading @@ -128,7 +128,7 @@ static int rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, } static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { RC4(&data(ctx)->ks,inl,in,out); return 1; Loading Loading
crypto/evp/e_des.c +64 −17 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ static int des_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr); /* Because of various casts and different names can't use IMPLEMENT_BLOCK_CIPHER */ static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { BLOCK_CIPHER_ecb_loop() DES_ecb_encrypt((DES_cblock *)(in + i), (DES_cblock *)(out + i), ctx->cipher_data, ctx->encrypt); Loading @@ -80,23 +80,51 @@ static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { DES_ofb64_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num); while(inl>=EVP_MAXCHUNK) { DES_ofb64_encrypt(in, out, (long)EVP_MAXCHUNK, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ofb64_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num); return 1; } static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { while(inl>=EVP_MAXCHUNK) { DES_ncbc_encrypt(in, out, (long)EVP_MAXCHUNK, ctx->cipher_data, (DES_cblock *)ctx->iv, ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ncbc_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ctx->iv, ctx->encrypt); return 1; } static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { while(inl>=EVP_MAXCHUNK) { DES_cfb64_encrypt(in,out, (long)EVP_MAXCHUNK, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_cfb64_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); return 1; Loading @@ -105,26 +133,45 @@ static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, /* Although we have a CFB-r implementation for DES, it doesn't pack the right way, so wrap it here */ static int des_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { unsigned int n; size_t n,chunk=EVP_MAXCHUNK/8; unsigned char c[1],d[1]; for(n=0 ; n < inl * 8; ++n) if (inl<chunk) chunk=inl; while (inl && inl>=chunk) { for(n=0 ; n < chunk*8; ++n) { c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0; DES_cfb_encrypt(c,d,1,1,ctx->cipher_data,(DES_cblock *)ctx->iv, ctx->encrypt); out[n/8]=(out[n/8]&~(0x80 >> (n%8)))|((d[0]&0x80) >> (n%8)); } inl-=chunk; in +=chunk; out+=chunk; if (inl<chunk) chunk=inl; } return 1; } static int des_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { DES_cfb_encrypt(in,out,8,inl,ctx->cipher_data,(DES_cblock *)ctx->iv, ctx->encrypt); while (inl>=EVP_MAXCHUNK) { DES_cfb_encrypt(in,out,8,(long)EVP_MAXCHUNK,ctx->cipher_data, (DES_cblock *)ctx->iv,ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_cfb_encrypt(in,out,8,(long)inl,ctx->cipher_data, (DES_cblock *)ctx->iv,ctx->encrypt); return 1; } Loading
crypto/evp/e_des3.c +52 −11 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ typedef struct /* Because of various casts and different args can't use IMPLEMENT_BLOCK_CIPHER */ static int des_ede_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { BLOCK_CIPHER_ecb_loop() DES_ecb3_encrypt((const_DES_cblock *)(in + i), Loading @@ -97,16 +97,27 @@ static int des_ede_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } static int des_ede_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { if (inl>=EVP_MAXCHUNK) { DES_ede3_ofb64_encrypt(in, out, (long)EVP_MAXCHUNK, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, &ctx->num); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ede3_ofb64_encrypt(in, out, (long)inl, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, &ctx->num); return 1; } static int des_ede_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { #ifdef KSSL_DEBUG { Loading @@ -119,6 +130,16 @@ static int des_ede_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, printf("\n"); } #endif /* KSSL_DEBUG */ if (inl>=EVP_MAXCHUNK) { DES_ede3_cbc_encrypt(in, out, (long)EVP_MAXCHUNK, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ede3_cbc_encrypt(in, out, (long)inl, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, ctx->encrypt); Loading @@ -126,8 +147,18 @@ static int des_ede_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } static int des_ede_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { if (inl>=EVP_MAXCHUNK) { DES_ede3_cfb64_encrypt(in, out, (long)EVP_MAXCHUNK, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ede3_cfb64_encrypt(in, out, (long)inl, &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); Loading @@ -137,9 +168,9 @@ static int des_ede_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, /* Although we have a CFB-r implementation for 3-DES, it doesn't pack the right way, so wrap it here */ static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { unsigned int n; size_t n; unsigned char c[1],d[1]; for(n=0 ; n < inl ; ++n) Loading @@ -155,9 +186,19 @@ static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } static int des_ede3_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { DES_ede3_cfb_encrypt(in,out,8,inl, while (inl>=EVP_MAXCHUNK) { DES_ede3_cfb_encrypt(in,out,8,(long)EVP_MAXCHUNK, &data(ctx)->ks1,&data(ctx)->ks2,&data(ctx)->ks3, (DES_cblock *)ctx->iv,ctx->encrypt); inl-=EVP_MAXCHUNK; in +=EVP_MAXCHUNK; out+=EVP_MAXCHUNK; } if (inl) DES_ede3_cfb_encrypt(in,out,8,(long)inl, &data(ctx)->ks1,&data(ctx)->ks2,&data(ctx)->ks3, (DES_cblock *)ctx->iv,ctx->encrypt); return 1; Loading
crypto/evp/e_idea.c +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ static int idea_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, */ static int idea_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { BLOCK_CIPHER_ecb_loop() idea_ecb_encrypt(in + i, out + i, ctx->cipher_data); Loading
crypto/evp/e_null.c +3 −3 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ static int null_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv,int enc); static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl); const unsigned char *in, size_t inl); static const EVP_CIPHER n_cipher= { NID_undef, Loading Loading @@ -93,10 +93,10 @@ static int null_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, } static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { if (in != out) memcpy((char *)out,(const char *)in,(size_t)inl); memcpy((char *)out,(const char *)in,inl); return 1; }
crypto/evp/e_rc4.c +2 −2 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ typedef struct static int rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv,int enc); static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl); const unsigned char *in, size_t inl); static const EVP_CIPHER r4_cipher= { NID_rc4, Loading Loading @@ -128,7 +128,7 @@ static int rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, } static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) const unsigned char *in, size_t inl) { RC4(&data(ctx)->ks,inl,in,out); return 1; Loading