summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--ext/openssl/ossl_pkey_rsa.c14
2 files changed, 13 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index e029fda..77caf51 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu May 12 07:27:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_rsa.c: Use generic X.509 SubjectPublicKeyInfo
+ format for encoding RSA public keys.
+ [ruby-core:35327] [Bug #4421]
+
Wed May 11 19:45:27 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
* lib/forwardable.rb: support 'delegate :foo => :bar' for to meet
diff --git a/ext/openssl/ossl_pkey_rsa.c b/ext/openssl/ossl_pkey_rsa.c
index 15c1d69..d57e5b5 100644
--- a/ext/openssl/ossl_pkey_rsa.c
+++ b/ext/openssl/ossl_pkey_rsa.c
@@ -159,27 +159,27 @@ ossl_rsa_initialize(int argc, VALUE *argv, VALUE self)
if (!rsa) {
(void)BIO_reset(in);
(void)ERR_get_error();
- rsa = PEM_read_bio_RSAPublicKey(in, NULL, NULL, NULL);
+ rsa = PEM_read_bio_RSA_PUBKEY(in, NULL, NULL, NULL);
}
if (!rsa) {
(void)BIO_reset(in);
(void)ERR_get_error();
- rsa = PEM_read_bio_RSA_PUBKEY(in, NULL, NULL, NULL);
+ rsa = d2i_RSAPrivateKey_bio(in, NULL);
}
if (!rsa) {
(void)BIO_reset(in);
(void)ERR_get_error();
- rsa = d2i_RSAPrivateKey_bio(in, NULL);
+ rsa = d2i_RSA_PUBKEY_bio(in, NULL);
}
if (!rsa) {
(void)BIO_reset(in);
(void)ERR_get_error();
- rsa = d2i_RSAPublicKey_bio(in, NULL);
+ rsa = PEM_read_bio_RSAPublicKey(in, NULL, NULL, NULL);
}
if (!rsa) {
(void)BIO_reset(in);
(void)ERR_get_error();
- rsa = d2i_RSA_PUBKEY_bio(in, NULL);
+ rsa = d2i_RSAPublicKey_bio(in, NULL);
}
BIO_free(in);
if (!rsa) {
@@ -268,7 +268,7 @@ ossl_rsa_export(int argc, VALUE *argv, VALUE self)
ossl_raise(eRSAError, NULL);
}
} else {
- if (!PEM_write_bio_RSAPublicKey(out, pkey->pkey.rsa)) {
+ if (!PEM_write_bio_RSA_PUBKEY(out, pkey->pkey.rsa)) {
BIO_free(out);
ossl_raise(eRSAError, NULL);
}
@@ -297,7 +297,7 @@ ossl_rsa_to_der(VALUE self)
if(RSA_HAS_PRIVATE(pkey->pkey.rsa))
i2d_func = i2d_RSAPrivateKey;
else
- i2d_func = i2d_RSAPublicKey;
+ i2d_func = (int (*)(const RSA*, unsigned char**))i2d_RSA_PUBKEY;
if((len = i2d_func(pkey->pkey.rsa, NULL)) <= 0)
ossl_raise(eRSAError, NULL);
str = rb_str_new(0, len);