Class: ED25519
- Inherits:
-
Object
- Object
- ED25519
- Defined in:
- lib/ed25519_lib.rb
Class Method Summary collapse
-
.get_public_key_from_seed(seed) ⇒ String
Get ED25519 public key.
-
.keypair_from_seed(seed) ⇒ Class
Generate ED25519 keypair.
-
.sign(message, key_pair) ⇒ String
Sign the given message.
-
.verify(address, message, signature_result) ⇒ String
Verify the sign result.
Class Method Details
.get_public_key_from_seed(seed) ⇒ String
Get ED25519 public key
72 73 74 75 |
# File 'lib/ed25519_lib.rb', line 72 def self.get_public_key_from_seed(seed) signing_key = self.keypair_from_seed(seed) return signing_key.verify_key.to_bytes.unpack1('H*') end |
.keypair_from_seed(seed) ⇒ Class
Generate ED25519 keypair
55 56 57 58 59 60 61 62 |
# File 'lib/ed25519_lib.rb', line 55 def self.keypair_from_seed(seed) if seed.start_with?("0x") seed = seed.sub(/0x/, "") end seed = "".tap { |binary| seed.scan(/../) { |hn| binary << hn.to_i(16).chr } } signing_key = Ed25519::SigningKey.new(seed) return signing_key end |
.sign(message, key_pair) ⇒ String
Sign the given message
14 15 16 |
# File 'lib/ed25519_lib.rb', line 14 def self.sign(, key_pair) "0x" + key_pair.sign().unpack1("H*") end |
.verify(address, message, signature_result) ⇒ String
Verify the sign result
32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/ed25519_lib.rb', line 32 def self.verify(address, , signature_result) if signature_result.start_with?("0x") signature_result = signature_result.sub(/0x/, "") end signature = [signature_result].pack("H*") public_key = Address.decode(address) verify_key_bytes = [public_key].pack("H*") verify_key = Ed25519::VerifyKey.new(verify_key_bytes) begin verify_key.verify(signature, ) rescue return false end end |