module E3DB::Crypto
Private Instance Methods
base64decode(x)
click to toggle source
# File lib/e3db/crypto.rb, line 48 def base64decode(x) Base64.urlsafe_decode64(x) end
base64encode(x)
click to toggle source
# File lib/e3db/crypto.rb, line 44 def base64encode(x) Base64.urlsafe_encode64(x, padding: false) end
box_random_nonce()
click to toggle source
# File lib/e3db/crypto.rb, line 36 def box_random_nonce RbNaCl::Random.random_bytes(RbNaCl::Box.nonce_bytes) end
decode_private_key(s)
click to toggle source
# File lib/e3db/crypto.rb, line 28 def decode_private_key(s) RbNaCl::PrivateKey.new(base64decode(s)) end
decode_public_key(s)
click to toggle source
# File lib/e3db/crypto.rb, line 20 def decode_public_key(s) RbNaCl::PublicKey.new(base64decode(s)) end
decrypt_box(encrypted, pub, priv)
click to toggle source
# File lib/e3db/crypto.rb, line 52 def decrypt_box(encrypted, pub, priv) pub = decode_public_key(pub) unless pub.is_a? RbNaCl::PublicKey priv = decode_private_key(priv) unless priv.is_a? RbNaCl::PrivateKey ciphertext, nonce = encrypted.split('.', 2).map { |f| base64decode(f) } RbNaCl::Box.new(pub, priv).decrypt(nonce, ciphertext) end
encode_private_key(k)
click to toggle source
# File lib/e3db/crypto.rb, line 32 def encode_private_key(k) base64encode(k.to_bytes) end
encode_public_key(k)
click to toggle source
# File lib/e3db/crypto.rb, line 24 def encode_public_key(k) base64encode(k.to_bytes) end
encrypt_box(plain, pub, priv)
click to toggle source
# File lib/e3db/crypto.rb, line 60 def encrypt_box(plain, pub, priv) pub = decode_public_key(pub) unless pub.is_a? RbNaCl::PublicKey priv = decode_private_key(priv) unless priv.is_a? RbNaCl::PrivateKey nonce = box_random_nonce encrypted = RbNaCl::Box.new(pub, priv).encrypt(nonce, plain) [encrypted, nonce].map { |f| base64encode(f) }.join(".") end
new_access_key()
click to toggle source
Create a new, random access key. Returns a string of bytes representing the key.
# File lib/e3db/crypto.rb, line 14 def new_access_key RbNaCl::Random.random_bytes(RbNaCl::SecretBox.key_bytes) end
Also aliased as: new_data_key
secret_box_random_nonce()
click to toggle source
# File lib/e3db/crypto.rb, line 40 def secret_box_random_nonce RbNaCl::Random.random_bytes(RbNaCl::SecretBox.nonce_bytes) end