class Passman::Crypto

Constants

MINIMUM_SIZE_KEY

Public Class Methods

decrypt(encrypted_password, key) click to toggle source
# File lib/passman/crypto.rb, line 17
def decrypt(encrypted_password, key)
  cipher = new_cipher
  cipher.decrypt
  cipher.key = sanitize_key(key)
  decrypted_password = cipher.update(Base64.decode64(encrypted_password))
  decrypted_password << cipher.final
end
encrypt(password, key) click to toggle source
# File lib/passman/crypto.rb, line 9
def encrypt(password, key)
  cipher = new_cipher
  cipher.encrypt
  cipher.key = sanitize_key(key)
  encrypted_password = cipher.update(password) + cipher.final
  Base64.encode64(encrypted_password)
end

Private Class Methods

new_cipher() click to toggle source
# File lib/passman/crypto.rb, line 27
def new_cipher
  OpenSSL::Cipher::AES.new(256, 'CBC')
end
sanitize_key(key) click to toggle source
# File lib/passman/crypto.rb, line 31
def sanitize_key(key)
  raise ArgumentError, 'No key provided.' if key.nil? || key.empty?
  sanitized = key
  sanitized += key while sanitized.length < MINIMUM_SIZE_KEY
  sanitized
end