Sha256: 92da50c8afa57a5423f1cd5c16f52fbedfa389622ef026ee96f335a69c1eaac0
Contents?: true
Size: 1.26 KB
Versions: 3
Compression:
Stored size: 1.26 KB
Contents
require 'openssl' require 'base64' module Eligible class Lockbox < APIResource def self.get(params, api_key = nil) send_request(:get, api_url('lockboxes', params, :lockbox_id), api_key, params, :lockbox_id) end def self.all(params, api_key = nil) send_request(:get, api_url('lockboxes'), api_key, **params) 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, api_key = nil) private_key = extract_private_key(params) delete_private_key!(params) req = get(params, api_key).to_hash decrypt_data(req[:encrypted_data], req[:encrypted_key], private_key) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
eligible-3.0.2 | lib/eligible/lockbox.rb |
eligible-3.0.1 | lib/eligible/lockbox.rb |
eligible-3.0.0 | lib/eligible/lockbox.rb |