Bug #4422 ยป fix_dsa_pub_encoding.diff
ruby/ext/openssl/ossl_pkey_dsa.c (working copy) | ||
---|---|---|
dsa = PEM_read_bio_DSAPrivateKey(in, NULL, ossl_pem_passwd_cb, passwd);
|
||
if (!dsa) {
|
||
(void)BIO_reset(in);
|
||
dsa = PEM_read_bio_DSAPublicKey(in, NULL, NULL, NULL);
|
||
}
|
||
if (!dsa) {
|
||
(void)BIO_reset(in);
|
||
dsa = PEM_read_bio_DSA_PUBKEY(in, NULL, NULL, NULL);
|
||
}
|
||
if (!dsa) {
|
||
... | ... | |
(void)BIO_reset(in);
|
||
dsa = d2i_DSA_PUBKEY_bio(in, NULL);
|
||
}
|
||
if (!dsa) {
|
||
(void)BIO_reset(in);
|
||
dsa = PEM_read_bio_DSAPublicKey(in, NULL, NULL, NULL);
|
||
}
|
||
BIO_free(in);
|
||
if (!dsa) ossl_raise(eDSAError, "Neither PUB key nor PRIV key:");
|
||
}
|
||
... | ... | |
ossl_raise(eDSAError, NULL);
|
||
}
|
||
} else {
|
||
if (!PEM_write_bio_DSAPublicKey(out, pkey->pkey.dsa)) {
|
||
if (!PEM_write_bio_DSA_PUBKEY(out, pkey->pkey.dsa)) {
|
||
BIO_free(out);
|
||
ossl_raise(eDSAError, NULL);
|
||
}
|