Sha256: 64ffd5ead25dc4f85e108ef321543d35fb4781e1b4fcc76fe3141d007f971f0f

Contents?: true

Size: 789 Bytes

Versions: 3

Compression:

Stored size: 789 Bytes

Contents

module Envault
  module Cryptor
    class Kms
      def initialize(profile)
        require 'aws-sdk'
        options = {}
        options[:region] = profile[:region] if profile[:region]
        options[:access_key_id] = profile[:aws_access_key_id] if profile[:aws_access_key_id]
        options[:secret_access_key] = profile[:aws_secret_access_key] if profile[:aws_secret_access_key]
        @client = Aws::KMS::Client.new(options)
        @key_id = profile[:key_id]
      end

      def encrypt(value)
        resp = @client.encrypt(key_id: @key_id, plaintext: value)
        Base64.strict_encode64(resp.ciphertext_blob)
      end

      def decrypt(value)
        resp = @client.decrypt(ciphertext_blob: Base64.strict_decode64(value))
        resp.plaintext
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
envault-0.2.2 lib/envault/cryptor/kms.rb
envault-0.2.1 lib/envault/cryptor/kms.rb
envault-0.2.0 lib/envault/cryptor/kms.rb