class Trocla::Encryptions::Ssl

Public Instance Methods

decrypt(value) click to toggle source
# File lib/trocla/encryptions/ssl.rb, line 13
def decrypt(value)
  plaintext = ''
  value.split(/\n/).each do |line|
    plaintext += private_key.private_decrypt(Base64.decode64(line)) if line
  end
  plaintext
end
encrypt(value) click to toggle source
# File lib/trocla/encryptions/ssl.rb, line 5
def encrypt(value)
  ciphertext = ''
  value.scan(/.{0,#{chunksize}}/m).each do |chunk|
    ciphertext += Base64.encode64(public_key.public_encrypt(chunk)).gsub("\n",'')+"\n" if chunk
  end
  ciphertext
end

Private Instance Methods

chunksize() click to toggle source
# File lib/trocla/encryptions/ssl.rb, line 23
def chunksize
    public_key.n.num_bytes - 11
end
option(key) click to toggle source
# File lib/trocla/encryptions/ssl.rb, line 41
def option(key)
  config[key]
end
private_key() click to toggle source
# File lib/trocla/encryptions/ssl.rb, line 27
def private_key
    @private_key ||= begin
      file = require_option(:private_key)
      OpenSSL::PKey::RSA.new(File.read(file), nil)
    end
end
public_key() click to toggle source
# File lib/trocla/encryptions/ssl.rb, line 34
def public_key
    @public_key ||= begin
      file = require_option(:public_key)
      OpenSSL::PKey::RSA.new(File.read(file), nil)
    end
end
require_option(key) click to toggle source
# File lib/trocla/encryptions/ssl.rb, line 45
def require_option(key)
  val = option(key)
  raise "Config error: 'ssl_options' => :#{key} is not defined" if val.nil?
  val
end