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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/openssl-stdlib.rb +18 -8
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a46e82f25f7d9efcb1af54ef6ccfc480af4c1a3dd9869b1d6dcdc0360ba03eb3
4
- data.tar.gz: fb615dcacc4dc63382be543d108d709e47b1b5ff4d09c8cef44d411d1ed960c7
3
+ metadata.gz: 6f5ffbd8a8466becf833e685a104f209a8e43cdbc2f9f4207e0ed96f8d81200f
4
+ data.tar.gz: 5d60f0e1dfb8419cbddf6f5a8abf1604520b7baa19ebee04666238aa045107ca
5
5
  SHA512:
6
- metadata.gz: 80fe2cba25c079564bc5a7f03205875181669ef4003e2242e2b69ac11e6ef71af637edc01c6b0ee3de90f8923f42fe3832c6605d392eb57d5b9131cefa44c50c
7
- data.tar.gz: 42e36504d6f1466cb7c208e404fc82091c9304e2526e9be44d7c6204463421906d3e23c1ff77875015e2f4a308174ca3634a307c581c84817e15c3c74ceba76d
6
+ metadata.gz: aaf75346c482691752bbb518d78b796f842fc96c94f1454f5b337df8e66568908db224f05f044cd097dc274a8319ae592caa0e7f18bd50a39751c13d874ee922
7
+ data.tar.gz: 93902a44397e5a4126e6c8ce9d60a0b13c03599c9b58ec8de70a7cb1cb91ad9e6a1e5b0972cef3dbd3f13dbf28ae5c9d181ab3997aef66b00c31f38319057a90
@@ -3,12 +3,16 @@ require 'openssl'
3
3
  module Stdlib
4
4
  class Certificate
5
5
 
6
- def self.sign_csr(key, csr, serial = nil, version = 3, valid_duration = nil)
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 ||= random.rand(1..100)
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
- open 'csr_cert.pem', 'w' do |io|
34
- io.write csr_cert.to_pem
35
- end
37
+ csr_cert
36
38
  end
37
39
 
38
- def self.create_csr(key, name)
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 suitable name was provided') if name.nil? or ! name.is_a?(String) or name.size < 1
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 = 3, serial = nil, valid_duration = nil)
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.6
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 certificaes
43
+ summary: stdlib for openssl certificates
44
44
  test_files: []