openssl-stdlib 0.0.6 → 1.0.0
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.
- checksums.yaml +4 -4
- data/lib/openssl-stdlib.rb +18 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f5ffbd8a8466becf833e685a104f209a8e43cdbc2f9f4207e0ed96f8d81200f
|
4
|
+
data.tar.gz: 5d60f0e1dfb8419cbddf6f5a8abf1604520b7baa19ebee04666238aa045107ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aaf75346c482691752bbb518d78b796f842fc96c94f1454f5b337df8e66568908db224f05f044cd097dc274a8319ae592caa0e7f18bd50a39751c13d874ee922
|
7
|
+
data.tar.gz: 93902a44397e5a4126e6c8ce9d60a0b13c03599c9b58ec8de70a7cb1cb91ad9e6a1e5b0972cef3dbd3f13dbf28ae5c9d181ab3997aef66b00c31f38319057a90
|
data/lib/openssl-stdlib.rb
CHANGED
@@ -3,12 +3,16 @@ require 'openssl'
|
|
3
3
|
module Stdlib
|
4
4
|
class Certificate
|
5
5
|
|
6
|
-
def self.sign_csr(
|
6
|
+
def self.sign_csr(ca_key, ca_cert, csr, serial = nil, version = 2, valid_duration = nil)
|
7
|
+
|
8
|
+
raise Stdlib::Error.new('No CA Key was provided to use for signing') if ca_key.nil? or ! ca_key.is_a?(OpenSSL::PKey::RSA)
|
9
|
+
raise Stdlib::Error.new('No CA Cert was provided to use for signing') if ca_cert.nil? or ! ca_cert.is_a?(OpenSSL::X509::Certificate)
|
10
|
+
raise Stdlib::Error.new('No Certificate signing request was provided to sign') if csr.nil? or ! csr.is_a?(OpenSSL::X509::Request)
|
7
11
|
|
8
12
|
csr_cert = OpenSSL::X509::Certificate.new
|
9
13
|
|
10
14
|
rand = Random.new
|
11
|
-
csr_cert.serial = serial ||=
|
15
|
+
csr_cert.serial = serial ||= rand.rand(1..100)
|
12
16
|
csr_cert.version = version
|
13
17
|
csr_cert.not_before = Time.now
|
14
18
|
csr_cert.not_after = Time.now + (valid_duration ||= 60 * 24 * 365 * 5)
|
@@ -30,15 +34,21 @@ module Stdlib
|
|
30
34
|
|
31
35
|
csr_cert.sign ca_key, OpenSSL::Digest::SHA1.new
|
32
36
|
|
33
|
-
|
34
|
-
io.write csr_cert.to_pem
|
35
|
-
end
|
37
|
+
csr_cert
|
36
38
|
end
|
37
39
|
|
38
|
-
def self.create_csr(key,
|
40
|
+
def self.create_csr(key, cn, dc)
|
39
41
|
|
40
42
|
raise Stdlib::Error.new('No suitable key was provided') if key.nil? or ! key.is_a?(OpenSSL::PKey::RSA)
|
41
|
-
raise Stdlib::Error.new('No
|
43
|
+
raise Stdlib::Error.new('No CN was supplied to the certificate') if cn.nil?
|
44
|
+
raise Stdlib::Error.new('No DC array was supplied to the certificate') if dc.nil?
|
45
|
+
|
46
|
+
dclist = String.new
|
47
|
+
dc.each do |d|
|
48
|
+
dclist = dclist + "/DC=#{d}"
|
49
|
+
end
|
50
|
+
|
51
|
+
name = OpenSSL::X509::Name.parse "CN=#{cn}#{dclist}"
|
42
52
|
|
43
53
|
csr = OpenSSL::X509::Request.new
|
44
54
|
csr.version = 0
|
@@ -90,7 +100,7 @@ module Stdlib
|
|
90
100
|
cert
|
91
101
|
end
|
92
102
|
|
93
|
-
def self.generate_certificate(key, cn, dc, version =
|
103
|
+
def self.generate_certificate(key, cn, dc, version = 2, serial = nil, valid_duration = nil)
|
94
104
|
|
95
105
|
raise Stdlib::Error.new('No key was supplied to the certificate') if key.nil? or ! key.is_a?(OpenSSL::PKey::RSA)
|
96
106
|
raise Stdlib::Error.new('No CN was supplied to the certificate') if cn.nil?
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openssl-stdlib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Anderson
|
@@ -40,5 +40,5 @@ rubyforge_project:
|
|
40
40
|
rubygems_version: 2.7.6
|
41
41
|
signing_key:
|
42
42
|
specification_version: 4
|
43
|
-
summary: stdlib for openssl
|
43
|
+
summary: stdlib for openssl certificates
|
44
44
|
test_files: []
|