On Mon November 28 2011, Jussi Peltonen wrote:
> No, it doesn't work on Linux either, if I link my test program using
> OpenSSL 1.0.0e.
> 
> The test program works on Linux if I link it differently.
> 
> $ ldd blowfish
>         libcrypto.so.1 => /usr/lib/libcrypto.so.1 (0x40022000)
>         libc.so.6 => /lib/i686/libc.so.6 (0x400de000)
>         libdl.so.2 => /lib/libdl.so.2 (0x4020e000)
>         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
> 
> 
>  /usr/lib/libcrypto.so -> libcrypto.so.0.9.6
> 
> Is this a bug?
>

Only of your installation's /etc/ld.so.conf contents.  ;-)
or the included files/directories.

Fix as required and then run ldconfig, see: "man ldconfig" 

Mike
> Jussi
> 
> 2011/11/24 Jussi Peltonen <pelt...@gmail.com>:
> > Hello,
> >
> > newbie question regarding the Blowfish algorithm: why do my
> > encrypt/decypt functions fail on Windows XP SP3 with OpenSSL 1.0.0e?
> > The same functions work on my Linux workstation.
> >
> > Windows output:
> > ============
> > Encrypt:
> > encrypting 7680 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 512 bytes
> > EVP_DecryptFinal 8 bytes
> > encrypted 7744 bytes
> >
> > Decrypt:
> > decrypting 7744 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1032 bytes        <= why 1032 instead of 1024?
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1032 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1032 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1032 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1032 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1032 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 520 bytes
> > EVP_DecryptFinal 0 bytes
> > decrypted 7736 bytes
> >
> > Linux output:
> > ==========
> > encrypting 7680 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 8 bytes
> > EVP_DecryptUpdate 512 bytes
> > EVP_DecryptFinal 8 bytes
> > encrypted 7744 bytes
> >
> > decrypting 7744 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 1024 bytes
> > EVP_DecryptFinal 0 bytes
> > EVP_DecryptUpdate 512 bytes
> > EVP_DecryptFinal 0 bytes
> > decrypted 7680 bytes
> >
> >
> > Source code:
> >
> > static int
> > decrypt (unsigned char *inbuf, int size, unsigned char *outbuf,
> >                 int *outsz)
> > {
> >        int olen, tlen, n, left;
> >        unsigned char *inp = inbuf;
> >        unsigned char *outp = outbuf;
> >        EVP_CIPHER_CTX ctx;
> >
> >        printf("decrypting %d bytes\n", size);
> >
> >        EVP_CIPHER_CTX_init (&ctx);
> >        EVP_DecryptInit (&ctx, EVP_bf_cbc (), key, iv);
> >
> >        left = size;
> >        *outsz = 0;
> >
> >        while (left > 0)
> >        {
> >                n = (left > OP_SIZE ? OP_SIZE : left);
> >                olen = 0;
> >                memset((void *)outp, 0, IP_SIZE);
> >                if (EVP_DecryptUpdate (&ctx, outp, &olen, inp, n) != 1)
> >                {
> >                        return -1;
> >                }
> >                printf("EVP_DecryptUpdate %d bytes\n", olen);
> >
> >                if (EVP_DecryptFinal (&ctx, outp + olen, &tlen) != 1)
> >                {
> >                        return -1;
> >                }
> >                printf("EVP_DecryptFinal %d bytes\n", tlen);
> >
> >                *outsz = ((*outsz) + olen + tlen);
> >                inp += n;
> >                left -= n;
> >                outp += (olen + tlen);
> >        }
> >
> >        printf("decrypted %d bytes\n", *outsz);
> >
> >        EVP_CIPHER_CTX_cleanup (&ctx);
> >        return 0;
> > }
> >
> > static int
> > encrypt (unsigned char *inbuf, int size, unsigned char *outbuf, int *outsz)
> > {
> >        int olen, tlen, n, left;
> >        unsigned char *inp = inbuf;
> >        unsigned char *outp = outbuf;
> >        EVP_CIPHER_CTX ctx;
> >
> >        printf("encrypting %d bytes\n", size);
> >
> >        EVP_CIPHER_CTX_init (&ctx);
> >        EVP_EncryptInit (&ctx, EVP_bf_cbc (), key, iv);
> >
> >
> >        left = size;
> >        *outsz = 0;
> >
> >        while (left > 0)
> >        {
> >                n = (left > IP_SIZE ? IP_SIZE : left);
> >                olen = 0;
> >                if (EVP_EncryptUpdate (&ctx, outp, &olen, inp, n) != 1)
> >                {
> >                        return -1;
> >                }
> >                printf("EVP_DecryptUpdate %d bytes\n", olen);
> >
> >                if (EVP_EncryptFinal (&ctx, outp + olen, &tlen) != 1)
> >                {
> >                        return -1;
> >                }
> >                printf("EVP_DecryptFinal %d bytes\n", tlen);
> >
> >                *outsz = ((*outsz) + olen + tlen);
> >                inp += n;
> >                left -= n;
> >                outp += (olen + tlen);
> >        }
> >
> >        printf("encrypted %d bytes\n", *outsz);
> >
> >        EVP_CIPHER_CTX_cleanup (&ctx);
> >        return 0;
> > }
> >
> > Cheers,
> > Jussi
> >
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    openssl-users@openssl.org
> Automated List Manager                           majord...@openssl.org
> 
> 


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to