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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 21d583fad0aab1365951300aaa682ada282a3e89
4
- data.tar.gz: b67e773f8d760d5edeef761007f6eac24ceb2bec
3
+ metadata.gz: e56f6b4dabd8c397c018cff11445b01131357cd9
4
+ data.tar.gz: 0755147776bfb23f488df0fa74a42edaf653cdd1
5
5
  SHA512:
6
- metadata.gz: 40ab20bc9faf28782f58e726fb3cd9836afd431714aa1de335b95849506f168cb76e235ca1bd5391f95b8278fc7382d2cb57c869186bd516444a55330ff44728
7
- data.tar.gz: 768b1540be23d55cc95bd2c7dbd44e896a44e1642254b9068343b3e4b2944ec26bc55a57e3ae2a264c2573b45310260b8759bc85a52c5d6610c52ab0c1a601cf
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
- degenerate_sequence = build_degenerate_sequence(csr)
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
- def build_degenerate_sequence(csr)
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
- PkiMessage::Degenerate.new(certificate).to_der
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 DER-encoded [String], PkiMessage represented in an OpenSSL::ASN1 structure containing the
7
- # device's MDM certificate to be installed
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
@@ -3,7 +3,7 @@
3
3
 
4
4
  module RubyScep
5
5
  module Version
6
- STRING = '0.1.0'
6
+ STRING = '0.2.0'
7
7
 
8
8
  module_function
9
9
 
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.1.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-06 00:00:00.000000000 Z
11
+ date: 2017-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec