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



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

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.fetch('GNUPGHOME', false)

  # create gpg keys
  GPGME::Ctx.new.generate_key(settings[:gpgparams], nil, nil)
  puts "Your GPG keys have been generated in #{ENV.fetch('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
20
# File 'lib/rapid-vaults/generate.rb', line 4

def self.openssl(settings)
  require 'openssl'

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

  case settings[:ui]
  when :cli
    # output to file
    File.write("#{settings[:outdir]}key.txt", cipher.random_key)
    File.write("#{settings[:outdir]}nonce.txt", cipher.random_iv)
    puts "Your key.txt and nonce.txt have been generated in #{settings[:outdir]}."
  when :api
    # return as array
    [cipher.random_key, cipher.random_iv]
  end
end