Module: Interapp::Cryptography
- Defined in:
- lib/interapp/cryptography.rb
Class Method Summary collapse
- .generate_keypair ⇒ Object
- .sign(payload, private_key_binary) ⇒ Object
- .verify(payload, signature_decoded, public_key_decoded) ⇒ Object
Class Method Details
.generate_keypair ⇒ Object
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 |