Sha256: ef28e68a3509e7968ec270b0baa5e210adc06b7b1a62e11247ad18b6387bd5ec
Contents?: true
Size: 1.2 KB
Versions: 4
Compression:
Stored size: 1.2 KB
Contents
require 'base64' require_relative 'configuration' module Sym # {Sym::CipherHandler} contains cipher-related utilities necessary to create # ciphers, and seed them with the salt or iV vector. It also defines the # internal structure {Sym::CipherHandler::CipherStruct} which is a key # struct used in constructing cipher and saving it with the data packet. module CipherHandler CREATE_CIPHER = ->(name) { ::OpenSSL::Cipher.new(name) } CipherStruct = Struct.new(:cipher, :iv, :salt) def create_cipher(direction:, cipher_name:, iv: nil, salt: nil) cipher = new_cipher(cipher_name) cipher.send(direction) iv ||= cipher.random_iv cipher.iv = iv CipherStruct.new(cipher, iv, salt) end def new_cipher(cipher_name) CREATE_CIPHER.call(cipher_name) end def update_cipher(cipher, value) data = cipher.update(value) data << cipher.final data end module ClassMethods def create_private_key key = CREATE_CIPHER.call(Sym::Configuration.property(:private_key_cipher)).random_key ::Base64.urlsafe_encode64(key) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
sym-2.0.3 | lib/sym/cipher_handler.rb |
sym-2.0.2 | lib/sym/cipher_handler.rb |
sym-2.0.1 | lib/sym/cipher_handler.rb |
sym-2.0.0 | lib/sym/cipher_handler.rb |