Sha256: 450c75f8da7bee1d8e41b21a2b2598db60dca66a9f6f927e703cdab68ebbcd03

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 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
        cipher = Crypto.cipher_for(asymmetric_algorithm, public_key)
        @asymmetric_cipher_value = Base64.encode64(cipher.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

1 entries across 1 versions & 1 rubygems

Version Path
xml-kit-0.1.14 lib/xml/kit/encryption.rb