Class: Generate

Inherits:
Object
  • Object
show all
Defined in:
lib/rapid-vaults/generate.rb

Overview

generates files necessary for encryption and decryption

Class Method Summary collapse

Class Method Details

.gpgme(settings) ⇒ Object

generates a private and public key



22
23
24
25
26
27
28
29
30
31
# File 'lib/rapid-vaults/generate.rb', line 22

def self.gpgme(settings)
  require 'gpgme'

  # ensure we have a place to store these output files
  raise 'Environment variable GNUPGHOME was not set.' unless ENV['GNUPGHOME']

  # create gpg keys
  GPGME::Ctx.new.generate_key(settings[:gpgparams], nil, nil)
  puts "Your GPG keys have been generated in #{ENV['GNUPGHOME']}." if settings[:ui] == :cli
end

.openssl(settings) ⇒ Object

generates a key and nonce



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/rapid-vaults/generate.rb', line 4

def self.openssl(settings)
  require 'openssl'

  # setup parameters
  cipher = OpenSSL::Cipher.new('aes-256-gcm').encrypt

  if settings[:ui] == :cli
    # output to file
    File.write('key.txt', cipher.random_key)
    File.write('nonce.txt', cipher.random_iv)
    puts 'Your key.txt and nonce.txt have been generated in your current directory.'
  elsif settings[:ui] == :api
    # output to string
    [cipher.random_key, cipher.random_iv]
  end
end