class Epics::Key
Attributes
key[RW]
Public Class Methods
new(encoded_key, passphrase = nil)
click to toggle source
# File lib/epics/key.rb, line 4 def initialize(encoded_key, passphrase = nil) if encoded_key.kind_of?(OpenSSL::PKey::RSA) self.key = encoded_key else self.key = OpenSSL::PKey::RSA.new(encoded_key) end end
Public Instance Methods
digester()
click to toggle source
# File lib/epics/key.rb, line 43 def digester @digester ||= OpenSSL::Digest::SHA256.new end
e()
click to toggle source
# File lib/epics/key.rb, line 28 def e self.key.e.to_s(16) end
n()
click to toggle source
# File lib/epics/key.rb, line 24 def n self.key.n.to_s(16) end
public_digest()
click to toggle source
concat the exponent and modulus (hex representation) with a single whitespace remove leading zeros from both calculate digest (SHA256) encode as Base64
# File lib/epics/key.rb, line 18 def public_digest c = [ e.gsub(/^0*/,''), n.gsub(/^0*/,'') ].map(&:downcase).join(" ") Base64.encode64(digester.digest(c)).strip end
sign(msg)
click to toggle source
# File lib/epics/key.rb, line 32 def sign(msg) Base64.encode64( key.sign_pss( 'SHA256', msg, salt_length: :digest, mgf1_hash: 'SHA256', ), ).gsub("\n", '') end