Commit 18cfc95

mokha <mokha@cisco.com>
2018-02-08 16:50:01
use is optional.
1 parent acd5382
Changed files (2)
lib/xml/kit/certificate.rb
@@ -4,12 +4,12 @@ module Xml
     class Certificate
       BEGIN_CERT=/-----BEGIN CERTIFICATE-----/
       END_CERT=/-----END CERTIFICATE-----/
-      # The use can be `:signing` or `:encryption`
+      # The use can be `:signing` or `:encryption`. Use `nil` for both.
       attr_reader :use
 
-      def initialize(value, use:)
+      def initialize(value, use: nil)
         @value = value
-        @use = use.downcase.to_sym
+        @use = use.nil? ? use : use.downcase.to_sym
       end
 
       # @return [Xml::Kit::Fingerprint] the certificate fingerprint.
@@ -22,6 +22,7 @@ module Xml
       # @param use [Symbol] `:signing` or `:encryption`.
       # @return [Boolean] true or false.
       def for?(use)
+        return true if self.use.nil?
         self.use == use.to_sym
       end
 
@@ -83,8 +84,7 @@ module Xml
 
       def self.to_x509(value)
         OpenSSL::X509::Certificate.new(Base64.decode64(value))
-      rescue OpenSSL::X509::CertificateError => error
-        ::Xml::Kit.logger.warn(error)
+      rescue OpenSSL::X509::CertificateError
         OpenSSL::X509::Certificate.new(value)
       end
 
spec/xml/certificate_spec.rb
@@ -25,6 +25,15 @@ RSpec.describe Xml::Kit::Certificate do
       expect(subject).to be_encryption
       expect(subject).to_not be_signing
     end
+
+    it 'returns true when it is for both' do
+      subject = described_class.new(certificate)
+      expect(subject.for?(:encryption)).to be_truthy
+      expect(subject.for?(:signing)).to be_truthy
+
+      expect(subject).to be_encryption
+      expect(subject).to be_signing
+    end
   end
 
   describe "equality" do