On Thu, Sep 09, 2004, Smith Baylor wrote: > A PKCS12 object is encrypted with a shared secret. When I use the > function i2d_PKCS12_fp() to write to a file, it works, but, when I use > this to store in a BIO and convert this into base64, it does only > 2/3rds of it. Why is this? Any thoughts or pointers? > > Thanks > > > > On Thu, 9 Sep 2004 08:32:36 -0700, Smith Baylor <[EMAIL PROTECTED]> wrote: > > BIO *mbio, *b64bio, *bio; > > > > mbio = BIO_new(BIO_s_mem()); > > b64bio = BIO_new(BIO_f_base64()); > > bio = BIO_push(b64bio, mbio); > > int bytes_stored = i2d_PKCS12_bio(bio, p12); > > BIO_flush(mbio2); > > > > BIO_get_mem_data(mbio, (unsigned char *)&p12_data_tmp); > > p12_data = (unsigned char*)OPENSSL_malloc(bytes_stored + 1); > > strncpy(p12_data, p12_data_tmp, bytes_stored); > > p12_data[bytes_stored] = '\0'; > > > > bytes_stored gives me 4030 bytes, but, when I try to print or save the > > p12_data, I am able to get only 3000 bytes and the program stops. > > What am I doing wrong? > >
At least one problem is that you need to call BIO_flush() on the BIO chain (bio in your example above) not the memory BIO. Steve. -- Dr Stephen N. Henson. Email, S/MIME and PGP keys: see homepage OpenSSL project core developer and freelance consultant. Funding needed! Details on homepage. Homepage: http://www.drh-consultancy.demon.co.uk ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]