Sha256: 2004ce3dceb24b3ab39b5fdb3dce2b15b4f5f66c60eb7fb3893108423ede292a

Contents?: true

Size: 1.06 KB

Versions: 2

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Xml
  module Kit
    class Encryption
      attr_reader :asymmetric_algorithm
      attr_reader :asymmetric_cipher_value
      attr_reader :symmetric_algorithm
      attr_reader :symmetric_cipher_value

      def initialize(
        raw_xml,
        public_key,
        symmetric_algorithm: ::Xml::Kit::Crypto::SymmetricCipher::DEFAULT_ALGORITHM,
        asymmetric_algorithm: ::Xml::Kit::Crypto::RsaCipher::ALGORITHM
      )
        @symmetric_algorithm = symmetric_algorithm
        @symmetric_cipher_value = Base64.encode64(symmetric_cipher.encrypt(raw_xml)).delete("\n")

        @asymmetric_algorithm = asymmetric_algorithm
        @asymmetric_cipher_value = Base64.encode64(public_key.public_encrypt(symmetric_cipher.key)).delete("\n")
      end

      def to_xml(xml: ::Builder::XmlMarkup.new)
        ::Xml::Kit::Template.new(self).to_xml(xml: xml)
      end

      private

      def symmetric_cipher
        @symmetric_cipher ||= ::Xml::Kit::Crypto::SymmetricCipher.new(
          symmetric_algorithm
        )
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xml-kit-0.1.13 lib/xml/kit/encryption.rb
xml-kit-0.1.12 lib/xml/kit/encryption.rb