module Interapp::Cryptography
Public Class Methods
generate_keypair()
click to toggle source
# File lib/interapp/cryptography.rb, line 3 def self.generate_keypair private_key = 1 + SecureRandom.random_number(group.order - 1) public_key = group.generator.multiply_by_scalar(private_key) public_key_binary = ECDSA::Format::PointOctetString.encode(public_key, compression: true) return private_key.to_s(16), public_key_binary.unpack('H*').first end
sign(payload, private_key_binary)
click to toggle source
# File lib/interapp/cryptography.rb, line 10 def self.sign(payload, private_key_binary) digest = Digest::SHA2.digest(payload) signature = nil while signature.nil? temp_key = 1 + SecureRandom.random_number(group.order - 1) signature = ECDSA.sign(group, private_key_binary, digest, temp_key) end ECDSA::Format::SignatureDerString.encode(signature) end
verify(payload, signature_decoded, public_key_decoded)
click to toggle source
# File lib/interapp/cryptography.rb, line 20 def self.verify(payload, signature_decoded, public_key_decoded) digest = Digest::SHA2.digest(payload) ECDSA.valid_signature?(public_key_decoded, digest, signature_decoded) end
Private Class Methods
group()
click to toggle source
# File lib/interapp/cryptography.rb, line 26 def self.group Interapp::EC_GROUP end