summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorBen Toews <mastahyeti@gmail.com>2018-07-05 13:29:46 -0600
committerSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-10-01 11:25:06 +1300
commita1c033e8d1cf4730c9e5ba5780b2f1ce43483001 (patch)
tree97f24b1887083ae0b9ecac7bec23ef01b4c637ab /test
parent57b457c0dca759cb68cd0045574c24e50b79665a (diff)
downloadruby-openssl-a1c033e8d1cf4730c9e5ba5780b2f1ce43483001.tar.gz
ts: clean up some memory leaks
Diffstat (limited to 'test')
-rwxr-xr-xtest/test_ts.rb144
1 files changed, 80 insertions, 64 deletions
diff --git a/test/test_ts.rb b/test/test_ts.rb
index 92b57d84..38898f47 100755
--- a/test/test_ts.rb
+++ b/test/test_ts.rb
@@ -3,7 +3,8 @@ require_relative "utils"
if defined?(OpenSSL) && defined?(OpenSSL::Timestamp)
class OpenSSL::TestTimestamp < OpenSSL::TestCase
- INTERMEDIATE_KEY = OpenSSL::PKey::RSA.new <<-_end_of_pem_
+ def intermediate_key
+ @intermediate_key ||= OpenSSL::PKey::RSA.new <<-_end_of_pem_
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCcyODxH+oTrr7l7MITWcGaYnnBma6vidCCJjuSzZpaRmXZHAyH
0YcY4ttC0BdJ4uV+cE05IySVC7tyvVfFb8gFQ6XJV+AEktP+XkLbcxZgj9d2NVu1
@@ -20,8 +21,10 @@ X5fAffWU0u7ZwqeByQJAOUAbYET4RU3iymAvAIDFj8LiQnizG9t5Ty3HXlijKQYv
y8gsvWd4CdxwOPatWpBUX9L7IXcMJmD44xXTUvpbfQ==
-----END RSA PRIVATE KEY-----
_end_of_pem_
+ end
- EE_KEY = OpenSSL::PKey::RSA.new <<-_end_of_pem_
+ def ee_key
+ @ee_key ||= OpenSSL::PKey::RSA.new <<-_end_of_pem_
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQDA6eB5r2O5KOKNbKMBhzadl43lgpwqq28m+G0gH38kKCL1f3o9
P8xUZm7sZqcWEervZMSSXMGBV9DgeoSR+U6FMJywgQGx/JNRx7wZTMNym3PvgLkl
@@ -38,11 +41,24 @@ EWRYkoNQ8/Q4lCeMjQJAfvDIGtyqF4PieFHYgluQAv5pGgYpakdc8SYyeRH9NKey
GaL27FRs4fRWf9OmxPhUVgIyGzLGXrueemvQUDHObA==
-----END RSA PRIVATE KEY-----
_end_of_pem_
+ end
+
+ def ca_cert
+ @ca_cert ||= OpenSSL::Certs.ca_cert
+ end
+
- CA_CERT = OpenSSL::Certs.ca_cert
- TS_CERT_DIRECT = OpenSSL::Certs.ts_cert_direct(EE_KEY, CA_CERT)
- INTERMEDIATE_CERT = OpenSSL::Certs.intermediate_cert(INTERMEDIATE_KEY, CA_CERT)
- TS_CERT_EE = OpenSSL::Certs.ts_cert_ee(EE_KEY, INTERMEDIATE_CERT, INTERMEDIATE_KEY)
+ def ts_cert_direct
+ @ts_cert_direct ||= OpenSSL::Certs.ts_cert_direct(ee_key, ca_cert)
+ end
+
+ def intermediate_cert
+ @intermediate_cert ||= OpenSSL::Certs.intermediate_cert(intermediate_key, ca_cert)
+ end
+
+ def ts_cert_ee
+ @ts_cert_ee ||= OpenSSL::Certs.ts_cert_ee(ee_key, intermediate_cert, intermediate_key)
+ end
def test_create_request
req = OpenSSL::Timestamp::Request.new
@@ -93,7 +109,7 @@ _end_of_pem_
req.nonce = 42
assert_equal(42, req.nonce)
assert_raises(TypeError) { req.nonce = "foo" }
- assert_raises(OpenSSL::Timestamp::TimestampError) { req.nonce = nil }
+ assert_raises(TypeError) { req.nonce = nil }
req.cert_requested = false
assert_equal(false, req.cert_requested?)
@@ -168,7 +184,7 @@ _end_of_pem_
fac.gen_time = time
fac.serial_number = 1
- resp = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ resp = fac.create_timestamp(ee_key, ts_cert_ee, req)
assert_equal(OpenSSL::Timestamp::Response::GRANTED, resp.status)
assert_nil(resp.failure_info)
assert_nil(resp.status_text)
@@ -180,7 +196,7 @@ _end_of_pem_
assert_equal(time.to_i, resp.gen_time.to_i)
assert_equal(false, resp.ordering)
assert_nil(req.nonce)
- assert_cert(TS_CERT_EE, resp.tsa_certificate)
+ assert_cert(ts_cert_ee, resp.tsa_certificate)
#compare PKCS7
pkcs7 = OpenSSL::ASN1.decode(resp.to_der).value[1]
assert_equal(pkcs7.to_der, resp.pkcs7.to_der)
@@ -190,32 +206,32 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
req = OpenSSL::Timestamp::Request.new
assert_raises(OpenSSL::Timestamp::TimestampError) do
- fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.create_timestamp(ee_key, ts_cert_ee, req)
end
req.algorithm = "sha1"
assert_raises(OpenSSL::Timestamp::TimestampError) do
- fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.create_timestamp(ee_key, ts_cert_ee, req)
end
req.message_imprint = OpenSSL::Digest::SHA1.new.digest("data")
assert_raises(OpenSSL::Timestamp::TimestampError) do
- fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.create_timestamp(ee_key, ts_cert_ee, req)
end
fac.gen_time = Time.now
assert_raises(OpenSSL::Timestamp::TimestampError) do
- fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.create_timestamp(ee_key, ts_cert_ee, req)
end
fac.serial_number = 1
assert_raises(OpenSSL::Timestamp::TimestampError) do
- fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.create_timestamp(ee_key, ts_cert_ee, req)
end
fac.default_policy_id = "1.2.3.4.5"
- fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.create_timestamp(ee_key, ts_cert_ee, req)
fac.default_policy_id = nil
assert_raises(OpenSSL::Timestamp::TimestampError) do
- fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.create_timestamp(ee_key, ts_cert_ee, req)
end
req.policy_id = "1.2.3.4.5"
- fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.create_timestamp(ee_key, ts_cert_ee, req)
end
def test_response_default_policy
@@ -229,7 +245,7 @@ _end_of_pem_
fac.serial_number = 1
fac.default_policy_id = "1.2.3.4.6"
- resp = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ resp = fac.create_timestamp(ee_key, ts_cert_ee, req)
assert_equal(OpenSSL::Timestamp::Response::GRANTED, resp.status)
assert_equal("1.2.3.4.6", resp.policy_id)
end
@@ -246,7 +262,7 @@ _end_of_pem_
fac.serial_number = 1
fac.default_policy_id = "1.2.3.4.5"
- resp = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ resp = fac.create_timestamp(ee_key, ts_cert_ee, req)
assert_equal(OpenSSL::Timestamp::Response::GRANTED, resp.status)
assert_nil(resp.tsa_certificate)
end
@@ -262,14 +278,14 @@ _end_of_pem_
fac.gen_time = Time.now
fac.serial_number = 1
- fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.create_timestamp(ee_key, ts_cert_ee, req)
end
end
def test_verify_ee_no_req
assert_raises(TypeError) do
ts, req = timestamp_ee
- ts.verify(nil, CA_CERT)
+ ts.verify(nil, ca_cert)
end
end
@@ -283,14 +299,14 @@ _end_of_pem_
def test_verify_ee_wrong_root_no_intermediate
assert_raises(OpenSSL::Timestamp::CertificateValidationError) do
ts, req = timestamp_ee
- ts.verify(req, [INTERMEDIATE_CERT])
+ ts.verify(req, [intermediate_cert])
end
end
def test_verify_ee_wrong_root_wrong_intermediate
assert_raises(OpenSSL::Timestamp::CertificateValidationError) do
ts, req = timestamp_ee
- ts.verify(req, [INTERMEDIATE_CERT], CA_CERT)
+ ts.verify(req, [intermediate_cert], ca_cert)
end
end
@@ -298,40 +314,40 @@ _end_of_pem_
assert_raises(OpenSSL::Timestamp::TimestampError) do
ts, req = timestamp_ee
req.nonce = 1
- ts.verify(req, [CA_CERT], INTERMEDIATE_CERT)
+ ts.verify(req, [ca_cert], intermediate_cert)
end
end
def test_verify_ee_intermediate_missing
assert_raises(OpenSSL::Timestamp::CertificateValidationError) do
ts, req = timestamp_ee
- ts.verify(req, [CA_CERT])
+ ts.verify(req, [ca_cert])
end
end
def test_verify_ee_intermediate
ts, req = timestamp_ee
- ts.verify(req, [CA_CERT], INTERMEDIATE_CERT)
+ ts.verify(req, [ca_cert], intermediate_cert)
end
def test_verify_ee_single_root
ts, req = timestamp_ee
- ts.verify(req, CA_CERT, INTERMEDIATE_CERT)
+ ts.verify(req, ca_cert, intermediate_cert)
end
def test_verify_ee_root_from_string
ts, req = timestamp_ee
- pem_root = CA_CERT.to_pem
- ts.verify(req, pem_root, INTERMEDIATE_CERT)
+ pem_root = ca_cert.to_pem
+ ts.verify(req, pem_root, intermediate_cert)
end
def test_verify_ee_root_from_file
begin
ts, req = timestamp_ee
File.open('root_ca', 'wb') do |file|
- file.print(CA_CERT.to_pem)
+ file.print(ca_cert.to_pem)
end
- ts.verify(req, File.open('root_ca', 'rb'), INTERMEDIATE_CERT)
+ ts.verify(req, File.open('root_ca', 'rb'), intermediate_cert)
ensure
if File.exists?('root_ca')
File.delete('root_ca')
@@ -351,48 +367,48 @@ _end_of_pem_
fac.serial_number = 1
fac.default_policy_id = "1.2.3.4.5"
- ts = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
- ts.verify(req, [CA_CERT], INTERMEDIATE_CERT)
+ ts = fac.create_timestamp(ee_key, ts_cert_ee, req)
+ ts.verify(req, [ca_cert], intermediate_cert)
end
def test_verify_direct
ts, req = timestamp_direct
- ts.verify(req, [CA_CERT])
+ ts.verify(req, [ca_cert])
end
def test_verify_direct_redundant_untrusted
ts, req = timestamp_direct
- ts.verify(req, [CA_CERT], ts.tsa_certificate, ts.tsa_certificate)
+ ts.verify(req, [ca_cert], ts.tsa_certificate, ts.tsa_certificate)
end
def test_verify_direct_unrelated_untrusted
ts, req = timestamp_direct
- ts.verify(req, [CA_CERT], INTERMEDIATE_CERT)
+ ts.verify(req, [ca_cert], intermediate_cert)
end
def test_verify_direct_wrong_root
assert_raises(OpenSSL::Timestamp::CertificateValidationError) do
ts, req = timestamp_direct
- ts.verify(req, [INTERMEDIATE_CERT])
+ ts.verify(req, [intermediate_cert])
end
end
def test_verify_direct_no_cert_no_intermediate
assert_raises(OpenSSL::Timestamp::TimestampError) do
ts, req = timestamp_direct_no_cert
- ts.verify(req, [CA_CERT])
+ ts.verify(req, [ca_cert])
end
end
def test_verify_ee_no_cert
ts, req = timestamp_ee_no_cert
- ts.verify(req, [CA_CERT], TS_CERT_EE, INTERMEDIATE_CERT)
+ ts.verify(req, [ca_cert], ts_cert_ee, intermediate_cert)
end
def test_verify_ee_no_cert_no_intermediate
assert_raises(OpenSSL::Timestamp::CertificateValidationError) do
ts, req = timestamp_ee_no_cert
- ts.verify(req, [CA_CERT], TS_CERT_EE)
+ ts.verify(req, [ca_cert], ts_cert_ee)
end
end
@@ -408,9 +424,9 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
fac.gen_time = Time.now
fac.serial_number = 1
- ts = fac.create_timestamp(EE_KEY, INTERMEDIATE_CERT, req)
+ ts = fac.create_timestamp(ee_key, intermediate_cert, req)
- ts.verify(req, [CA_CERT])
+ ts.verify(req, [ca_cert])
end
end
@@ -424,12 +440,12 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
fac.gen_time = Time.now
fac.serial_number = 1
- fac.additional_certs = [INTERMEDIATE_CERT]
- ts = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.additional_certs = [intermediate_cert]
+ ts = fac.create_timestamp(ee_key, ts_cert_ee, req)
assert_equal(2, ts.pkcs7.certificates.size)
fac.additional_certs = nil
- ts.verify(req, CA_CERT)
- ts = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ ts.verify(req, ca_cert)
+ ts = fac.create_timestamp(ee_key, ts_cert_ee, req)
assert_equal(1, ts.pkcs7.certificates.size)
end
@@ -443,10 +459,10 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
fac.gen_time = Time.now
fac.serial_number = 1
- fac.additional_certs = INTERMEDIATE_CERT
- ts = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.additional_certs = intermediate_cert
+ ts = fac.create_timestamp(ee_key, ts_cert_ee, req)
assert_equal(2, ts.pkcs7.certificates.size)
- ts.verify(req, CA_CERT)
+ ts.verify(req, ca_cert)
end
def test_verify_ee_additional_certs_with_root
@@ -459,10 +475,10 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
fac.gen_time = Time.now
fac.serial_number = 1
- fac.additional_certs = [INTERMEDIATE_CERT, CA_CERT]
- ts = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.additional_certs = [intermediate_cert, ca_cert]
+ ts = fac.create_timestamp(ee_key, ts_cert_ee, req)
assert_equal(3, ts.pkcs7.certificates.size)
- ts.verify(req, CA_CERT)
+ ts.verify(req, ca_cert)
end
def test_verify_ee_cert_inclusion_not_requested
@@ -477,10 +493,10 @@ _end_of_pem_
fac.serial_number = 1
#needed because the Request contained no policy identifier
fac.default_policy_id = '1.2.3.4.5'
- fac.additional_certs = [ TS_CERT_EE, INTERMEDIATE_CERT ]
- ts = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
+ fac.additional_certs = [ ts_cert_ee, intermediate_cert ]
+ ts = fac.create_timestamp(ee_key, ts_cert_ee, req)
assert_nil(ts.pkcs7.certificates) #since cert_requested? == false
- ts.verify(req, CA_CERT, TS_CERT_EE, INTERMEDIATE_CERT)
+ ts.verify(req, ca_cert, ts_cert_ee, intermediate_cert)
end
def test_reusable
@@ -496,11 +512,11 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
fac.gen_time = Time.now
fac.serial_number = 1
- fac.additional_certs = [ INTERMEDIATE_CERT ]
- ts1 = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
- ts1.verify(req, CA_CERT)
- ts2 = fac.create_timestamp(EE_KEY, TS_CERT_EE, req)
- ts2.verify(req, CA_CERT)
+ fac.additional_certs = [ intermediate_cert ]
+ ts1 = fac.create_timestamp(ee_key, ts_cert_ee, req)
+ ts1.verify(req, ca_cert)
+ ts2 = fac.create_timestamp(ee_key, ts_cert_ee, req)
+ ts2.verify(req, ca_cert)
refute_nil(ts1.tsa_certificate)
refute_nil(ts2.tsa_certificate)
end
@@ -522,7 +538,7 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
fac.gen_time = Time.now
fac.serial_number = 1
- return fac.create_timestamp(EE_KEY, TS_CERT_EE, req), req
+ return fac.create_timestamp(ee_key, ts_cert_ee, req), req
end
def timestamp_ee_no_cert
@@ -537,7 +553,7 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
fac.gen_time = Time.now
fac.serial_number = 1
- return fac.create_timestamp(EE_KEY, TS_CERT_EE, req), req
+ return fac.create_timestamp(ee_key, ts_cert_ee, req), req
end
def timestamp_direct
@@ -551,7 +567,7 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
fac.gen_time = Time.now
fac.serial_number = 1
- return fac.create_timestamp(EE_KEY, TS_CERT_DIRECT, req), req
+ return fac.create_timestamp(ee_key, ts_cert_direct, req), req
end
def timestamp_direct_no_cert
@@ -566,7 +582,7 @@ _end_of_pem_
fac = OpenSSL::Timestamp::Factory.new
fac.gen_time = Time.now
fac.serial_number = 1
- return fac.create_timestamp(EE_KEY, TS_CERT_DIRECT, req), req
+ return fac.create_timestamp(ee_key, ts_cert_direct, req), req
end
end