module JwtNacl::Ed25519
Sign or verify JSON Web Signature (JWS) signing input using Edwards-curve Digital Signature Algorithm (EdDSA) curve Ed25519
@see ed25519.cr.yp.to/
Public Instance Methods
sign(message, seed = nil)
click to toggle source
@param message [String] input payload for a digital signature computation @param seed [String] 32 random bytes (optional) @return [Hash] a hash with the private_key, public_key, and signature @example
Ed25519.sign(message, seed) # => {private_key: private_key, public_key: public_key, signature: signature}
# File lib/jwt_nacl/ed25519.rb, line 17 def sign(message, seed = nil) signing_key = seed ? RbNaCl::SigningKey.new(seed) : RbNaCl::SigningKey.generate { private_key: signing_key.to_bytes, public_key: signing_key.verify_key.to_bytes, signature: signing_key.sign(message) } end
verify(public_key, signature, message)
click to toggle source
@param public_key [String] 32 byte key used to authenticate a digital signature @param signature [String] alleged signature to be checked @param message [String] message to be authenticated @return [String, Boolean] verified message or false @example
Ed25519.verify(public_key, signature, message) # => message
# File lib/jwt_nacl/ed25519.rb, line 33 def verify(public_key, signature, message) verify_key(public_key, signature, message) message rescue false end
verify_key(public_key, signature, message)
click to toggle source
# File lib/jwt_nacl/ed25519.rb, line 40 def verify_key(public_key, signature, message) RbNaCl::VerifyKey.new(public_key) .verify(signature, message) end