Commit 1184ee2

mokha <mo@mokhan.ca>
2019-04-20 17:40:53
raise error for unsupported key types
1 parent a5b254d
Changed files (2)
lib
spec
lib/xml/kit/key_info.rb
@@ -63,7 +63,7 @@ module Xml
         when OpenSSL::PKey::RSA
           "#{::Xml::Kit::Namespaces::XMLENC}rsa-1_5"
         else
-          raise 'unsupported key type'
+          raise ::Xml::Kit::Error, "#{key.try(:class)} is not supported"
         end
       end
     end
spec/xml/kit/key_info_spec.rb
@@ -7,6 +7,25 @@ RSpec.describe Xml::Kit::KeyInfo do
     specify { expect(Hash.from_xml(subject.to_xml)).not_to be_empty }
     specify { expect { subject.asymmetric_cipher }.to raise_error(/encryption_certificate is not specified/) }
 
+    context 'when using a DSA key' do
+      subject { described_class.new(x509: x509) }
+
+      let(:x509) do
+        certificate = OpenSSL::X509::Certificate.new
+        certificate.subject = certificate.issuer = OpenSSL::X509::Name.parse(Xml::Kit::SelfSignedCertificate::SUBJECT)
+        certificate.not_before = Time.now
+        certificate.not_after = certificate.not_before + 30 * 24 * 60 * 60
+        certificate.public_key = public_key
+        certificate.serial = 0x0
+        certificate.version = 2
+        certificate
+      end
+      let(:public_key) { private_key.public_key }
+      let(:private_key) { OpenSSL::PKey::DSA.new(2048) }
+
+      specify { expect { subject.asymmetric_cipher }.to raise_error(/OpenSSL::PKey::DSA is not supported/) }
+    end
+
     context 'with encrypted key' do
       let(:encrypted_key) { ::Xml::Kit::EncryptedKey.new(id: id, asymmetric_cipher: asymmetric_cipher, symmetric_cipher: symmetric_cipher) }
       let(:symmetric_cipher) { ::Xml::Kit::Crypto::SymmetricCipher.new }