Created
August 4, 2018 06:13
-
-
Save kannapoix/c67b150beda43e518376bb3e34a6dd67 to your computer and use it in GitHub Desktop.
ed25519 signature in ruby
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'ed25519' | |
payload = 'plain text' | |
# generate key pair | |
signing_key = Ed25519::SigningKey.generate | |
verify_key = signing_key.verify_key | |
p signing_key | |
p verify_key | |
# sign | |
signature = signing_key.sign payload | |
puts "signature: #{signature.unpack 'H*'}" | |
#verify | |
result = verify_key.verify signature, payload | |
puts "verification result: #{result}" | |
wrong_payload = 'Different from original message' | |
begin | |
verify_key.verify signature, wrong_payload | |
rescue => e | |
puts e.class | |
puts e.message | |
end | |
# serialize keys | |
signing_key_bytes = signing_key.to_bytes | |
verify_key_bytes = verify_key.to_bytes | |
puts "signing_key_bytes: #{signing_key_bytes.unpack 'H*'}" | |
puts "verify_key_bytes: #{verify_key_bytes.unpack 'H*'}" | |
# You can make instance form both serialized keys | |
Ed25519::SigningKey.new signing_key_bytes | |
restored_verify_key = Ed25519::VerifyKey.new verify_key_bytes | |
second_result = restored_verify_key.verify signature, payload | |
puts "verification result: #{second_result}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
thanks!