Skip to content

Commit 36f87ad

Browse files
committed
Merge pull request #76 from jkuchta/master
Remove 'RSA' from RSA public key headers for openssl CLI tool compatibility
2 parents 246dbb7 + 2428e19 commit 36f87ad

File tree

4 files changed

+90
-4
lines changed

4 files changed

+90
-4
lines changed

src/main/java/org/jruby/ext/openssl/x509store/PEMInputOutput.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -772,21 +772,21 @@ private static byte[] getEncoded(X509CRL crl) throws IOException {
772772
public static void writeDSAPublicKey(Writer _out, DSAPublicKey obj) throws IOException {
773773
BufferedWriter out = makeBuffered(_out);
774774
byte[] encoding = getEncoded(obj);
775-
out.write(BEF_G + PEM_STRING_DSA_PUBLIC + AFT);
775+
out.write(BEF_G + PEM_STRING_PUBLIC + AFT);
776776
out.newLine();
777777
writeEncoded(out, encoding);
778-
out.write(BEF_E + PEM_STRING_DSA_PUBLIC + AFT);
778+
out.write(BEF_E + PEM_STRING_PUBLIC + AFT);
779779
out.newLine();
780780
out.flush();
781781
}
782782
/** writes an RSA public key encoded in an PKCS#1 RSA structure. */
783783
public static void writeRSAPublicKey(Writer _out, RSAPublicKey obj) throws IOException {
784784
BufferedWriter out = makeBuffered(_out);
785785
byte[] encoding = getEncoded(obj);
786-
out.write(BEF_G + PEM_STRING_RSA_PUBLIC + AFT);
786+
out.write(BEF_G + PEM_STRING_PUBLIC + AFT);
787787
out.newLine();
788788
writeEncoded(out, encoding);
789-
out.write(BEF_E + PEM_STRING_RSA_PUBLIC + AFT);
789+
out.write(BEF_E + PEM_STRING_PUBLIC + AFT);
790790
out.newLine();
791791
out.flush();
792792
}

src/test/ruby/rsa/private_key.pem

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEowIBAAKCAQEAw1UQk6wlVdcvbkQPUje7w871Zd+jVu5ePxKnv6nfVs4CFTrt
3+
6393hMkaQFdbccIsJaOj2+1mhY3jKFHXtpS185bCCY8xMDayBs2eXZ+ULkKAu2vB
4+
nO7DFOm1NrJ2NP03wW4IDV1isk9NMNgvzTHbvkiilQQF7rcXjEF4+xO51epMGctC
5+
PapKipA8pIJ8pzfk2c2uiaAK36iFWJenlcwEX9ti6zk/NoVmzmLIDnqFlqw23aOr
6+
GSOCbV5oJmz/9jrfc75C0PG2C6MhYPleBw/T5Jzf0df7kpJYwLhM5Zfa1MnVeq/W
7+
1oh4E28EXCzMHQH4/S1gNRuX96ouplJpMCtnWwIDAQABAoIBAQCLKjvZOjiPY/Ri
8+
9xKDXTnlU7n6js7szH9RKJVjND/utG8/ePCxa+tXK4AMfzCjZ9fUKTZBJm54kJJa
9+
05SAfIr1tV8hOGevFgjYV/6QbXVBUBgvb6JNkL5kU+3LvnIBZrcmlKIgA3yh1WYF
10+
esDzzKXmeBF9YZRocwHP54WuPGuWP0wnk36Mju64poDiq1Ju55pKeloUGfAXEozp
11+
4HL+ZVxX/LsXhkR9kqrkOdifEJbHA+GIj4L4E5J3Fk4gShnpF1Z7Ibe3jIOgCsuO
12+
Zi6QPIw7ZE/l+P5zy+fIuqArgVPtD9Tm8XOv+RhlGuQ+2ODeQf2l6dGbq48ts7lP
13+
+8rt9AqBAoGBAO2Sh/DeFvnntUt1RPEYUJ9tgcPTKIWcLCDzOQXbBR8Z4gP9iovJ
14+
Ro7Y7XCKCFTWmpl7z/M0n4v6NOTwN84QCXPHGwYu821cQo5n+xeCO5HqHEQYw0w9
15+
P1A7tQCxCogXnme7J2U9bIBe2ZNadiF1EcB9pnhrDRUIYbJt0PJo7YkrAoGBANJ7
16+
xeewE2rpZoCVqCU89UzpeZL0HVyCp41njia/RVWeQyExAMQ0bVAPDDjf9RByucc+
17+
83oX7fwjJ2DrYM2ze1oo8PHMJLCGazwY+yJRzPldj76aQ07J9k+/chaBsmlbzCv7
18+
5V9o1b4f5VQXmC8lR66NkNIioSBN5jfR10OJuyKRAoGAeqfon6dKXYQPygGlsoRH
19+
O8ih8qSWi0TyU6C/lBJcNo56bmz8luc4EpBVJoFdg8+4yf1ug7ZrmS15GaocZbtJ
20+
5giqHysmaxPzGOr+bEjE0LT6Gv5d9oK4qYfqD41YTqNDGXM7B74Kwsw1sSpHS0bR
21+
/3vf8tPyUSWeqyyfcEhUOzkCgYBmllkA8XqlUxjYdxi6/Zj5YZoVm9Frs2qCqwRH
22+
slXSww4o8T9UYdEdghgM6GsDF0eg6ve0fFFL4L5iqJZH68ClUusMjtkbCIjfg7Vz
23+
JrdmmslitsEzd5ALkl3Cxnf0jf9XOLC07d2vitA1SkKsR9lGJE1/fc1Wd2FLt4TZ
24+
sBl7YQKBgAS04BXwUw9On3b5acH0sL5Kp2laB2R3lffw1YjoI/G2Mg7BPJ8Rwa0m
25+
OzTezEASOqlXxwGFci/VHtls5HDYCW1OpgfNgJOpRsjATNTcAS96RxZ2MqBbfQK8
26+
8/Wo3VhBgs8F6w1322OUl5WsbzOQvrF5ZCiFtTThHIzqjfdyp3EO
27+
-----END RSA PRIVATE KEY-----

src/test/ruby/rsa/public_key.pub

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-----BEGIN PUBLIC KEY-----
2+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw1UQk6wlVdcvbkQPUje7
3+
w871Zd+jVu5ePxKnv6nfVs4CFTrt6393hMkaQFdbccIsJaOj2+1mhY3jKFHXtpS1
4+
85bCCY8xMDayBs2eXZ+ULkKAu2vBnO7DFOm1NrJ2NP03wW4IDV1isk9NMNgvzTHb
5+
vkiilQQF7rcXjEF4+xO51epMGctCPapKipA8pIJ8pzfk2c2uiaAK36iFWJenlcwE
6+
X9ti6zk/NoVmzmLIDnqFlqw23aOrGSOCbV5oJmz/9jrfc75C0PG2C6MhYPleBw/T
7+
5Jzf0df7kpJYwLhM5Zfa1MnVeq/W1oh4E28EXCzMHQH4/S1gNRuX96ouplJpMCtn
8+
WwIDAQAB
9+
-----END PUBLIC KEY-----

src/test/ruby/rsa/test_rsa.rb

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# coding: US-ASCII
2+
require File.expand_path('../test_helper', File.dirname(__FILE__))
3+
4+
class TestRsa < TestCase
5+
6+
def setup
7+
super
8+
self.class.disable_security_restrictions!
9+
require 'base64'
10+
end
11+
12+
def test_rsa_private_decrypt
13+
key_file = File.join(File.dirname(__FILE__), 'private_key.pem')
14+
base64_cipher = "oj1VB1Lnh6j5Ahoq4dllIXkStZHaT9RvizB0x+yIUDtzi6grSh9vXoCchb+U\nkyLOcMmIXopv1Oe7h2te+XS63AG0EAfUhKTFVDYkm7VmcXue25MPr+P+0w+7\nWjZci4VRBLq3T2qZa3IJhQPsNAtEE1DYXnEjNe0jcFa2bu8TPNscoogo5aAw\nQGT+3cKe7A053czG47Sip7aIo+4NlJHE9kFMOTLaWi3fvv/M9/VKo3Bmm/88\n8Ai09LncNTpq787CRHw/wfjuPlQJOiLt+i7AZHBl6x0jK9bqkhPK5YwP0vmc\nuL52QLzgPxj9E78crg47iJDOgNwU/ux1/VuKnlQ9PQ==\n"
15+
16+
key = OpenSSL::PKey::RSA.new(File.read(key_file))
17+
decrypted = key.private_decrypt(Base64.decode64(base64_cipher))
18+
19+
assert_equal('Test string for RSA', decrypted)
20+
end
21+
22+
def test_rsa_public_decrypt
23+
pub_key_file = File.join(File.dirname(__FILE__), 'public_key.pub')
24+
base64_cipher = "ZBiJ0yHAcEJWDPI38R4M7ccpDK+Ek6Apl/CyPJOSwiY/GvlJ3J3VjRYwRVvE\nox173agDckKY9/gaT4otgfk0OuQRaIaPF51uFWbSPZhOBWD+gLrDAlAfhMg6\nascRrUYydEYzOHjXZ8SMhWg8bmsajABd36SoTcpa7FVm4WXGm/OG65htPYQ+\n1XjChiw3NvVJqFWf5Khpl12+/4s9k5GPjziFCAPgmfxGYDp0KnsqqHIg6s7P\nvR6zFcS9uReNcns4POecI/oeZHqvS/0TZ/q5eZJzFGMSflPJMxrCCnImGbiC\nNRchZyK2kTuTAWzz8d5Ml72/75mCJyimrAtv66XaEQ==\n"
25+
26+
pub_key = OpenSSL::PKey::RSA.new(File.read(pub_key_file))
27+
decrypted = pub_key.public_decrypt(Base64.decode64(base64_cipher))
28+
29+
assert_equal('Test public decrypt string', decrypted)
30+
end
31+
32+
def test_rsa_private_encrypt
33+
key_file = File.join(File.dirname(__FILE__), 'private_key.pem')
34+
key = OpenSSL::PKey::RSA.new(File.read(key_file))
35+
36+
# Assert nothing raised {
37+
key.private_encrypt("Test string")
38+
# }
39+
end
40+
41+
def test_rsa_public_encrypt
42+
pub_key_file = File.join(File.dirname(__FILE__), 'public_key.pub')
43+
pub_key = OpenSSL::PKey::RSA.new(File.read(pub_key_file))
44+
45+
# Assert nothing raised {
46+
pub_key.public_encrypt("Test string")
47+
# }
48+
end
49+
50+
end

0 commit comments

Comments
 (0)