jruby-jruby-openssl 0.5.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +34 -0
- data/License.txt +30 -0
- data/README.txt +24 -0
- data/lib/bcmail-jdk14-139.jar +0 -0
- data/lib/bcprov-jdk14-139.jar +0 -0
- data/lib/jopenssl.jar +0 -0
- data/lib/jopenssl/version.rb +5 -0
- data/lib/openssl.rb +24 -0
- data/lib/openssl/bn.rb +35 -0
- data/lib/openssl/buffering.rb +239 -0
- data/lib/openssl/cipher.rb +58 -0
- data/lib/openssl/digest.rb +48 -0
- data/lib/openssl/dummy.rb +34 -0
- data/lib/openssl/dummyssl.rb +13 -0
- data/lib/openssl/ssl.rb +135 -0
- data/lib/openssl/x509.rb +154 -0
- data/test/fixture/cacert.pem +23 -0
- data/test/fixture/cert_localhost.pem +19 -0
- data/test/fixture/localhost_keypair.pem +18 -0
- data/test/openssl/ssl_server.rb +99 -0
- data/test/openssl/test_asn1.rb +199 -0
- data/test/openssl/test_cipher.rb +174 -0
- data/test/openssl/test_digest.rb +88 -0
- data/test/openssl/test_hmac.rb +44 -0
- data/test/openssl/test_ns_spki.rb +69 -0
- data/test/openssl/test_pair.rb +149 -0
- data/test/openssl/test_pkcs7.rb +159 -0
- data/test/openssl/test_pkey_rsa.rb +49 -0
- data/test/openssl/test_ssl.rb +307 -0
- data/test/openssl/test_x509cert.rb +236 -0
- data/test/openssl/test_x509crl.rb +234 -0
- data/test/openssl/test_x509ext.rb +74 -0
- data/test/openssl/test_x509name.rb +265 -0
- data/test/openssl/test_x509req.rb +178 -0
- data/test/openssl/test_x509store.rb +245 -0
- data/test/openssl/utils.rb +135 -0
- data/test/pkcs7_mime_enveloped.message +19 -0
- data/test/pkcs7_mime_signed.message +30 -0
- data/test/pkcs7_multipart_signed.message +45 -0
- data/test/ref/a.out +0 -0
- data/test/ref/compile.rb +8 -0
- data/test/ref/pkcs1 +0 -0
- data/test/ref/pkcs1.c +21 -0
- data/test/test_cipher.rb +81 -0
- data/test/test_integration.rb +100 -0
- data/test/test_java.rb +98 -0
- data/test/test_java_attribute.rb +25 -0
- data/test/test_java_bio.rb +42 -0
- data/test/test_java_mime.rb +173 -0
- data/test/test_java_pkcs7.rb +769 -0
- data/test/test_java_smime.rb +177 -0
- data/test/test_openssl.rb +34 -0
- data/test/test_openssl_x509.rb +34 -0
- data/test/test_pkey.rb +46 -0
- data/test/ut_eof.rb +128 -0
- metadata +120 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
MIME-Version: 1.0
|
2
|
+
Message-Id: <00103112005203.00349@amyemily.ig.com>
|
3
|
+
Date: Tue, 31 Oct 2000 12:00:52 -0600 (Central Standard Time)
|
4
|
+
From: User1
|
5
|
+
To: User2
|
6
|
+
Subject: Example 5.3
|
7
|
+
Content-Type: application/pkcs7-mime;
|
8
|
+
name=smime.p7m;
|
9
|
+
smime-type=enveloped-data
|
10
|
+
Content-Transfer-Encoding: base64
|
11
|
+
Content-Disposition: attachment; filename=smime.p7m
|
12
|
+
|
13
|
+
|
14
|
+
MIIBHgYJKoZIhvcNAQcDoIIBDzCCAQsCAQAxgcAwgb0CAQAwJjASMRAwDgYDVQQDEwdDYXJ
|
15
|
+
sUlNBAhBGNGvHgABWvBHTbi7NXXHQMA0GCSqGSIb3DQEBAQUABIGAC3EN5nGIiJi2lsGPcP
|
16
|
+
2iJ97a4e8kbKQz36zg6Z2i0yx6zYC4mZ7mX7FBs3IWg+f6KgCLx3M1eCbWx8+MDFbbpXadC
|
17
|
+
DgO8/nUkUNYeNxJtuzubGgzoyEd8Ch4H/dd9gdzTd+taTEgS0ipdSJuNnkVY4/M652jKKHR
|
18
|
+
LFf02hosdR8wQwYJKoZIhvcNAQcBMBQGCCqGSIb3DQMHBAgtaMXpRwZRNYAgDsiSf8Z9P43
|
19
|
+
LrY4OxUk660cu1lXeCSFOSOpOJ7FuVyU=
|
@@ -0,0 +1,30 @@
|
|
1
|
+
MIME-Version: 1.0
|
2
|
+
To: User2@examples.com
|
3
|
+
From: aliceDss@examples.com
|
4
|
+
Subject: Example 4.9
|
5
|
+
Message-Id: <021031164540300.304@examples.com>
|
6
|
+
Date: Thu, 31 Oct 2002 16:45:14 -0300
|
7
|
+
Content-Type: application/pkcs7-mime; smime-type=signed-data;
|
8
|
+
name=smime.p7m
|
9
|
+
Content-Transfer-Encoding: base64
|
10
|
+
Content-Disposition: attachment; filename=smime.p7m
|
11
|
+
|
12
|
+
|
13
|
+
MIIDmQYJKoZIhvcNAQcCoIIDijCCA4YCAQExCTAHBgUrDgMCGjAtBgkqhkiG9w0BBwGgIAQ
|
14
|
+
eDQpUaGlzIGlzIHNvbWUgc2FtcGxlIGNvbnRlbnQuoIIC4DCCAtwwggKboAMCAQICAgDIMA
|
15
|
+
kGByqGSM44BAMwEjEQMA4GA1UEAxMHQ2FybERTUzAeFw05OTA4MTcwMTEwNDlaFw0zOTEyM
|
16
|
+
zEyMzU5NTlaMBMxETAPBgNVBAMTCEFsaWNlRFNTMIIBtjCCASsGByqGSM44BAEwggEeAoGB
|
17
|
+
AIGNze2D6gqeOT7CSCij5EeT3Q7XqA7sU8WrhAhP/5Thc0h+DNbzREjR/p+vpKGJL+HZMMg
|
18
|
+
23j+bv7dM3F9piuR10DcMkQiVm96nXvn89J8v3UOoi1TxP7AHCEdNXYjDw7Wz41UIddU5dh
|
19
|
+
DEeL3/nbCElzfy5FEbteQJllzzflvbAhUA4kemGkVmuBPG2o+4NyErYov3k80CgYAmONAUi
|
20
|
+
TKqOfs+bdlLWWpMdiM5BAI1XPLLGjDDHlBd3ZtZ4s2qBT1YwHuiNrhuB699ikIlp/R1z0oI
|
21
|
+
Xks+kPht6pzJIYo7dhTpzi5dowfNI4W4LzABfG1JiRGJNkS9+MiVSlNWteL5c+waYTYfEX/
|
22
|
+
Cve3RUP+YdMLRgUpgObo2OQOBhAACgYBc47ladRSWC6l63eM/qeysXty9txMRNKYWiSgRI9
|
23
|
+
k0hmd1dRMSPUNbb+VRv/qJ8qIbPiR9PQeNW2PIu0WloErjhdbOBoA/6CN+GvIkq1MauCcNH
|
24
|
+
u8Iv2YUgFxirGX6FYvxuzTU0pY39mFHssQyhPB+QUD9RqdjTjPypeL08oPluKOBgTB/MAwG
|
25
|
+
A1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgbAMB8GA1UdIwQYMBaAFHBEPoIub4feStN14z0
|
26
|
+
gvEMrk/EfMB0GA1UdDgQWBBS+bKGz48H37UNwpM4TAeL945f+zTAfBgNVHREEGDAWgRRBbG
|
27
|
+
ljZURTU0BleGFtcGxlLmNvbTAJBgcqhkjOOAQDAzAAMC0CFFUMpBkfQiuJcSIzjYNqtT1na
|
28
|
+
79FAhUAn2FTUlQLXLLd2ud2HeIQUltDXr0xYzBhAgEBMBgwEjEQMA4GA1UEAxMHQ2FybERT
|
29
|
+
UwICAMgwBwYFKw4DAhowCQYHKoZIzjgEAwQuMCwCFD1cSW6LIUFzeXle3YI5SKSBer/sAhQ
|
30
|
+
mCq7s/CTFHOEjgASeUjbMpx5g6A==
|
@@ -0,0 +1,45 @@
|
|
1
|
+
MIME-Version: 1.0
|
2
|
+
To: User2@examples.com
|
3
|
+
From: aliceDss@examples.com
|
4
|
+
Subject: Example 4.8
|
5
|
+
Message-Id: <020906002550300.249@examples.com>
|
6
|
+
Date: Fri, 06 Sep 2002 00:25:21 -0300
|
7
|
+
Content-Type: multipart/signed;
|
8
|
+
micalg=SHA1;
|
9
|
+
boundary="----=_NextBoundry____Fri,_06_Sep_2002_00:25:21";
|
10
|
+
protocol="application/pkcs7-signature"
|
11
|
+
|
12
|
+
|
13
|
+
This is a multi-part message in MIME format.
|
14
|
+
|
15
|
+
|
16
|
+
------=_NextBoundry____Fri,_06_Sep_2002_00:25:21
|
17
|
+
|
18
|
+
This is some sample content.
|
19
|
+
|
20
|
+
------=_NextBoundry____Fri,_06_Sep_2002_00:25:21
|
21
|
+
Content-Type: application/pkcs7-mime; name=smime.p7s
|
22
|
+
Content-Transfer-Encoding: base64
|
23
|
+
Content-Disposition: attachment; filename=smime.p7s
|
24
|
+
|
25
|
+
|
26
|
+
MIIDdwYJKoZIhvcNAQcCoIIDaDCCA2QCAQExCTAHBgUrDgMCGjALBgkqhkiG9w0BBwGgggL
|
27
|
+
gMIIC3DCCApugAwIBAgICAMgwCQYHKoZIzjgEAzASMRAwDgYDVQQDEwdDYXJsRFNTMB4XDT
|
28
|
+
k5MDgxNzAxMTA0OVoXDTM5MTIzMTIzNTk1OVowEzERMA8GA1UEAxMIQWxpY2VEU1MwggG2M
|
29
|
+
IIBKwYHKoZIzjgEATCCAR4CgYEAgY3N7YPqCp45PsJIKKPkR5PdDteoDuxTxauECE//lOFz
|
30
|
+
SH4M1vNESNH+n6+koYkv4dkwyDbeP5u/t0zcX2mK5HXQNwyRCJWb3qde+fz0ny/dQ6iLVPE
|
31
|
+
/sAcIR01diMPDtbPjVQh11Tl2EMR4vf+dsISXN/LkURu15AmWXPN+W9sCFQDiR6YaRWa4E8
|
32
|
+
baj7g3IStii/eTzQKBgCY40BSJMqo5+z5t2UtZakx2IzkEAjVc8ssaMMMeUF3dm1nizaoFP
|
33
|
+
VjAe6I2uG4Hr32KQiWn9HXPSgheSz6Q+G3qnMkhijt2FOnOLl2jB80jhbgvMAF8bUmJEYk2
|
34
|
+
RL34yJVKU1a14vlz7BphNh8Rf8K97dFQ/5h0wtGBSmA5ujY5A4GEAAKBgFzjuVp1FJYLqXr
|
35
|
+
d4z+p7Kxe3L23ExE0phaJKBEj2TSGZ3V1ExI9Q1tv5VG/+onyohs+JH09B41bY8i7RaWgSu
|
36
|
+
OF1s4GgD/oI34a8iSrUxq4Jw0e7wi/ZhSAXGKsZfoVi/G7NNTSljf2YUeyxDKE8H5BQP1Gp
|
37
|
+
2NOM/Kl4vTyg+W4o4GBMH8wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0j
|
38
|
+
BBgwFoAUcEQ+gi5vh95K03XjPSC8QyuT8R8wHQYDVR0OBBYEFL5sobPjwfftQ3CkzhMB4v3
|
39
|
+
jl/7NMB8GA1UdEQQYMBaBFEFsaWNlRFNTQGV4YW1wbGUuY29tMAkGByqGSM44BAMDMAAwLQ
|
40
|
+
IUVQykGR9CK4lxIjONg2q1PWdrv0UCFQCfYVNSVAtcst3a53Yd4hBSW0NevTFjMGECAQEwG
|
41
|
+
DASMRAwDgYDVQQDEwdDYXJsRFNTAgIAyDAHBgUrDgMCGjAJBgcqhkjOOAQDBC4wLAIUM/mG
|
42
|
+
f6gkgp9Z0XtRdGimJeB/BxUCFGFFJqwYRt1WYcIOQoGiaowqGzVI
|
43
|
+
|
44
|
+
|
45
|
+
------=_NextBoundry____Fri,_06_Sep_2002_00:25:21--
|
data/test/ref/a.out
ADDED
File without changes
|
data/test/ref/compile.rb
ADDED
data/test/ref/pkcs1
ADDED
Binary file
|
data/test/ref/pkcs1.c
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
#include <openssl/pkcs7.h>
|
3
|
+
|
4
|
+
void print_pkcs7(PKCS7* p7) {
|
5
|
+
printf(" | asn1 : %s\n", p7->asn1);
|
6
|
+
printf(" | len : %d\n", p7->length);
|
7
|
+
printf(" | state : %d\n", p7->state);
|
8
|
+
printf(" | detached : %d\n", p7->detached);
|
9
|
+
printf(" | type : %d\n", OBJ_nid2obj(p7->type));
|
10
|
+
}
|
11
|
+
|
12
|
+
int main(int argc, char** argv) {
|
13
|
+
PKCS7* p7;
|
14
|
+
p7 = PKCS7_new();
|
15
|
+
|
16
|
+
printf("--before:\n");
|
17
|
+
print_pkcs7(p7);
|
18
|
+
|
19
|
+
PKCS7_free(p7);
|
20
|
+
return 0;
|
21
|
+
}
|
data/test/test_cipher.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
if defined?(JRUBY_VERSION)
|
2
|
+
require "java"
|
3
|
+
base = File.dirname(__FILE__)
|
4
|
+
$CLASSPATH << File.join(base, '..', 'pkg', 'classes')
|
5
|
+
$CLASSPATH << File.join(base, '..', 'lib', 'bcprov-jdk14-139.jar')
|
6
|
+
end
|
7
|
+
|
8
|
+
begin
|
9
|
+
require "openssl"
|
10
|
+
rescue LoadError
|
11
|
+
end
|
12
|
+
|
13
|
+
require "test/unit"
|
14
|
+
|
15
|
+
class TestCipher < Test::Unit::TestCase
|
16
|
+
def test_encrypt_takes_parameter
|
17
|
+
enc = OpenSSL::Cipher::Cipher.new('DES-EDE3-CBC')
|
18
|
+
enc.encrypt("123")
|
19
|
+
data = enc.update("password")
|
20
|
+
data << enc.final
|
21
|
+
end
|
22
|
+
|
23
|
+
IV_TEMPLATE = "aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjj"
|
24
|
+
KEY_TEMPLATE = "aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjj"
|
25
|
+
|
26
|
+
# JRUBY-1692
|
27
|
+
def test_repeated_des
|
28
|
+
do_repeated_test(
|
29
|
+
"des-ede3-cbc",
|
30
|
+
"foobarbazboofarf",
|
31
|
+
":\022Q\211ex\370\332\374\274\214\356\301\260V\025",
|
32
|
+
"B\242\3531\003\362\3759\363s\203\374\240\030|\230"
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
# JRUBY-1692
|
37
|
+
def test_repeated_aes
|
38
|
+
do_repeated_test(
|
39
|
+
"aes-128-cbc",
|
40
|
+
"foobarbazboofarf",
|
41
|
+
"\342\260Y\344\306\227\004^\272|/\323<\016,\226",
|
42
|
+
"jqO\305/\211\216\b\373\300\274\bw\213]\310"
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
def do_repeated_test(algo, string, enc1, enc2)
|
48
|
+
do_repeated_encrypt_test(algo, string, enc1, enc2)
|
49
|
+
do_repeated_decrypt_test(algo, string, enc1, enc2)
|
50
|
+
end
|
51
|
+
|
52
|
+
def do_repeated_encrypt_test(algo, string, result1, result2)
|
53
|
+
cipher = OpenSSL::Cipher::Cipher.new(algo)
|
54
|
+
cipher.encrypt
|
55
|
+
|
56
|
+
cipher.padding = 0
|
57
|
+
cipher.iv = IV_TEMPLATE[0, cipher.iv_len]
|
58
|
+
cipher.key = KEY_TEMPLATE[0, cipher.key_len]
|
59
|
+
|
60
|
+
assert_equal result1, cipher.update(string)
|
61
|
+
cipher.final
|
62
|
+
|
63
|
+
assert_equal result2, cipher.update(string)
|
64
|
+
cipher.final
|
65
|
+
end
|
66
|
+
|
67
|
+
def do_repeated_decrypt_test(algo, result, string1, string2)
|
68
|
+
cipher = OpenSSL::Cipher::Cipher.new(algo)
|
69
|
+
cipher.decrypt
|
70
|
+
|
71
|
+
cipher.padding = 0
|
72
|
+
cipher.iv = IV_TEMPLATE[0, cipher.iv_len]
|
73
|
+
cipher.key = KEY_TEMPLATE[0, cipher.key_len]
|
74
|
+
|
75
|
+
assert_equal result, cipher.update(string1)
|
76
|
+
cipher.final
|
77
|
+
|
78
|
+
assert_equal result, cipher.update(string2)
|
79
|
+
cipher.final
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
if defined?(JRUBY_VERSION)
|
2
|
+
require "java"
|
3
|
+
base = File.join(File.dirname(__FILE__), '..')
|
4
|
+
$CLASSPATH << File.join(base, 'pkg', 'classes')
|
5
|
+
$CLASSPATH << File.join(base, 'lib', 'bcprov-jdk14-139.jar')
|
6
|
+
end
|
7
|
+
|
8
|
+
begin
|
9
|
+
require "openssl"
|
10
|
+
rescue LoadError
|
11
|
+
end
|
12
|
+
require "test/unit"
|
13
|
+
require 'net/https'
|
14
|
+
|
15
|
+
class TestIntegration < Test::Unit::TestCase
|
16
|
+
# JRUBY-2471
|
17
|
+
def _test_drb
|
18
|
+
config = {
|
19
|
+
:SSLVerifyMode => OpenSSL::SSL::VERIFY_PEER,
|
20
|
+
:SSLCACertificateFile => File.join(File.dirname(__FILE__), "fixture", "cacert.pem"),
|
21
|
+
:SSLPrivateKey => OpenSSL::PKey::RSA.new(File.read(File.join(File.dirname(__FILE__), "fixture", "localhost_keypair.pem"))),
|
22
|
+
:SSLCertificate => OpenSSL::X509::Certificate.new(File.read(File.join(File.dirname(__FILE__), "fixture", "cert_localhost.pem"))),
|
23
|
+
}
|
24
|
+
p config
|
25
|
+
DRb.start_service(nil, nil, config)
|
26
|
+
end
|
27
|
+
|
28
|
+
# JRUBY-2913
|
29
|
+
# Warning - this test actually uses the internet connection.
|
30
|
+
# If there is no connection, it will fail.
|
31
|
+
def test_ca_path_name
|
32
|
+
uri = URI.parse('https://www.paypal.com')
|
33
|
+
|
34
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
35
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
36
|
+
http.ca_path = "./"
|
37
|
+
http.use_ssl = true
|
38
|
+
|
39
|
+
response = http.start do |s|
|
40
|
+
assert s.get(uri.request_uri).length > 0
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# JRUBY-2178 and JRUBY-1307
|
45
|
+
# Warning - this test actually uses the internet connection.
|
46
|
+
# If there is no connection, it will fail.
|
47
|
+
# This test generally throws an exception
|
48
|
+
# about illegal_parameter when
|
49
|
+
# it can't use the cipher string correctly
|
50
|
+
def test_cipher_strings
|
51
|
+
socket = TCPSocket.new('rubyforge.org', 443)
|
52
|
+
ctx = OpenSSL::SSL::SSLContext.new
|
53
|
+
ctx.cert_store = OpenSSL::X509::Store.new
|
54
|
+
ctx.verify_mode = 0
|
55
|
+
ctx.cert = nil
|
56
|
+
ctx.key = nil
|
57
|
+
ctx.client_ca = nil
|
58
|
+
ctx.ciphers = "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"
|
59
|
+
|
60
|
+
ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ctx)
|
61
|
+
ssl_socket.connect
|
62
|
+
ssl_socket.close
|
63
|
+
end
|
64
|
+
|
65
|
+
# JRUBY-1194
|
66
|
+
def test_des_encryption
|
67
|
+
iv = "IVIVIVIV"
|
68
|
+
key = "KEYKEYKE"
|
69
|
+
alg = "des"
|
70
|
+
str = "string abc foo bar baxz"
|
71
|
+
|
72
|
+
cipher = OpenSSL::Cipher::Cipher.new(alg)
|
73
|
+
cipher.encrypt(key, iv)
|
74
|
+
cipher.padding = 32
|
75
|
+
cipher.key = key
|
76
|
+
cipher.iv = iv
|
77
|
+
|
78
|
+
encrypted = cipher.update(str)
|
79
|
+
encrypted << cipher.final
|
80
|
+
|
81
|
+
assert_equal "\253\305\306\372;\374\235\302\357/\006\360\355XO\232\312S\356* #\227\217", encrypted
|
82
|
+
end
|
83
|
+
|
84
|
+
def _test_perf_of_nil
|
85
|
+
# require 'net/https'
|
86
|
+
# require 'benchmark'
|
87
|
+
|
88
|
+
# def request(data)
|
89
|
+
# connection = Net::HTTP.new("www.google.com", 443)
|
90
|
+
# connection.use_ssl = true
|
91
|
+
# connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
92
|
+
# connection.start do |connection|
|
93
|
+
# connection.request_post("/tbproxy/spell?lang=en", data, { 'User-Agent' => "Test", 'Accept' => 'text/xml' })
|
94
|
+
# end
|
95
|
+
# end
|
96
|
+
|
97
|
+
# puts "is not: #{Benchmark.measure { request("") }.to_s.chomp}"
|
98
|
+
# puts "is nil: #{Benchmark.measure { request(nil) }.to_s.chomp}"
|
99
|
+
end
|
100
|
+
end
|
data/test/test_java.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'mocha', 'lib')
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
require 'mocha'
|
5
|
+
|
6
|
+
if defined?(JRUBY_VERSION)
|
7
|
+
require "java"
|
8
|
+
$CLASSPATH << 'pkg/classes'
|
9
|
+
$CLASSPATH << 'lib/bcprov-jdk14-139.jar'
|
10
|
+
|
11
|
+
module PKCS7Test
|
12
|
+
module ASN1
|
13
|
+
OctetString = org.bouncycastle.asn1.DEROctetString
|
14
|
+
end
|
15
|
+
|
16
|
+
PKCS7 = org.jruby.ext.openssl.impl.PKCS7 unless defined?(PKCS7)
|
17
|
+
Attribute = org.jruby.ext.openssl.impl.Attribute unless defined?(Attribute)
|
18
|
+
Digest = org.jruby.ext.openssl.impl.Digest unless defined?(Digest)
|
19
|
+
EncContent = org.jruby.ext.openssl.impl.EncContent unless defined?(EncContent)
|
20
|
+
Encrypt = org.jruby.ext.openssl.impl.Encrypt unless defined?(Encrypt)
|
21
|
+
Envelope = org.jruby.ext.openssl.impl.Envelope unless defined?(Envelope)
|
22
|
+
IssuerAndSerial = org.jruby.ext.openssl.impl.IssuerAndSerial unless defined?(IssuerAndSerial)
|
23
|
+
RecipInfo = org.jruby.ext.openssl.impl.RecipInfo unless defined?(RecipInfo)
|
24
|
+
SignEnvelope = org.jruby.ext.openssl.impl.SignEnvelope unless defined?(SignEnvelope)
|
25
|
+
Signed = org.jruby.ext.openssl.impl.Signed unless defined?(Signed)
|
26
|
+
SMIME = org.jruby.ext.openssl.impl.SMIME unless defined?(SMIME)
|
27
|
+
Mime = org.jruby.ext.openssl.impl.Mime unless defined?(Mime)
|
28
|
+
MimeHeader = org.jruby.ext.openssl.impl.MimeHeader unless defined?(MimeHeader)
|
29
|
+
MimeParam = org.jruby.ext.openssl.impl.MimeParam unless defined?(MimeParam)
|
30
|
+
BIO = org.jruby.ext.openssl.impl.BIO unless defined?(BIO)
|
31
|
+
PKCS7Exception = org.jruby.ext.openssl.impl.PKCS7Exception unless defined?(PKCS7Exception)
|
32
|
+
ASN1Registry = org.jruby.ext.openssl.impl.ASN1Registry unless defined?(ASN1Registry)
|
33
|
+
AlgorithmIdentifier = org.bouncycastle.asn1.x509.AlgorithmIdentifier unless defined?(AlgorithmIdentifier)
|
34
|
+
SignerInfoWithPkey = org.jruby.ext.openssl.impl.SignerInfoWithPkey unless defined?(SignerInfoWithPkey)
|
35
|
+
IssuerAndSerialNumber = org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber unless defined?(IssuerAndSerialNumber)
|
36
|
+
ASN1InputStream = org.bouncycastle.asn1.ASN1InputStream unless defined?(ASN1InputStream)
|
37
|
+
X509AuxCertificate = org.jruby.ext.openssl.x509store.X509AuxCertificate unless defined?(X509AuxCertificate)
|
38
|
+
|
39
|
+
ArrayList = java.util.ArrayList unless defined?(ArrayList)
|
40
|
+
CertificateFactory = java.security.cert.CertificateFactory unless defined?(CertificateFactory)
|
41
|
+
BCP = org.bouncycastle.jce.provider.BouncyCastleProvider unless defined?(BCP)
|
42
|
+
ByteArrayInputStream = java.io.ByteArrayInputStream unless defined?(ByteArrayInputStream)
|
43
|
+
BigInteger = java.math.BigInteger unless defined?(BigInteger)
|
44
|
+
Cipher = javax.crypto.Cipher unless defined?(Cipher)
|
45
|
+
|
46
|
+
DERInteger = org.bouncycastle.asn1.DERInteger
|
47
|
+
DERSet = org.bouncycastle.asn1.DERSet
|
48
|
+
DEROctetString = org.bouncycastle.asn1.DEROctetString
|
49
|
+
X509Name = org.bouncycastle.asn1.x509.X509Name
|
50
|
+
|
51
|
+
|
52
|
+
MimeEnvelopedString = File::read(File.join(File.dirname(__FILE__), 'pkcs7_mime_enveloped.message'))
|
53
|
+
MimeSignedString = File::read(File.join(File.dirname(__FILE__), 'pkcs7_mime_signed.message'))
|
54
|
+
MultipartSignedString = File::read(File.join(File.dirname(__FILE__), 'pkcs7_multipart_signed.message'))
|
55
|
+
|
56
|
+
X509CertString = <<CERT
|
57
|
+
-----BEGIN CERTIFICATE-----
|
58
|
+
MIICijCCAXKgAwIBAgIBAjANBgkqhkiG9w0BAQUFADA9MRMwEQYKCZImiZPyLGQB
|
59
|
+
GRYDb3JnMRkwFwYKCZImiZPyLGQBGRYJcnVieS1sYW5nMQswCQYDVQQDDAJDQTAe
|
60
|
+
Fw0wODA3MDgxOTE1NDZaFw0wODA3MDgxOTQ1NDZaMEQxEzARBgoJkiaJk/IsZAEZ
|
61
|
+
FgNvcmcxGTAXBgoJkiaJk/IsZAEZFglydWJ5LWxhbmcxEjAQBgNVBAMMCWxvY2Fs
|
62
|
+
aG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAy8LEsNRApz7U/j5DoB4X
|
63
|
+
BgO9Z8Atv5y/OVQRp0ag8Tqo1YewsWijxEWB7JOATwpBN267U4T1nPZIxxEEO7n/
|
64
|
+
WNa2ws9JWsjah8ssEBFSxZqdXKSLf0N4Hi7/GQ/aYoaMCiQ8jA4jegK2FJmXM71u
|
65
|
+
Pe+jFN/peeBOpRfyXxRFOYcCAwEAAaMSMBAwDgYDVR0PAQH/BAQDAgWgMA0GCSqG
|
66
|
+
SIb3DQEBBQUAA4IBAQCU879BALJIM9avHiuZ3WTjDy0UYP3ZG5wtuSqBSnD1k8pr
|
67
|
+
hXfRaga7mDj6EQaGUovImb+KrRi6mZc+zsx4rTxwBNJT9U8yiW2eYxmgcT9/qKrD
|
68
|
+
/1nz+e8NeUCCDY5UTUHGszZw5zLEDgDX2n3E/CDIZsoRSyq5vXq1jpfih/tSWanj
|
69
|
+
Y9uP/o8Dc7ZcRJOAX7NPu1bbZcbxEbZ8sMe5wZ5HNiAR6gnOrjz2Yyazb//PSskE
|
70
|
+
4flt/2h4pzGA0/ZHcnDjcoLdiLtInsqPOlVDLgqd/XqRYWtj84N4gw1iS9cHyrIZ
|
71
|
+
dqbS54IKvzElD+R0QVS2z6TIGJSpuSBnZ4yfuNuq
|
72
|
+
-----END CERTIFICATE-----
|
73
|
+
CERT
|
74
|
+
|
75
|
+
X509CRLString = <<CRL
|
76
|
+
----BEGIN X509 CRL-----
|
77
|
+
MIIBlTB/AgEBMA0GCSqGSIb3DQEBBQUAMD0xEzARBgoJkiaJk/IsZAEZFgNvcmcx
|
78
|
+
GTAXBgoJkiaJk/IsZAEZFglydWJ5LWxhbmcxCzAJBgNVBAMMAkNBFw0wODA3MTgx
|
79
|
+
NzQxMjhaFw0wODA3MTgxODA4MDhaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0B
|
80
|
+
AQUFAAOCAQEASJaj1keN+tMmsF3QmjH2RhbW/9rZAl4gjv+uQQqrcS2ByfkXLU1d
|
81
|
+
l/8rCHeT/XMoeU6xhQNHPP3uZBwfuuETcp65BMBcZFOUhUR0U5AaGhvSDS/+6EsP
|
82
|
+
zFdQgAagmThFdN5ei9guTLqWwN0ZyqiaHyevFJuk+L9qbKavaSeKqfJbU7Sj/Z3J
|
83
|
+
WLKoixvyj3N6W7evygH80lTvjZugmxJ1/AjICVSYr1hpHHd6EWq0b0YFrGFmg27R
|
84
|
+
WmsAXd0QV5UChfAJ2+Cz5U1bPszvIJGrzfAIoLxHv5rI5rseQzqZdPaFSe4Oehln
|
85
|
+
9qEYmsK3PS6bYoQol0cgj97Ep4olS8CulA==
|
86
|
+
-----END X509 CRL-----
|
87
|
+
CRL
|
88
|
+
|
89
|
+
X509Cert = X509AuxCertificate.new(CertificateFactory.getInstance("X.509",BCP.new).generateCertificate(ByteArrayInputStream.new(X509CertString.to_java_bytes)))
|
90
|
+
X509CRL = CertificateFactory.getInstance("X.509",BCP.new).generateCRL(ByteArrayInputStream.new(X509CRLString.to_java_bytes))
|
91
|
+
end
|
92
|
+
|
93
|
+
require File.join(File.dirname(__FILE__), 'test_java_attribute')
|
94
|
+
require File.join(File.dirname(__FILE__), 'test_java_bio')
|
95
|
+
require File.join(File.dirname(__FILE__), 'test_java_mime')
|
96
|
+
require File.join(File.dirname(__FILE__), 'test_java_pkcs7')
|
97
|
+
require File.join(File.dirname(__FILE__), 'test_java_smime')
|
98
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module PKCS7Test
|
2
|
+
class TestJavaAttribute < Test::Unit::TestCase
|
3
|
+
def test_attributes
|
4
|
+
val = ASN1::OctetString.new("foo".to_java_bytes)
|
5
|
+
val2 = ASN1::OctetString.new("bar".to_java_bytes)
|
6
|
+
attr = Attribute.create(123, 444, val)
|
7
|
+
assert_raises NoMethodError do
|
8
|
+
attr.type = 12
|
9
|
+
end
|
10
|
+
assert_raises NoMethodError do
|
11
|
+
attr.value = val2
|
12
|
+
end
|
13
|
+
|
14
|
+
assert_equal 123, attr.type
|
15
|
+
assert_equal val, attr.set.get(0)
|
16
|
+
|
17
|
+
attr2 = Attribute.create(123, 444, val)
|
18
|
+
|
19
|
+
assert_equal attr, attr2
|
20
|
+
|
21
|
+
assert_not_equal Attribute.create(124, 444, val), attr
|
22
|
+
assert_not_equal Attribute.create(123, 444, val2), attr
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module PKCS7Test
|
2
|
+
class TestJavaBIO < Test::Unit::TestCase
|
3
|
+
def test_string_bio_simple
|
4
|
+
bio = BIO::from_string("abc")
|
5
|
+
arr = Java::byte[20].new
|
6
|
+
read = bio.gets(arr, 10)
|
7
|
+
assert_equal 3, read
|
8
|
+
assert_equal "abc".to_java_bytes.to_a, arr.to_a[0...read]
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_string_bio_simple_with_newline
|
12
|
+
bio = BIO::from_string("abc\n")
|
13
|
+
arr = Java::byte[20].new
|
14
|
+
read = bio.gets(arr, 10)
|
15
|
+
assert_equal 4, read
|
16
|
+
assert_equal "abc\n".to_java_bytes.to_a, arr.to_a[0...read]
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_string_bio_simple_with_newline_and_more_data
|
20
|
+
bio = BIO::from_string("abc\nfoo\n\nbar")
|
21
|
+
arr = Java::byte[20].new
|
22
|
+
read = bio.gets(arr, 10)
|
23
|
+
assert_equal 4, read
|
24
|
+
assert_equal "abc\n".to_java_bytes.to_a, arr.to_a[0...read]
|
25
|
+
|
26
|
+
read = bio.gets(arr, 10)
|
27
|
+
assert_equal 4, read
|
28
|
+
assert_equal "foo\n".to_java_bytes.to_a, arr.to_a[0...read]
|
29
|
+
|
30
|
+
read = bio.gets(arr, 10)
|
31
|
+
assert_equal 1, read
|
32
|
+
assert_equal "\n".to_java_bytes.to_a, arr.to_a[0...read]
|
33
|
+
|
34
|
+
read = bio.gets(arr, 10)
|
35
|
+
assert_equal 3, read
|
36
|
+
assert_equal "bar".to_java_bytes.to_a, arr.to_a[0...read]
|
37
|
+
|
38
|
+
read = bio.gets(arr, 10)
|
39
|
+
assert_equal 0, read
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|