conjur-api 4.19.0 → 4.19.1

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: d286220bf5ce8e32e9fa3ecbba374906d40739a8
4
- data.tar.gz: d38f3fd537e81c44c537327642cc4ef6b6407537
3
+ metadata.gz: 901ca102477411588107366adff9780e60eca7c2
4
+ data.tar.gz: 710a9dc4be2dce8bb3f7130ade8120563ee61e19
5
5
  SHA512:
6
- metadata.gz: c1c6e64c7cc31108c7c9f2fc7dde41c10d4b57006c8963f0be3288b49e365f5fb5fbf97b58e744e9fcf9493feafc8070a6571a26d65b6c7b0b13298dffef209e
7
- data.tar.gz: b64f23a2614041ec2f186d9f563ace280ea3cb1f791663c26d780b41911cc5b057e37161cb1d1b9588162cf7393c8290dff26cd2a7d45136bbdd35463f20d361
6
+ metadata.gz: ad298e7f945003d44306c6b9eb8b90a072ccde560735b8a092b1581a7847a3efcecc37f4d16f33f272a2b8b5d5d0c655fe767e7ddcd67b643616ca7767519cc2
7
+ data.tar.gz: 582dec6a6727e502be95af2b7024944e9ad9c260dc465710400d6e600af59a644b5df030264449b685831e064a7371a503cc11e2301ae4605c1f376cbd309427
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # v4.19.1
2
+
3
+ * BUGFIX: Allow Configuration to parse several certs in a string
4
+
1
5
  # v4.19.0
2
6
 
3
7
  * Rename `sudo` to `elevate` throughout the spec and docstrings. This is an incompatible change, but it
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Conjur
21
21
  class API
22
- VERSION = "4.19.0"
22
+ VERSION = "4.19.1"
23
23
  end
24
24
  end
data/lib/conjur/api.rb CHANGED
@@ -42,24 +42,31 @@ require 'conjur/layer-api'
42
42
  require 'conjur/pubkeys-api'
43
43
  require 'conjur-api/version'
44
44
 
45
- class RestClient::Resource
46
- include Conjur::Escape
47
- include Conjur::LogSource
48
- include Conjur::Cast
49
- extend Conjur::BuildFromResponse
50
-
45
+ # Monkey patch RestClient::Request so it always uses
46
+ # :ssl_cert_store. (RestClient::Resource uses Request to send
47
+ # requests, so it sees :ssl_cert_store, too).
48
+ class RestClient::Request
51
49
  alias_method :initialize_without_defaults, :initialize
52
50
 
53
- def initialize url, options = nil, &block
54
- initialize_without_defaults url, default_options.merge(options || {}), &block
55
- end
56
-
57
- def default_options
51
+ def default_args
58
52
  {
59
53
  ssl_cert_store: OpenSSL::SSL::SSLContext::DEFAULT_CERT_STORE
60
54
  }
61
55
  end
62
56
 
57
+ def initialize args
58
+ initialize_without_defaults default_args.merge(args)
59
+ end
60
+
61
+ end
62
+
63
+
64
+ class RestClient::Resource
65
+ include Conjur::Escape
66
+ include Conjur::LogSource
67
+ include Conjur::Cast
68
+ extend Conjur::BuildFromResponse
69
+
63
70
  # @api private
64
71
  # @deprecated
65
72
  # The account used by the core service. This is deprecated in favor of {Conjur.account} and
data/lib/conjur/base.rb CHANGED
@@ -175,7 +175,7 @@ module Conjur
175
175
  # An optional IP address to be recorded in the audit record for any actions performed by this API instance.
176
176
  attr_reader :remote_ip
177
177
 
178
- #@!attribute [r] privilege
178
+ #@!attribute [rw] privilege
179
179
  # The optional global privilege (e.g. 'elevate' or 'reveal') which should be attempted on the request.
180
180
  attr_accessor :privilege
181
181
 
