Hi Bjoern,

please see my comments below:
(rather Qt and memory related)

On Thu, Aug 23, 2012 at 03:12:55PM +0200, Bjoern Schiessle wrote:
> 
> QMap<QString, QString> Encryption::key2pem(RSA *rsa, QString password)
> {
>     QMap<QString, QString> keypair;
>     BUF_MEM *bptr;
>     BIO *pubBio = BIO_new(BIO_s_mem());
>     BIO *privBio = BIO_new(BIO_s_mem());
> 
>     PEM_write_bio_RSA_PUBKEY(pubBio, rsa);
>     PEM_write_bio_RSAPrivateKey(privBio, rsa, EVP_aes_128_cfb(),NULL,
>     0, 0, password.toLocal8Bit().data());

The following block can be simplified:

> 
>     BIO_get_mem_ptr(pubBio, &bptr);
>     char *pubKey = (char *)malloc(bptr->length+1);
>     memcpy(pubKey, bptr->data, bptr->length);
>     pubKey[bptr->length] = 0;

BIO_get_mem_ptr(pubBio, &bptr);
keypair["publickey"] = QString::fromAscii(bptr->data, bptr->length);


> 
>     BIO_get_mem_ptr(privBio, &bptr);
>     char *privKey = (char *)malloc(bptr->length+1);
>     memcpy(privKey, bptr->data, bptr->length);
>     privKey[bptr->length] = 0;

BIO_get_mem_ptr(privBio, &bptr);
keypair["privatekey"] = QString::fromAscii(bptr->data, bptr->length);

> 
>     keypair["privatekey"] = QString(privKey);
>     keypair["publickey"] = QString(pubKey);

/* this would be required in your code */
free(privKey);
free(pubKey);



Cheers

        Christian
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to