class Ncipher::Ncipher
Public Class Methods
decrypt(cyphertext_b64)
click to toggle source
# File lib/ncipher.rb, line 38 def self.decrypt(cyphertext_b64) Ncipher.new.decrypt cyphertext_b64 end
encrypt(plaintext)
click to toggle source
# File lib/ncipher.rb, line 42 def self.encrypt(plaintext) Ncipher.new.encrypt plaintext end
generate_key()
click to toggle source
# File lib/ncipher.rb, line 46 def self.generate_key Ncipher.new.generate_key end
key()
click to toggle source
# File lib/ncipher.rb, line 50 def self.key Ncipher.new.key end
key_b64()
click to toggle source
# File lib/ncipher.rb, line 54 def self.key_b64 Ncipher.new.key_b64 end
new(key_filename: '.ncipher_key')
click to toggle source
# File lib/ncipher.rb, line 11 def initialize(key_filename: '.ncipher_key') @key_filename = key_filename end
Public Instance Methods
decrypt(ciphertext_b64)
click to toggle source
# File lib/ncipher.rb, line 15 def decrypt(ciphertext_b64) box.decrypt(Base64.strict_decode64(ciphertext_b64.strip)) end
encrypt(plaintext)
click to toggle source
# File lib/ncipher.rb, line 19 def encrypt(plaintext) Base64.strict_encode64(box.encrypt(plaintext)) end
generate_key()
click to toggle source
# File lib/ncipher.rb, line 23 def generate_key generated_key = RbNaCl::Random.random_bytes(RbNaCl::SecretBox.key_bytes) Base64.strict_encode64(generated_key) end
key()
click to toggle source
# File lib/ncipher.rb, line 28 def key saved_key = ENV['NCIPHER_KEY'] || find_keyfile abort "Can't find .ncipher_key file or NCIPHER_KEY env variable" if saved_key.nil? Base64.strict_decode64(saved_key.strip) end
key_b64()
click to toggle source
# File lib/ncipher.rb, line 34 def key_b64 Base64.strict_encode64 key end
Private Instance Methods
box()
click to toggle source
# File lib/ncipher.rb, line 59 def box RbNaCl::SimpleBox.from_secret_key(key) end
find_keyfile(folder: '.')
click to toggle source
# File lib/ncipher.rb, line 63 def find_keyfile(folder: '.') path = "#{folder}/#{@key_filename}" return File.read(path) if File.exist?(path) return nil if folder == '/' folder = File.expand_path("#{folder}/../") find_keyfile(folder: folder) end