main
1# frozen_string_literal: true
2
3RSpec.describe Xml::Kit::KeyPair do
4 let(:certificate) do
5 certificate = OpenSSL::X509::Certificate.new
6 certificate.public_key = key.public_key
7 certificate.not_before = 1.day.ago
8 certificate.not_after = 1.second.ago
9 certificate
10 end
11 let(:key) { OpenSSL::PKey::RSA.new(2048) }
12 let(:passphrase) { 'secret' }
13
14 context 'when the passphrase is empty' do
15 subject { described_class.new(certificate.to_pem, key.export, '', :signing) }
16
17 specify { expect { subject }.not_to raise_error }
18 specify { expect(subject).to be_for(:signing) }
19 specify { expect(subject).not_to be_for(:encryption) }
20 end
21
22 it 'decrypts encrypted private keys' do
23 encrypted_key = key.export(OpenSSL::Cipher.new('AES-256-CBC'), passphrase)
24 expect do
25 described_class.new(certificate.to_pem, encrypted_key, passphrase, :signing)
26 end.not_to raise_error
27 end
28end