This is the progam snippet: BIO *mbio; int bio_store_bytes; unsigned char *cert_data, *cert_data_ptr; unsigned char *cert_data_tmp;
//create a read/write BIO mbio = BIO_new(BIO_s_mem()); //Assume x is of X509 type and is a result of X509_sign PEM_write_bio_X509(mbio, x); BIO_flush(mbio); bio_store_bytes = BIO_pending(mbio); BIO_get_mem_data(mbio, (unsigned char *)&cert_data_tmp); cert_data_ptr = (unsigned char *) OPENSSL_malloc(bio_store_bytes + 1); /* for \0 */ if (cert_data_ptr != NULL) { cert_data = cert_data_ptr; strncpy(cert_data, cert_data_tmp, bio_store_bytes); for (i = (bio_store_bytes); i == strlen(cert_data_tmp); i++) { cert_data[i] = '\0'; } } BIO_free_all(mbio); I still see the garbage characters: ukOjszaLTZuAFA== -----END CERTIFICATE----- [EMAIL PROTECTED] --Smith On Tue, 07 Sep 2004 14:39:19 -0700, Eric Meyer <[EMAIL PROTECTED]> wrote: > The PEM format is already Base64. > > Also, your sample includes characters that are invalid for a Base64 > encoded data, which is explicitly 7 bit safe, so would not include an > accented character. It looks like your null byte is in the wrong place. > It probably should have come after the "=" sign. > > Eric > > On Sep 7, 2004, at 1:12 PM, Smith Baylor wrote: > > > Hi, > > > > I am using C as the programming language and MySQL as the db. > > > > unsigned char *cert_data; > > > > Instead of storing in PEM format directly, I am storing it in base64 > > format - I believe this is more safer - feel free to prove me > > otherwise. > > > > Once I store the cert_data value, I also pad this with '\0' - string > > terminator. > > > > I get something like this at the end of the encoding: > > TGZ3am0wTDNjeTN3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= > > ÃÂÃÂ7HZm > > > > which the db insert or update commands don't like. > > > > /Shivaram > > > > > > > > > > > > > > ----- Original Message ----- > > From: Carlos Roberto Zainos H <[EMAIL PROTECTED]> > > Date: Tue, 7 Sep 2004 12:36:44 -0500 (CDT) > > Subject: Re: storing PEM encoded certs in database > > To: [EMAIL PROTECTED] > > > > > > Hi > > I'm not an expert, but I think that could be some different depending > > on the DBMS and the driver connection being used. > > > > For example, I'm using Oracle DB 10g with ODBC based client connection > > to the DB. > > > > I'm storing PEM certificates making a copy of it to a buffer and then > > storing it into the DB via INSERT with the apropiate convertions: > > > > unsigned char cert[2*1024]; > > BIO *buf; > > > > > > buf = BIO_new (BIO_s_mem()); > > res = PEM_write_bio_X509(buf, xreq);//xreq is the X509 cert > > > > longitud = sizeof(cert); > > res = BIO_read(buf, cert, (int)longitud); > > cert[res]='\0'; > > //executing the INSERT via exec_sql_comm(sentence) function, where > > sentence = "insert into certificados > > (estadocer,fechacaducidad,numserie,certificado) values > > ('V',to_date('%s','YYYY-MM-DD HH24:MI:SS'),'%i','%s')",fecha_cad, > > num_serie, cert)" > > Holpe this helps. > > Zainos > > > > Smith Baylor <[EMAIL PROTECTED]> wrote: > > > > > > > > ________________________________ > > Do You Yahoo!? > > Yahoo! Net: La mejor conexiân a internet y 25MB extra a tu correo por > > $100 al mes. > > > > ______________________________________________________________________ > > OpenSSL Project http://www.openssl.org > > User Support Mailing List [EMAIL PROTECTED] > > Automated List Manager [EMAIL PROTECTED] > > > > ______________________________________________________________________ > OpenSSL Project http://www.openssl.org > User Support Mailing List [EMAIL PROTECTED] > Automated List Manager [EMAIL PROTECTED] > ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]