@@ -0,0 +1,47 @@
1
+ #
2
+ # Copyright (C) 2015 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
21
+
22
+ module Conjur
23
+ module CertUtils
24
+ CERT_RE = /-----BEGIN CERTIFICATE-----\n.*?\n-----END CERTIFICATE-----\n/m
25
+
26
+ class << self
27
+ # Parse X509 DER-encoded certificates from a string
28
+ # @param certs [String] certificate(s) to parse in DER form
29
+ # @return [Array<OpenSSL::X509::Certificate>] certificates contained in the string
30
+ def parse_certs certs
31
+ # fix any mangled namespace
32
+ certs = certs.gsub /\s+/, "\n"
33
+ certs.gsub! "-----BEGIN\nCERTIFICATE-----", '-----BEGIN CERTIFICATE-----'
34
+ certs.gsub! "-----END\nCERTIFICATE-----", '-----END CERTIFICATE-----'
35
+ certs += "\n" unless certs[-1] == "\n"
36
+
37
+ certs.scan(CERT_RE).map do |cert|
38
+ begin
39
+ OpenSSL::X509::Certificate.new cert
40
+ rescue OpenSSL::X509::CertificateError => exn
41
+ raise exn, "Invalid certificate:\n#{cert} (#{exn.message})"
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (C) 2013 Conjur Inc
2
+ # Copyright (C) 2013-2015 Conjur Inc
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
5
  # this software and associated documentation files (the "Software"), to deal in
@@ -20,6 +20,9 @@
20
20
  #
21
21
 
22
22
  require 'set'
23
+
24
+ require 'conjur/cert_utils'
25
+
23
26
  module Conjur
24
27
 
25
28
  class << self
@@ -409,7 +412,13 @@ module Conjur
409
412
  # @return [Boolean] whether a certificate was added to the store.
410
413
  def apply_cert_config! store=OpenSSL::SSL::SSLContext::DEFAULT_CERT_STORE
411
414
  if ssl_certificate
412
- add_cert_string store, ssl_certificate
415
+ CertUtils.parse_certs(ssl_certificate).each do |cert|
416
+ begin
417
+ store.add_cert cert
418
+ rescue OpenSSL::X509::StoreError => ex
419
+ raise unless ex.message == 'cert already in hash table'
420
+ end
421
+ end
413
422
  elsif cert_file
414
423
  store.add_file cert_file
415
424
  else
@@ -420,19 +429,6 @@ module Conjur
420
429
 
421
430
  private
422
431
 
423
- def add_cert_string store, str
424
- str = str.gsub(/\s+/, "\n")
425
- str.gsub!("-----BEGIN\n", "-----BEGIN ")
426
- str.gsub!("-----END\n", "-----END ")
427
- store.add_cert OpenSSL::X509::Certificate.new str
428
- rescue OpenSSL::X509::CertificateError => ex
429
- $stderr.puts "Invalid certificate:"
430
- $stderr.puts str
431
- raise ex
432
- rescue OpenSSL::X509::StoreError => ex
433
- raise ex unless ex.message == 'cert already in hash table'
434
- end
435
-
436
432
  def global_service_url(service_name, service_port_offset)
437
433
  if appliance_url
