class Snowden::Crypto
@api private
Attributes
cipher_spec[R]
iv[R]
key[R]
padding_size[R]
Public Class Methods
new(args)
click to toggle source
# File lib/snowden/crypto.rb, line 6 def initialize(args) @key = args.fetch(:key) @iv = args.fetch(:iv) @cipher_spec = args.fetch(:cipher_spec) @padding_size = args.fetch(:padding_size) end
Public Instance Methods
decrypt(data)
click to toggle source
# File lib/snowden/crypto.rb, line 13 def decrypt(data) cipher(:decrypt, data) end
encrypt(data)
click to toggle source
# File lib/snowden/crypto.rb, line 17 def encrypt(data) cipher(:encrypt, data) end
padded_decrypt(data)
click to toggle source
# File lib/snowden/crypto.rb, line 25 def padded_decrypt(data) decrypt(data)[padding_size..-1] end
padded_encrypt(data)
click to toggle source
# File lib/snowden/crypto.rb, line 21 def padded_encrypt(data) encrypt(OpenSSL::Random.random_bytes(padding_size) + data) end
Private Instance Methods
cipher(mode, data)
click to toggle source
# File lib/snowden/crypto.rb, line 33 def cipher(mode, data) c = symmetric_cipher c.public_send(mode) c.key = key c.iv = iv c.update(data) + c.final end
symmetric_cipher()
click to toggle source
# File lib/snowden/crypto.rb, line 42 def symmetric_cipher OpenSSL::Cipher::Cipher.new(cipher_spec) end