Sha256: d3773c61dca5307eb41dd372b2e4cc29bf3cc34ba1a382dcaa927c332d2063a0

Contents?: true

Size: 1.26 KB

Versions: 27

Compression:

Stored size: 1.26 KB

Contents

require 'openssl'
require 'base64'

module Eligible
  class Lockbox < APIResource
    def self.get(params, opts = {})
      send_request :get, api_url('lockboxes', params, :lockbox_id), params, opts.merge(required_params: [:lockbox_id])
    end

    def self.all(params, opts = {})
      send_request :get, api_url('lockboxes'), params, opts
    end

    def self.extract_private_key(params)
      private_key = Util.value(params, :private_key)
      fail ArgumentError, "Private key is required for decryption" if private_key.nil?
      private_key
    end

    def self.delete_private_key!(params)
      params.delete('private_key')
      params.delete(:private_key)
    end

    def self.decrypt_data(data, encrypted_data_key, private_key)
      pkey = OpenSSL::PKey::RSA.new(private_key)
      aes_key = pkey.private_decrypt(Base64.decode64(encrypted_data_key))
      sha_key = Digest::SHA256.hexdigest(aes_key)
      Encryptor.decrypt(value: Base64.decode64(data), key: sha_key, insecure_mode: true)
    end

    def self.get_and_decrypt_from_lockbox(params, opts = {})
      private_key = extract_private_key(params)
      delete_private_key!(params)
      req = get(params, opts).to_hash
      decrypt_data(req[:encrypted_data], req[:encrypted_key], private_key)
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
eligible-3.0.0.beta28 lib/eligible/lockbox.rb
eligible-3.0.0.beta27 lib/eligible/lockbox.rb
eligible-3.0.0.beta26 lib/eligible/lockbox.rb
eligible-3.0.0.beta25 lib/eligible/lockbox.rb
eligible-3.0.0.beta24 lib/eligible/lockbox.rb
eligible-3.0.0.beta23 lib/eligible/lockbox.rb
eligible-3.0.0.beta22 lib/eligible/lockbox.rb
eligible-3.0.0.beta20 lib/eligible/lockbox.rb
eligible-3.0.0.beta19 lib/eligible/lockbox.rb
eligible-3.0.0.beta18 lib/eligible/lockbox.rb
eligible-3.0.0.beta17 lib/eligible/lockbox.rb
eligible-3.0.0.beta16 lib/eligible/lockbox.rb
eligible-3.0.0.beta15 lib/eligible/lockbox.rb
eligible-3.0.0.beta14 lib/eligible/lockbox.rb
eligible-3.0.0.beta13 lib/eligible/lockbox.rb
eligible-3.0.0.beta12 lib/eligible/lockbox.rb
eligible-3.0.0.beta11 lib/eligible/lockbox.rb
eligible-3.0.0.beta10 lib/eligible/lockbox.rb
eligible-3.0.0.beta9 lib/eligible/lockbox.rb
eligible-3.0.0.beta8 lib/eligible/lockbox.rb