438
434
  URI.join(appliance_url + '/', service_name).to_s
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conjur::CertUtils do
4
+ describe '.parse_certs' do
5
+ let(:cert1_raw) do
6
+ """-----BEGIN CERTIFICATE-----
7
+ MIIDPjCCAiagAwIBAgIVAKW1gdmOFrXt6xB0iQmYQ4z8Pf+kMA0GCSqGSIb3DQEB
8
+ CwUAMD0xETAPBgNVBAoTCGN1Y3VtYmVyMRIwEAYDVQQLEwlDb25qdXIgQ0ExFDAS
9
+ BgNVBAMTC2N1a2UtbWFzdGVyMB4XDTE1MTAwNzE2MzAwNloXDTI1MTAwNDE2MzAw
10
+ NlowFjEUMBIGA1UEAwwLY3VrZS1tYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
11
+ DwAwggEKAoIBAQC9e8bGIHOLOypKA4lsLcAOcDLAq+ICuVxn9Vg0No0m32Ok/K7G
12
+ uEGtlC8RidObntblUwqdX2uP7mqAQm19j78UTl1KT97vMmmFrpVZ7oQvEm1FUq3t
13
+ FBmJglthJrSbpdZjLf7a7eL1NnunkfBdI1DK9QL9ndMjNwZNFbXhld4fC5zuSr/L
14
+ PxawSzTEsoTaB0Nw0DdRowaZgrPxc0hQsrj9OF20gTIJIYO7ctZzE/JJchmBzgI4
15
+ CdfAYg7zNS+0oc0ylV0CWMerQtLICI6BtiQ482bCuGYJ00NlDcdjd3w+A2cj7PrH
16
+ wH5UhtORL5Q6i9EfGGUCDbmfpiVD9Bd3ukbXAgMBAAGjXDBaMA4GA1UdDwEB/wQE
17
+ AwIFoDAdBgNVHQ4EFgQU2jmj7l5rSw0yVb/vlWAYkK/YBwkwKQYDVR0RBCIwIIIL
18
+ Y3VrZS1tYXN0ZXKCCWxvY2FsaG9zdIIGY29uanVyMA0GCSqGSIb3DQEBCwUAA4IB
19
+ AQBCepy6If67+sjuVnT9NGBmjnVaLa11kgGNEB1BZQnvCy0IN7gpLpshoZevxYDR
20
+ 3DnPAetQiZ70CSmCwjL4x6AVxQy59rRj0Awl9E1dgFTYI3JxxgLsI9ePdIRVEPnH
21
+ dhXqPY5ZIZhvdHlLStjsXX7laaclEtMeWfSzxe4AmP/Sm/er4ks0gvLQU6/XJNIu
22
+ RnRH59ZB1mZMsIv9Ii790nnioYFR54JmQu1JsIib77ZdSXIJmxAtraJSTLcZbU1E
23
+ +SM3XCE423Xols7onyluMYDy3MCUTFwoVMRBcRWCAk5gcv6XvZDfLi6Zwdne6x3Y
24
+ bGenr4vsPuSFsycM03/EcQDT
25
+ -----END CERTIFICATE-----
26
+ """
27
+ end
28
+ let(:cert2_raw) do
29
+ """-----BEGIN CERTIFICATE-----
30
+ MIIDhzCCAm+gAwIBAgIJAJnsrJ1+j9MhMA0GCSqGSIb3DQEBCwUAMD0xETAPBgNV
31
+ BAoTCGN1Y3VtYmVyMRIwEAYDVQQLEwlDb25qdXIgQ0ExFDASBgNVBAMTC2N1a2Ut
32
+ bWFzdGVyMB4XDTE1MTAwNzE2MzAwM1oXDTI1MTAwNDE2MzAwM1owPTERMA8GA1UE
33
+ ChMIY3VjdW1iZXIxEjAQBgNVBAsTCUNvbmp1ciBDQTEUMBIGA1UEAxMLY3VrZS1t
34
+ YXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsuZ06Ld4JDhxZ
35
+ FcxKVxu7MTjXVv6W8pI7qFKmgr39aNqmDpKYJ1H9aM+r9zaTAeithpM4wJpVswkJ
36
+ d0RSuKdm1LOx11yHLyZ1OvlPHFhsVWdZIQZ6R9srhPYBUCMem4sHR5IAcBBX+HkR
37
+ 35gaPYUl1uFV/9zCniekt92Kdta+it1WL7XinXTBURlhDawiD/kv1C9x6dICEJVe
38
+ IT/jRohmqHAoM/JSOQTthaDli3Qvu5K8XAx8UXvWVmv3eStZFVDbC4ZEueRd9KAe
39
+ 4IZ5FxdpFYkPBgt2lBYeydYKRShyYrDKye1uJBDkeplNaYW4cS4mOhYuRkdKn7MH
40
+ uY/xb1lFAgMBAAGjgYkwgYYwKQYDVR0RBCIwIIILY3VrZS1tYXN0ZXKCCWxvY2Fs
41
+ aG9zdIIGY29uanVyMB0GA1UdDgQWBBRHpGF7aQbHdORYgQKDC2hV6NzEKzAfBgNV
42
+ HSMEGDAWgBRHpGF7aQbHdORYgQKDC2hV6NzEKzAMBgNVHRMEBTADAQH/MAsGA1Ud
43
+ DwQEAwIB5jANBgkqhkiG9w0BAQsFAAOCAQEAGZT9Wek1hYluIVaxu03wSKCKIJ4p
44
+ KxTHw+mLDapg1y9t3Fa/5IQQK0Bx0xGU2qWiQKjda3vdFPJWO6l6XJvsUY5Nwtm5
45
+ Gcsk8l3L/zWCrjrFTH3TdVad5E+DTwVhThelmEjw68AyM+WuOL61j0MItd9mLW74
46
+ Lv2zouj9nQBdnUBHWQ0EL/9d5cfaCVu/bFlDfYt7Yj0IzXCuaWZfJeHodU1hmqVX
47
+ BvYRjnTB2LSxfmSnkrCeFPmhE11bWVtsLIdrGIgtEMX0/s9xg58QuNnva1U3pJsW
48
+ RjvSxre4Xg2qlI9Laybb4oZ4g6DI8hRbL0VdFAsveg6SXg2RxgJcXeJUFw==
49
+ -----END CERTIFICATE-----
50
+ """
51
+ end
52
+
53
+ let(:cert1) { OpenSSL::X509::Certificate.new cert1_raw }
54
+ let(:cert2) { OpenSSL::X509::Certificate.new cert2_raw }
55
+
56
+ it 'parses a certificate' do
57
+ expect(Conjur::CertUtils.parse_certs(cert1_raw).map(&:to_der))\
58
+ .to eq [cert1.to_der]
59
+ end
60
+
61
+ it 'parses two certificates' do
62
+ expect(Conjur::CertUtils.parse_certs(cert1_raw + cert2_raw).map(&:to_der))\
63
+ .to eq [cert1.to_der, cert2.to_der]
64
+ end
65
+
66
+ it 'parses the certificate correctly even if the whitespace is wrong' do
67
+ bad_whitespace = cert1_raw.gsub "\n", " "
68
+ expect(Conjur::CertUtils.parse_certs(bad_whitespace).map(&:to_der))\
69
+ .to eq [cert1.to_der]
70
+ end
71
+
72
+ it 'shows a bad cert in error message' do
73
+ bad_cert = "-----BEGIN CERTIFICATE-----\nfoo\n-----END CERTIFICATE-----\n"
74
+ expect do
75
+ Conjur::CertUtils.parse_certs(bad_cert)
76
+ end.to raise_error(OpenSSL::X509::CertificateError) do |exn|
77
+ expect(exn.message).to include bad_cert
78
+ end
79
+ end
80
+ end
81
+ end
@@ -238,7 +238,7 @@ describe Conjur::Configuration do
238
238
 
