Skip to content

Remove 'RSA' from RSA public key headers for openssl CLI tool compatibility #76

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Nov 13, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -772,21 +772,21 @@ private static byte[] getEncoded(X509CRL crl) throws IOException {
public static void writeDSAPublicKey(Writer _out, DSAPublicKey obj) throws IOException {
BufferedWriter out = makeBuffered(_out);
byte[] encoding = getEncoded(obj);
out.write(BEF_G + PEM_STRING_DSA_PUBLIC + AFT);
out.write(BEF_G + PEM_STRING_PUBLIC + AFT);
out.newLine();
writeEncoded(out, encoding);
out.write(BEF_E + PEM_STRING_DSA_PUBLIC + AFT);
out.write(BEF_E + PEM_STRING_PUBLIC + AFT);
out.newLine();
out.flush();
}
/** writes an RSA public key encoded in an PKCS#1 RSA structure. */
public static void writeRSAPublicKey(Writer _out, RSAPublicKey obj) throws IOException {
BufferedWriter out = makeBuffered(_out);
byte[] encoding = getEncoded(obj);
out.write(BEF_G + PEM_STRING_RSA_PUBLIC + AFT);
out.write(BEF_G + PEM_STRING_PUBLIC + AFT);
out.newLine();
writeEncoded(out, encoding);
out.write(BEF_E + PEM_STRING_RSA_PUBLIC + AFT);
out.write(BEF_E + PEM_STRING_PUBLIC + AFT);
out.newLine();
out.flush();
}
Expand Down
27 changes: 27 additions & 0 deletions src/test/ruby/rsa/private_key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAw1UQk6wlVdcvbkQPUje7w871Zd+jVu5ePxKnv6nfVs4CFTrt
6393hMkaQFdbccIsJaOj2+1mhY3jKFHXtpS185bCCY8xMDayBs2eXZ+ULkKAu2vB
nO7DFOm1NrJ2NP03wW4IDV1isk9NMNgvzTHbvkiilQQF7rcXjEF4+xO51epMGctC
PapKipA8pIJ8pzfk2c2uiaAK36iFWJenlcwEX9ti6zk/NoVmzmLIDnqFlqw23aOr
GSOCbV5oJmz/9jrfc75C0PG2C6MhYPleBw/T5Jzf0df7kpJYwLhM5Zfa1MnVeq/W
1oh4E28EXCzMHQH4/S1gNRuX96ouplJpMCtnWwIDAQABAoIBAQCLKjvZOjiPY/Ri
9xKDXTnlU7n6js7szH9RKJVjND/utG8/ePCxa+tXK4AMfzCjZ9fUKTZBJm54kJJa
05SAfIr1tV8hOGevFgjYV/6QbXVBUBgvb6JNkL5kU+3LvnIBZrcmlKIgA3yh1WYF
esDzzKXmeBF9YZRocwHP54WuPGuWP0wnk36Mju64poDiq1Ju55pKeloUGfAXEozp
4HL+ZVxX/LsXhkR9kqrkOdifEJbHA+GIj4L4E5J3Fk4gShnpF1Z7Ibe3jIOgCsuO
Zi6QPIw7ZE/l+P5zy+fIuqArgVPtD9Tm8XOv+RhlGuQ+2ODeQf2l6dGbq48ts7lP
+8rt9AqBAoGBAO2Sh/DeFvnntUt1RPEYUJ9tgcPTKIWcLCDzOQXbBR8Z4gP9iovJ
Ro7Y7XCKCFTWmpl7z/M0n4v6NOTwN84QCXPHGwYu821cQo5n+xeCO5HqHEQYw0w9
P1A7tQCxCogXnme7J2U9bIBe2ZNadiF1EcB9pnhrDRUIYbJt0PJo7YkrAoGBANJ7
xeewE2rpZoCVqCU89UzpeZL0HVyCp41njia/RVWeQyExAMQ0bVAPDDjf9RByucc+
83oX7fwjJ2DrYM2ze1oo8PHMJLCGazwY+yJRzPldj76aQ07J9k+/chaBsmlbzCv7
5V9o1b4f5VQXmC8lR66NkNIioSBN5jfR10OJuyKRAoGAeqfon6dKXYQPygGlsoRH
O8ih8qSWi0TyU6C/lBJcNo56bmz8luc4EpBVJoFdg8+4yf1ug7ZrmS15GaocZbtJ
5giqHysmaxPzGOr+bEjE0LT6Gv5d9oK4qYfqD41YTqNDGXM7B74Kwsw1sSpHS0bR
/3vf8tPyUSWeqyyfcEhUOzkCgYBmllkA8XqlUxjYdxi6/Zj5YZoVm9Frs2qCqwRH
slXSww4o8T9UYdEdghgM6GsDF0eg6ve0fFFL4L5iqJZH68ClUusMjtkbCIjfg7Vz
JrdmmslitsEzd5ALkl3Cxnf0jf9XOLC07d2vitA1SkKsR9lGJE1/fc1Wd2FLt4TZ
sBl7YQKBgAS04BXwUw9On3b5acH0sL5Kp2laB2R3lffw1YjoI/G2Mg7BPJ8Rwa0m
OzTezEASOqlXxwGFci/VHtls5HDYCW1OpgfNgJOpRsjATNTcAS96RxZ2MqBbfQK8
8/Wo3VhBgs8F6w1322OUl5WsbzOQvrF5ZCiFtTThHIzqjfdyp3EO
-----END RSA PRIVATE KEY-----
9 changes: 9 additions & 0 deletions src/test/ruby/rsa/public_key.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw1UQk6wlVdcvbkQPUje7
w871Zd+jVu5ePxKnv6nfVs4CFTrt6393hMkaQFdbccIsJaOj2+1mhY3jKFHXtpS1
85bCCY8xMDayBs2eXZ+ULkKAu2vBnO7DFOm1NrJ2NP03wW4IDV1isk9NMNgvzTHb
vkiilQQF7rcXjEF4+xO51epMGctCPapKipA8pIJ8pzfk2c2uiaAK36iFWJenlcwE
X9ti6zk/NoVmzmLIDnqFlqw23aOrGSOCbV5oJmz/9jrfc75C0PG2C6MhYPleBw/T
5Jzf0df7kpJYwLhM5Zfa1MnVeq/W1oh4E28EXCzMHQH4/S1gNRuX96ouplJpMCtn
WwIDAQAB
-----END PUBLIC KEY-----
50 changes: 50 additions & 0 deletions src/test/ruby/rsa/test_rsa.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# coding: US-ASCII
require File.expand_path('../test_helper', File.dirname(__FILE__))

class TestRsa < TestCase

def setup
super
self.class.disable_security_restrictions!
require 'base64'
end

def test_rsa_private_decrypt
key_file = File.join(File.dirname(__FILE__), 'private_key.pem')
base64_cipher = "oj1VB1Lnh6j5Ahoq4dllIXkStZHaT9RvizB0x+yIUDtzi6grSh9vXoCchb+U\nkyLOcMmIXopv1Oe7h2te+XS63AG0EAfUhKTFVDYkm7VmcXue25MPr+P+0w+7\nWjZci4VRBLq3T2qZa3IJhQPsNAtEE1DYXnEjNe0jcFa2bu8TPNscoogo5aAw\nQGT+3cKe7A053czG47Sip7aIo+4NlJHE9kFMOTLaWi3fvv/M9/VKo3Bmm/88\n8Ai09LncNTpq787CRHw/wfjuPlQJOiLt+i7AZHBl6x0jK9bqkhPK5YwP0vmc\nuL52QLzgPxj9E78crg47iJDOgNwU/ux1/VuKnlQ9PQ==\n"

key = OpenSSL::PKey::RSA.new(File.read(key_file))
decrypted = key.private_decrypt(Base64.decode64(base64_cipher))

assert_equal('Test string for RSA', decrypted)
end

def test_rsa_public_decrypt
pub_key_file = File.join(File.dirname(__FILE__), 'public_key.pub')
base64_cipher = "ZBiJ0yHAcEJWDPI38R4M7ccpDK+Ek6Apl/CyPJOSwiY/GvlJ3J3VjRYwRVvE\nox173agDckKY9/gaT4otgfk0OuQRaIaPF51uFWbSPZhOBWD+gLrDAlAfhMg6\nascRrUYydEYzOHjXZ8SMhWg8bmsajABd36SoTcpa7FVm4WXGm/OG65htPYQ+\n1XjChiw3NvVJqFWf5Khpl12+/4s9k5GPjziFCAPgmfxGYDp0KnsqqHIg6s7P\nvR6zFcS9uReNcns4POecI/oeZHqvS/0TZ/q5eZJzFGMSflPJMxrCCnImGbiC\nNRchZyK2kTuTAWzz8d5Ml72/75mCJyimrAtv66XaEQ==\n"

pub_key = OpenSSL::PKey::RSA.new(File.read(pub_key_file))
decrypted = pub_key.public_decrypt(Base64.decode64(base64_cipher))

assert_equal('Test public decrypt string', decrypted)
end

def test_rsa_private_encrypt
key_file = File.join(File.dirname(__FILE__), 'private_key.pem')
key = OpenSSL::PKey::RSA.new(File.read(key_file))

# Assert nothing raised {
key.private_encrypt("Test string")
# }
end

def test_rsa_public_encrypt
pub_key_file = File.join(File.dirname(__FILE__), 'public_key.pub')
pub_key = OpenSSL::PKey::RSA.new(File.read(pub_key_file))

# Assert nothing raised {
pub_key.public_encrypt("Test string")
# }
end

end