Hey

May some explains the following result about AES OFB (sounds like a BUG)?
I think that AES-128 block size is at 128 bits even for ECB or OFB mode but 
openssl output is different.

INFO: Settings:
        alg: aes-128-cbc
Algo Name: aes-128-cbc
EVP_CIPHER: NID: 01a3, Name: AES-128-CBC, Blk len: 16, key len: 16, iv len: 16, 
flags: 2, mode: 2

INFO: Settings:
        alg: aes-128-ofb
Algo Name: aes-128-ofb
EVP_CIPHER: NID: 01a4, Name: AES-128-OFB, Blk len: 1, key len: 16, iv len: 16, 
flags: 4, mode: 4

INFO: Settings:
        alg: aes-128-ecb
Algo Name: aes-128-ecb
EVP_CIPHER: NID: 01a2, Name: AES-128-ECB, Blk len: 16, key len: 16, iv len: 16, 
flags: 1, mode: 1


here is the piece of code:

const EVP_CIPHER *evp_ciph = NULL;
evp_ciph = EVP_get_cipherbyname (alg_name);

        fprintf (stdout, "Algo Name: %s\n", alg_name);
        if (evp_ciph != NULL) {
        fprintf (stdout, "EVP_CIPHER: NID: %04x, Name: %s, " \
                        "Blk len: %d, key len: %d, iv len: %d, " \
                        "flags: %lx, mode: %lx\n",
                        EVP_CIPHER_nid (evp_ciph), EVP_CIPHER_name (evp_ciph),
                        EVP_CIPHER_block_size (evp_ciph),
                        EVP_CIPHER_key_length (evp_ciph),
                        EVP_CIPHER_iv_length (evp_ciph),
                        EVP_CIPHER_flags (evp_ciph), EVP_CIPHER_mode 
(evp_ciph));


thanks in advance 

Fred

-----Original Message-----
From:   Nils Larsch via RT [mailto:[EMAIL PROTECTED]
Sent:   Thu 4/20/2006 3:44 PM
To:     [EMAIL PROTECTED]
Cc:     [email protected]
Subject:        Re: [openssl.org #1318] [PATCH] AES-CFB1 and DES-CFB1 mode only 
encrypts 1/8th of the source

Michael McDougall wrote:

> diff -ur openssl-SNAP-20060415/crypto/aes/aes_cfb.c 
> openssl-SNAP-20060415.changed/crypto/aes/aes_cfb.c
> --- openssl-SNAP-20060415/crypto/aes/aes_cfb.c        2004-12-30 
> 06:00:14.000000000 -0500
> +++ openssl-SNAP-20060415.changed/crypto/aes/aes_cfb.c        2006-04-17 
> 22:18:11.000000000 -0400
> @@ -191,18 +191,20 @@
>      }
>  
>  /* N.B. This expects the input to be packed, MS bit first */
> -void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
> +void 
> +AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
>                     const unsigned long length, const AES_KEY *key,
>                     unsigned char *ivec, int *num, const int enc)
>      {
>      unsigned int n;
>      unsigned char c[1],d[1];
> +    unsigned long length_in_bits = length * 8;
>  
>      assert(in && out && key && ivec && num);
>      assert(*num == 0);
>  
>      memset(out,0,(length+7)/8);
> -    for(n=0 ; n < length ; ++n)
> +    for(n=0 ; n < length_in_bits ; ++n)
>       {
>       c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0;
>       AES_cfbr_encrypt_block(c,d,1,key,ivec,enc);

the problem here is that that EVP layer specifies the length of the
input in bytes whereas this functions expects the length in bits
(although is not clearly specified somewhere).

> diff -ur openssl-SNAP-20060415/crypto/evp/e_des.c 
> openssl-SNAP-20060415.changed/crypto/evp/e_des.c
> --- openssl-SNAP-20060415/crypto/evp/e_des.c  2004-03-28 13:00:11.000000000 
> -0500
> +++ openssl-SNAP-20060415.changed/crypto/evp/e_des.c  2006-04-17 
> 22:17:39.000000000 -0400
> @@ -109,8 +109,9 @@
>      {
>      unsigned int n;
>      unsigned char c[1],d[1];
> +    unsigned int inl_bits = inl * 8;
>  
> -    for(n=0 ; n < inl ; ++n)
> +    for(n=0 ; n < inl_bits ; ++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,

agree, with this one.

Cheers,
Nils

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [EMAIL PROTECTED]



______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to