diff options
Diffstat (limited to 'openssl/crypto/des/cbc3_enc.c')
-rw-r--r-- | openssl/crypto/des/cbc3_enc.c | 80 |
1 files changed, 38 insertions, 42 deletions
diff --git a/openssl/crypto/des/cbc3_enc.c b/openssl/crypto/des/cbc3_enc.c index b5db4e14f..249518a6a 100644 --- a/openssl/crypto/des/cbc3_enc.c +++ b/openssl/crypto/des/cbc3_enc.c @@ -5,21 +5,21 @@ * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -34,10 +34,10 @@ * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -49,7 +49,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence @@ -60,40 +60,36 @@ /* HAS BUGS! DON'T USE - this is only present for use in des.c */ void DES_3cbc_encrypt(DES_cblock *input, DES_cblock *output, long length, - DES_key_schedule ks1, DES_key_schedule ks2, DES_cblock *iv1, - DES_cblock *iv2, int enc) - { - int off=((int)length-1)/8; - long l8=((length+7)/8)*8; - DES_cblock niv1,niv2; - - if (enc == DES_ENCRYPT) - { - DES_cbc_encrypt((unsigned char*)input, - (unsigned char*)output,length,&ks1,iv1,enc); - if (length >= sizeof(DES_cblock)) - memcpy(niv1,output[off],sizeof(DES_cblock)); - DES_cbc_encrypt((unsigned char*)output, - (unsigned char*)output,l8,&ks2,iv1,!enc); - DES_cbc_encrypt((unsigned char*)output, - (unsigned char*)output,l8,&ks1,iv2,enc); - if (length >= sizeof(DES_cblock)) - memcpy(niv2,output[off],sizeof(DES_cblock)); - } - else - { - if (length >= sizeof(DES_cblock)) - memcpy(niv2,input[off],sizeof(DES_cblock)); - DES_cbc_encrypt((unsigned char*)input, - (unsigned char*)output,l8,&ks1,iv2,enc); - DES_cbc_encrypt((unsigned char*)output, - (unsigned char*)output,l8,&ks2,iv1,!enc); - if (length >= sizeof(DES_cblock)) - memcpy(niv1,output[off],sizeof(DES_cblock)); - DES_cbc_encrypt((unsigned char*)output, - (unsigned char*)output,length,&ks1,iv1,enc); - } - memcpy(*iv1,niv1,sizeof(DES_cblock)); - memcpy(*iv2,niv2,sizeof(DES_cblock)); - } + DES_key_schedule ks1, DES_key_schedule ks2, + DES_cblock *iv1, DES_cblock *iv2, int enc) +{ + int off = ((int)length - 1) / 8; + long l8 = ((length + 7) / 8) * 8; + DES_cblock niv1, niv2; + if (enc == DES_ENCRYPT) { + DES_cbc_encrypt((unsigned char *)input, + (unsigned char *)output, length, &ks1, iv1, enc); + if (length >= sizeof(DES_cblock)) + memcpy(niv1, output[off], sizeof(DES_cblock)); + DES_cbc_encrypt((unsigned char *)output, + (unsigned char *)output, l8, &ks2, iv1, !enc); + DES_cbc_encrypt((unsigned char *)output, + (unsigned char *)output, l8, &ks1, iv2, enc); + if (length >= sizeof(DES_cblock)) + memcpy(niv2, output[off], sizeof(DES_cblock)); + } else { + if (length >= sizeof(DES_cblock)) + memcpy(niv2, input[off], sizeof(DES_cblock)); + DES_cbc_encrypt((unsigned char *)input, + (unsigned char *)output, l8, &ks1, iv2, enc); + DES_cbc_encrypt((unsigned char *)output, + (unsigned char *)output, l8, &ks2, iv1, !enc); + if (length >= sizeof(DES_cblock)) + memcpy(niv1, output[off], sizeof(DES_cblock)); + DES_cbc_encrypt((unsigned char *)output, + (unsigned char *)output, length, &ks1, iv1, enc); + } + memcpy(*iv1, niv1, sizeof(DES_cblock)); + memcpy(*iv2, niv2, sizeof(DES_cblock)); +} |