Sha256: dacce74a00e2353c4db83a7fb566ce74d6b4ecce7ba83fe3f776a7bbc19ee110
Contents?: true
Size: 1.71 KB
Versions: 2
Compression:
Stored size: 1.71 KB
Contents
# decrypts strings using supplied decryption settings class Decrypt # decrypts a string with openssl def self.openssl(settings) require 'openssl' # check tag size raise 'Tag is not 16 bytes.' unless settings[:tag].bytesize == 16 # setup the decryption parameters decipher = OpenSSL::Cipher.new('aes-256-gcm').decrypt decipher.key = settings[:key] decipher.iv = settings[:nonce] decipher.auth_tag = settings[:tag] decipher.auth_data = settings.key?(:pw) ? settings[:pw] : '' # output the decryption if settings[:ui] == :cli # output to file File.write("#{settings[:outdir]}decrypted.txt", decipher.update(settings[:file]) + decipher.final) puts "Your decrypted.txt has been written out to #{settings[:outdir]}." elsif settings[:ui] == :api # output to string decipher.update(settings[:file]) + decipher.final end end # decrypts a string with gpgme def self.gpgme(settings) require 'gpgme' # check if GPGHOME env was set puts "Environment variable 'GNUPGHOME' was not set. Files in #{ENV['HOME']}/.gnupg will be used for authentication." unless ENV['GNUPGHOME'] # setup the decryption parameters encrypted = GPGME::Data.new(settings[:file]) crypto = GPGME::Crypto.new(armor: true, pinentry_mode: GPGME::PINENTRY_MODE_LOOPBACK) # output the decryption if settings[:ui] == :cli # output to file File.write("#{settings[:outdir]}decrypted.txt", crypto.decrypt(encrypted, password: settings[:pw]).read) puts "Your decrypted.txt has been written out to #{settings[:outdir]}." elsif settings[:ui] == :api # output to string crypto.decrypt(encrypted, password: settings[:pw]).read end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rapid-vaults-1.1.2 | lib/rapid-vaults/decrypt.rb |
rapid-vaults-1.1.1 | lib/rapid-vaults/decrypt.rb |