239
239
  context 'when both are given' do
240
240
  let(:cert_file){ '/path/to/cert.pem' }
241
- let(:ssl_certificate){ 'certificate-contents' }
241
+ let(:ssl_certificate){ "-----BEGIN CERTIFICATE-----\nfoo\n-----END CERTIFICATE-----\n" }
242
242
  let(:cert){ double('certificate') }
243
243
  it 'calls store.add_cert with a certificate created from ssl_certificate' do
244
244
  expect(OpenSSL::X509::Certificate).to receive(:new).with(ssl_certificate).once.and_return cert
@@ -320,5 +320,57 @@ CERT
320
320
  end
321
321
  end
322
322
 
323
+ context 'with two certificates in a string' do
324
+ let(:cert_file) { nil }
325
+ let(:ssl_certificate) do
326
+ """-----BEGIN CERTIFICATE-----
327
+ MIIDPjCCAiagAwIBAgIVAKW1gdmOFrXt6xB0iQmYQ4z8Pf+kMA0GCSqGSIb3DQEB
328
+ CwUAMD0xETAPBgNVBAoTCGN1Y3VtYmVyMRIwEAYDVQQLEwlDb25qdXIgQ0ExFDAS
329
+ BgNVBAMTC2N1a2UtbWFzdGVyMB4XDTE1MTAwNzE2MzAwNloXDTI1MTAwNDE2MzAw
330
+ NlowFjEUMBIGA1UEAwwLY3VrZS1tYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
331
+ DwAwggEKAoIBAQC9e8bGIHOLOypKA4lsLcAOcDLAq+ICuVxn9Vg0No0m32Ok/K7G
332
+ uEGtlC8RidObntblUwqdX2uP7mqAQm19j78UTl1KT97vMmmFrpVZ7oQvEm1FUq3t
333
+ FBmJglthJrSbpdZjLf7a7eL1NnunkfBdI1DK9QL9ndMjNwZNFbXhld4fC5zuSr/L
334
+ PxawSzTEsoTaB0Nw0DdRowaZgrPxc0hQsrj9OF20gTIJIYO7ctZzE/JJchmBzgI4
335
+ CdfAYg7zNS+0oc0ylV0CWMerQtLICI6BtiQ482bCuGYJ00NlDcdjd3w+A2cj7PrH
336
+ wH5UhtORL5Q6i9EfGGUCDbmfpiVD9Bd3ukbXAgMBAAGjXDBaMA4GA1UdDwEB/wQE
337
+ AwIFoDAdBgNVHQ4EFgQU2jmj7l5rSw0yVb/vlWAYkK/YBwkwKQYDVR0RBCIwIIIL
338
+ Y3VrZS1tYXN0ZXKCCWxvY2FsaG9zdIIGY29uanVyMA0GCSqGSIb3DQEBCwUAA4IB
339
+ AQBCepy6If67+sjuVnT9NGBmjnVaLa11kgGNEB1BZQnvCy0IN7gpLpshoZevxYDR
340
+ 3DnPAetQiZ70CSmCwjL4x6AVxQy59rRj0Awl9E1dgFTYI3JxxgLsI9ePdIRVEPnH
341
+ dhXqPY5ZIZhvdHlLStjsXX7laaclEtMeWfSzxe4AmP/Sm/er4ks0gvLQU6/XJNIu
342
+ RnRH59ZB1mZMsIv9Ii790nnioYFR54JmQu1JsIib77ZdSXIJmxAtraJSTLcZbU1E
343
+ +SM3XCE423Xols7onyluMYDy3MCUTFwoVMRBcRWCAk5gcv6XvZDfLi6Zwdne6x3Y
344
+ bGenr4vsPuSFsycM03/EcQDT
345
+ -----END CERTIFICATE-----
346
+ -----BEGIN CERTIFICATE-----
347
+ MIIDhzCCAm+gAwIBAgIJAJnsrJ1+j9MhMA0GCSqGSIb3DQEBCwUAMD0xETAPBgNV
348
+ BAoTCGN1Y3VtYmVyMRIwEAYDVQQLEwlDb25qdXIgQ0ExFDASBgNVBAMTC2N1a2Ut
349
+ bWFzdGVyMB4XDTE1MTAwNzE2MzAwM1oXDTI1MTAwNDE2MzAwM1owPTERMA8GA1UE
350
+ ChMIY3VjdW1iZXIxEjAQBgNVBAsTCUNvbmp1ciBDQTEUMBIGA1UEAxMLY3VrZS1t
351
+ YXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsuZ06Ld4JDhxZ
352
+ FcxKVxu7MTjXVv6W8pI7qFKmgr39aNqmDpKYJ1H9aM+r9zaTAeithpM4wJpVswkJ
353
+ d0RSuKdm1LOx11yHLyZ1OvlPHFhsVWdZIQZ6R9srhPYBUCMem4sHR5IAcBBX+HkR
354
+ 35gaPYUl1uFV/9zCniekt92Kdta+it1WL7XinXTBURlhDawiD/kv1C9x6dICEJVe
355
+ IT/jRohmqHAoM/JSOQTthaDli3Qvu5K8XAx8UXvWVmv3eStZFVDbC4ZEueRd9KAe
356
+ 4IZ5FxdpFYkPBgt2lBYeydYKRShyYrDKye1uJBDkeplNaYW4cS4mOhYuRkdKn7MH
357
+ uY/xb1lFAgMBAAGjgYkwgYYwKQYDVR0RBCIwIIILY3VrZS1tYXN0ZXKCCWxvY2Fs
358
+ aG9zdIIGY29uanVyMB0GA1UdDgQWBBRHpGF7aQbHdORYgQKDC2hV6NzEKzAfBgNV
359
+ HSMEGDAWgBRHpGF7aQbHdORYgQKDC2hV6NzEKzAMBgNVHRMEBTADAQH/MAsGA1Ud
360
+ DwQEAwIB5jANBgkqhkiG9w0BAQsFAAOCAQEAGZT9Wek1hYluIVaxu03wSKCKIJ4p
361
+ KxTHw+mLDapg1y9t3Fa/5IQQK0Bx0xGU2qWiQKjda3vdFPJWO6l6XJvsUY5Nwtm5
362
+ Gcsk8l3L/zWCrjrFTH3TdVad5E+DTwVhThelmEjw68AyM+WuOL61j0MItd9mLW74
363
+ Lv2zouj9nQBdnUBHWQ0EL/9d5cfaCVu/bFlDfYt7Yj0IzXCuaWZfJeHodU1hmqVX
364
+ BvYRjnTB2LSxfmSnkrCeFPmhE11bWVtsLIdrGIgtEMX0/s9xg58QuNnva1U3pJsW
365
+ RjvSxre4Xg2qlI9Laybb4oZ4g6DI8hRbL0VdFAsveg6SXg2RxgJcXeJUFw==
366
+ -----END CERTIFICATE-----
367
+ """
368
+ end
369
+
370
+ it 'adds both to the store' do
371
+ expect(store).to receive(:add_cert).twice
372
+ expect(subject).to be_truthy
373
+ end
374
+ end
323
375
  end
