ruby_scep 0.1.0 → 0.2.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/example_server/application.rb +3 -1
- data/lib/ruby_scep/pki_message.rb +13 -6
- data/lib/ruby_scep/pki_operation.rb +6 -3
- data/lib/ruby_scep/version.rb +1 -1
- 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: e56f6b4dabd8c397c018cff11445b01131357cd9
|
4
|
+
data.tar.gz: 0755147776bfb23f488df0fa74a42edaf653cdd1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1a3200871284c45cb92a1758b5f45557cbda828115df9f7e6fee4f7414c99a3c877b4a3e4312e46f853e251d0801a0fcbfe383d31b7c036103c96c4ea344da8
|
7
|
+
data.tar.gz: d6221c48fab32c5481ad2df14cc487119ca37e88f43fb24b0487fa39cb8ef0fcc2776e76bb07f05f7e2ebfb8f2c406206ebb5df8ac3f98b39d4468162c22f588
|
@@ -34,7 +34,9 @@ post '/scep' do
|
|
34
34
|
p 'post scep'
|
35
35
|
if params['operation'] == 'PKIOperation'
|
36
36
|
content_type 'application/x-pki-message'
|
37
|
-
RubyScep::PkiOperation.build_response(request.body.read)
|
37
|
+
pki_message = RubyScep::PkiOperation.build_response(request.body.read)
|
38
|
+
# pki_message.device_certificate is now available and ready to be persisted for later use
|
39
|
+
pki_message.enrollment_response
|
38
40
|
else
|
39
41
|
'Invalid Action'
|
40
42
|
end
|
@@ -30,7 +30,7 @@ module RubyScep
|
|
30
30
|
SCEP_PKI_STATUSES = { 'SUCCESS' => 0, 'FAILURE' => 2, 'PENDING' => 3 }
|
31
31
|
SCEP_FAIL_INFOS = { 'badAlg' => 0, 'badMessageCheck' => 1, 'badRequest' => 2, 'badTime' => 3, 'badCertId' => 4 }
|
32
32
|
|
33
|
-
attr_accessor :p7
|
33
|
+
attr_accessor :p7, :device_certificate, :enrollment_response
|
34
34
|
|
35
35
|
def initialize(asn1, p7)
|
36
36
|
signed_attributes = retrieve_signed_attributes(asn1)
|
@@ -58,10 +58,11 @@ module RubyScep
|
|
58
58
|
# c. signed (unencrypted) data (aka 2. enveloped data)
|
59
59
|
# d. ca certificate
|
60
60
|
# e. digital signature
|
61
|
-
def build_enrollment_response(csr)
|
62
|
-
|
61
|
+
def build_enrollment_response!(csr)
|
62
|
+
generate_device_certificate!(csr)
|
63
|
+
degenerate_sequence = build_degenerate_sequence
|
63
64
|
enveloped_data_sequence = build_enveloped_data_sequence(degenerate_sequence)
|
64
|
-
build_signed_data_sequence(enveloped_data_sequence)
|
65
|
+
@enrollment_response = build_signed_data_sequence(enveloped_data_sequence)
|
65
66
|
end
|
66
67
|
|
67
68
|
private
|
@@ -74,10 +75,16 @@ module RubyScep
|
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
77
|
-
|
78
|
+
# Generates and sets the certificate the device will use to identify itself to the MDM server.
|
79
|
+
# The certificate will be embedded in the PKIMessage response to complete the SCEP process.
|
80
|
+
def generate_device_certificate!(csr)
|
78
81
|
certificate = CertificateBuilder.build(csr)
|
79
82
|
certificate.sign(RubyScep.configuration.ca_key, OpenSSL::Digest::SHA1.new)
|
80
|
-
|
83
|
+
@device_certificate = certificate
|
84
|
+
end
|
85
|
+
|
86
|
+
def build_degenerate_sequence
|
87
|
+
PkiMessage::Degenerate.new(@device_certificate).to_der
|
81
88
|
end
|
82
89
|
|
83
90
|
def build_enveloped_data_sequence(degenerate_sequence)
|
@@ -3,12 +3,15 @@ module RubyScep
|
|
3
3
|
class PkiOperation
|
4
4
|
class << self
|
5
5
|
# @param raw_csr [String] The binary encoded CSR
|
6
|
-
# @return
|
7
|
-
#
|
6
|
+
# @return pki_message [PkiMessage], PkiMessage with the following attributes set:
|
7
|
+
# @enrollment_response: represented in an OpenSSL::ASN1 structure containing the
|
8
|
+
# device's MDM certificate to be installed
|
9
|
+
# @device_certificate: the certificate the device will use to identify itself to the MDM server
|
8
10
|
def build_response(raw_csr)
|
9
11
|
pki_message = parse_pki_message(raw_csr)
|
10
12
|
csr = decrypt_pki_envelope(pki_message)
|
11
|
-
pki_message.build_enrollment_response(csr)
|
13
|
+
pki_message.build_enrollment_response!(csr)
|
14
|
+
pki_message
|
12
15
|
end
|
13
16
|
|
14
17
|
private
|
data/lib/ruby_scep/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_scep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christophe Valentin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|