Closed skington closed 2 years ago
I'm fairly sure this is caused by Crypt::OpenSSL::PKCS10's DESTROY
method, which does:
void
DESTROY(pkcs10)
pkcs10Data *pkcs10;
PREINIT:
//BIO *bio_err;
PPCODE:
//bio_err=BIO_new_fp(stderr, BIO_NOCLOSE);
if (pkcs10->pk) EVP_PKEY_free(pkcs10->pk); pkcs10->pk = 0;
if (pkcs10->rsa) *pkcs10->rsa = 0;
if (pkcs10->req) X509_REQ_free(pkcs10->req); pkcs10->req = 0;
Safefree(pkcs10);
CRYPTO_cleanup_all_ex_data();
It's even documented in Crypt::OpenSSL::PKCS10's BUGS section:
If you destroy $req object that is linked to a Crypt::OpenSSL::RSA object, the RSA private key is also freed, thus you can't use latter object anymore. Avoid this [...]
So, I suspect this ticket can be closed :)
I'm hoping this is a bug in Crypt::OpenSSL::RSA and not Crypt::OpenSSL::PKCS10 because the latter isn't maintained any more.
Consider this trivial script:
If I run it on perl 5.22.3, Crypt::OpenSSL::RSA 0.31, Crypt::OpenSSL::PKCS10 0.16, I get:
Something is happening to the guts of the Crypt::OpenSSL::RSA object as a side-effect of Crypt::OpenSSL::PKCS10 having done... something to it. Crypt::OpenSSL::RSA is XS so that's as far as I could get.