Module: Interapp::Cryptography

Defined in:
lib/interapp/cryptography.rb

Class Method Summary collapse

Class Method Details

.generate_keypairObject



3
4
5
6
7
8
# 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) ⇒ Object



10
11
12
13
14
15
16
17
18
# 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) ⇒ Object



20
21
22
23
# 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