Hey folks,

I've got a problem where I'm trying to decode base64 in memory and
BIO_read is returning 1 when I think it should be returning the
number of bytes read into buf after doing a base64 decode.  The code
is based on the BIO_f_base64(3) manpage.  The output should be "BOOGA
BOOG".  The correct data is being placed in the buf but the length
being returned is incorrect.

#include <stdio.h>
#include <string.h>
#include <openssl/buffer.h>
#include <openssl/bio.h>
#include <openssl/evp.h>


int main(void)
{
    char *data = "Qk9PR0EgQk9PRw==\n";
    int  dlen = strlen(data);
    int inlen, totallen = 0;
    char buf[512];
    BIO *bio, *bio_out;
    BIO *b64 = BIO_new(BIO_f_base64());
    bio = BIO_new_mem_buf(data, dlen);
    bio_out = BIO_new_fp(stdout, BIO_NOCLOSE);
    bio = BIO_push(b64, bio);
    
    while((inlen = BIO_read(bio, buf, 512) > 0))
    {
        totallen += inlen;
        BIO_write(bio_out, buf, inlen);
        BIO_flush(bio_out);
    }

    printf("\n%d was total len!\n", totallen);

    
    BIO_free_all(bio);

    return 0;
}

-- 
Chris Green <[EMAIL PROTECTED]>
A watched process never cores.

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to