David,

Thanks for taking out time to review my code and reply.

1) I agree that using sizeof was a blunder on my part.
2) I'm calling decode2 with rg_conf_buf_dup and rg_conf_buf_dup_2, second
one being the output buffer. So I'm certain that I don't modify the input
buffer (though I just zero out only the part of my output buffer due to
sizeof thing).

I was also wondering about the cipher block size. I was thinking of using 16
as block size, read the input buffer in chunks of block size one at a time,
decrypt, copy and append to the output buffer. Do you think that would work
? Could I then use the buffer holding decrypted data in the decode2 function
and get the original data back ? How can I get the size of decrypted buffer
- strlen wouldn't work, I suppose ?

Thanks,
Kunal


On Thu, May 20, 2010 at 8:38 PM, David Schwartz <dav...@webmaster.com>wrote:

>
> Kunal Sharma wrote:
>
>
> void encode2(char *inbuf,char *outbuf)
> {
>        unsigned char key32[] = "As different as chalk and cheese";
>        unsigned char iv[] = "As dark as pitch";
>
>        AES_KEY aeskey;
>
>        memset(outbuf, 0, sizeof(outbuf));
>
>        AES_set_encrypt_key(key32, 32*8, &aeskey);
>
>        AES_cbc_encrypt(inbuf, outbuf, strlen(inbuf), &aeskey, iv,
> AES_ENCRYPT);
>
>        return;
> }
>
> You can't mean 'sizeof(outbuf)' -- 'outbuf' is a *pointer* to the output
> buffer. What does the size of that pointer have to do with anything?
>
> void decode2(char *inbuf,char *outbuf,int len)
> {
>        unsigned char key32[] = "As different as chalk and cheese";
>        unsigned char iv[] = "As dark as pitch";
>
>        AES_KEY aeskey;
>
>        memset(outbuf, 0, sizeof(outbuf));
>
>        AES_set_decrypt_key(key32, 32*8, &aeskey);
>
>        AES_cbc_encrypt(inbuf, outbuf, len, &aeskey, iv, AES_DECRYPT);
>
>        return;
> }
>
> Same use of 'sizeof(outbuf)' where that makes no sense (what does the size
> of the pointer to the output buffer have to do with anything?). Also, what
> happens if the plaintext is not a precise multiple of the cipher block
> size?
>
> It seems like you have picked a low-level encryption/decryption function
> where you wanted a high-level one.
>
> Also, you have one amusing boner. Your 'decode2' function tries to zero the
> output buffer, but actually only zeroes part of it. But you call it with
> the
> output buffer and input buffer the same! So you are actually erasing part
> of
> your input buffer before you use it!
>
> DS
>
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    openssl-users@openssl.org
> Automated List Manager                           majord...@openssl.org
>

Reply via email to