Sha256: f4eccdfb000d47650ac67769dbddb231b17a2bdc999a6c3ce2c0f862fb962150

Contents?: true

Size: 788 Bytes

Versions: 2

Compression:

Stored size: 788 Bytes

Contents

# frozen_string_literal: true

module Xml
  module Kit
    module Crypto
      class OaepCipher
        ALGORITHM = "#{::Xml::Kit::Namespaces::XMLENC}rsa-oaep-mgf1p".freeze
        ALGORITHMS = {
          ALGORITHM => true
        }.freeze
        attr_reader :algorithm, :key

        def initialize(algorithm, key)
          @algorithm = algorithm
          @key = key
        end

        def self.matches?(algorithm)
          ALGORITHMS[algorithm]
        end

        def encrypt(plain_text)
          @key.public_encrypt(plain_text, padding)
        end

        def decrypt(cipher_text)
          @key.private_decrypt(cipher_text, padding)
        end

        private

        def padding
          OpenSSL::PKey::RSA::PKCS1_OAEP_PADDING
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xml-kit-0.3.1 lib/xml/kit/crypto/oaep_cipher.rb
xml-kit-0.3.0 lib/xml/kit/crypto/oaep_cipher.rb