ssltool 0.0.19 → 0.0.20
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/ssltool/certificate.rb +16 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fe5a7e781f83fb69dfd7ff57f6fafc215ca9276
|
4
|
+
data.tar.gz: e6d9ebcafbab556ecd142fd878056da8c7ebc0b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 670409887283d19c580840088dc852e794787341fa93f5196f9d845ff69fa5518b0b2fa1dc81c90e770f4f119001d6c1916dc77a30bc837c50d10edcb69fba8a
|
7
|
+
data.tar.gz: c8ca3931bd183f2132f1f1e7bdef8d291430429814e88710995f9bfd92c0849f4ebbdbe8e804ff3e506f5389a92c83356938261497e67310fcab689990a1833f
|
data/lib/ssltool/certificate.rb
CHANGED
@@ -48,6 +48,12 @@ module SSLTool
|
|
48
48
|
subject.eql?(issuer)
|
49
49
|
end
|
50
50
|
|
51
|
+
def parent?(other_cert)
|
52
|
+
signs?(other_cert) \
|
53
|
+
&& subject == other_cert.issuer \
|
54
|
+
&& subject_key_identifier == other_cert.authority_key_identifier
|
55
|
+
end
|
56
|
+
|
51
57
|
### properties
|
52
58
|
|
53
59
|
def fingerprint
|
@@ -84,6 +90,14 @@ module SSLTool
|
|
84
90
|
map_extension_value('keyUsage') { |s| s.split(", ").include?('Certificate Sign') }
|
85
91
|
end
|
86
92
|
|
93
|
+
def subject_key_identifier
|
94
|
+
map_extension_value('subjectKeyIdentifier') { |s| s.chomp }
|
95
|
+
end
|
96
|
+
|
97
|
+
def authority_key_identifier
|
98
|
+
map_extension_value('authorityKeyIdentifier') { |s| s.sub(/^keyid:/, '').chomp }
|
99
|
+
end
|
100
|
+
|
87
101
|
def key_size
|
88
102
|
case public_key
|
89
103
|
when OpenSSL::PKey::RSA ; public_key.n.num_bits
|
@@ -125,14 +139,14 @@ module SSLTool
|
|
125
139
|
def map_extension_value(extension_name, default = nil)
|
126
140
|
e = extensions[extension_name]
|
127
141
|
return default if e.nil?
|
128
|
-
yield(e.value)
|
142
|
+
block_given? ? yield(e.value) : e.value
|
129
143
|
end
|
130
144
|
|
131
145
|
### chain
|
132
146
|
|
133
147
|
def chain_from(certs)
|
134
148
|
chain = [self]
|
135
|
-
parent = (certs - chain).find { |cert| cert.
|
149
|
+
parent = (certs - chain).find { |cert| cert.parent?(self) }
|
136
150
|
chain.concat(parent.chain_from(certs - chain)) if parent
|
137
151
|
chain
|
138
152
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ssltool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Caio Chassot
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Orders and completes SSL certificate trust chains, maintains an up-to-date
|
14
14
|
pool of viable intermediates and trusted roots, and provides other tooling for dealing
|