324
376
  end
@@ -30,6 +30,15 @@ describe RestClient::Request do
30
30
  end
31
31
  end
32
32
 
33
+ context 'default arguments' do
34
+ let(:cache) { nil }
35
+ let(:lazy) { false }
36
+ it "sets cert_store to OpenSSL's default cert store" do
37
+ request = RestClient::Request.new(method: 'GET', url: 'http://example.com')
38
+ expect(request.ssl_opts[:cert_store]).to eq(OpenSSL::SSL::SSLContext::DEFAULT_CERT_STORE)
39
+ end
40
+ end
41
+
33
42
  def reinit_mime_types!
34
43
  # pretend to initialize MIME::Types from scratch
35
44
  MIME::Types.instance_variable_set :@__types__, nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conjur-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.19.0
4
+ version: 4.19.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafal Rzepecki
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-28 00:00:00.000000000 Z
12
+ date: 2015-10-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -261,6 +261,7 @@ files:
261
261
  - lib/conjur/base.rb
262
262
  - lib/conjur/build_from_response.rb
263
263
  - lib/conjur/cast.rb
264
+ - lib/conjur/cert_utils.rb
264
265
  - lib/conjur/configuration.rb
265
266
  - lib/conjur/core-api.rb
266
267
  - lib/conjur/deputy.rb
@@ -308,6 +309,7 @@ files:
308
309
  - spec/lib/asset_spec.rb
309
310
  - spec/lib/audit_spec.rb
310
311
  - spec/lib/build_from_response_spec.rb
312
+ - spec/lib/cert_utils_spec.rb
311
313
  - spec/lib/configuration_spec.rb
312
314
  - spec/lib/deputy_spec.rb
313
315
  - spec/lib/exists_spec.rb
@@ -376,6 +378,7 @@ test_files:
376
378
  - spec/lib/asset_spec.rb
377
379
  - spec/lib/audit_spec.rb
378
380
  - spec/lib/build_from_response_spec.rb
381
+ - spec/lib/cert_utils_spec.rb
379
382
  - spec/lib/configuration_spec.rb
380
383
  - spec/lib/deputy_spec.rb
381
384
  - spec/lib/exists_spec.rb