Mike,
Did you read the original post? Why does not the blowfish sample work
on Windows XP?

Jussi

2011/11/28 Michael S. Zick <open...@morethan.org>:
> 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
>
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to