Sha256: fc51df641e8783c48e0cfcf99080213e133f66047bd82c18e9c0b0efe75baf3e

Contents?: true

Size: 1.92 KB

Versions: 2

Compression:

Stored size: 1.92 KB

Contents

require 'base64'

module InlineEncryption

  module Base


    # @param [String] data encryption target
    # @return [String] encrypted target
    # @raise [EncryptionFailureError] couldn't encrypt the target
    def encrypt!(data)
      config.check_required_variables

      begin
        encrypted = config.real_key.public_encrypt(data)
        converted = Base64.encode64(encrypted)
      rescue => e
        err = EncryptionFailureError.exception I18n.t('target', data: data)
        raise err
      end
    end


    # @param [String] data encryption target
    # @return [String] encrypted target, or fail_text on error (default data)
    def encrypt(data, fail_text=nil)
      config.check_required_variables

      begin
        encrypt!(data)
      rescue EncryptionFailureError => e
        return fail_text.nil? ? data : fail_text.to_s
      end
    end


    # @param [String] data decryption target
    # @return [String] decrypted target
    # @raise [DecryptionFailureError] couldn't decrypt the target
    def decrypt!(data)
      config.check_required_variables
      raise MisconfigurationError.new(I18n.t('error.pub_key_decrypt')) unless config.real_key.private?

      begin
        converted = Base64.decode64(data)
        decrypted = config.real_key.private_decrypt(converted)
      rescue => e
        err = DecryptionFailureError.exception I18n.t('encrypted', data)
        raise err
      end
    end


    # @param [String] data decryption target
    # @param [String] fail_text text to be returned in the case of a decryption failure
    # @return [String] decrypted target
    def decrypt(data, fail_text=nil)
      config.check_required_variables

      begin
        decrypt!(data)
      rescue DecryptionFailureError => e
        return fail_text.nil? ? data : fail_text.to_s
      end
    end


    # @return [InlineEncryption::Config] the configuration instance
    def config
      @config ||= Config.new
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
inline_encryption-2.0.1 lib/inline_encryption/base.rb
inline_encryption-2.0.0 lib/inline_encryption/base.rb