Sha256: 631e1c521eb8684c8b5bfb7dfbc77d979824f919a698089425d3335061466d50

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 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.private_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

      begin
        converted = Base64.decode64(data)
        this_key = config.real_key.private? ? config.real_key.public_key : config.real_key
        decrypted = this_key.public_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

1 entries across 1 versions & 1 rubygems

Version Path
inline_encryption-1.0.5 lib/inline_encryption/base.rb