class JSON::LD::SIGNATURE::Ed25519Verifier
Attributes
priv[W]
pub[W]
Public Instance Methods
priv()
click to toggle source
# File lib/json/ld/signature/ed25519Verifier.rb, line 14 def priv @priv end
pub()
click to toggle source
# File lib/json/ld/signature/ed25519Verifier.rb, line 10 def pub @pub end
verify(input, options = {})
click to toggle source
# File lib/json/ld/signature/ed25519Verifier.rb, line 18 def verify(input, options = {}) # We require a publicKeyPem in the options hash # if options['publicKey'].nil? # raise JsonLdSignatureError::MissingKey, "options parameter must include publicKey" # end # The publicKeyPem can be either a String or a parsed RSA key # publicKey = options['publicKey'] publicKey = pub # Check the input, it should either be a String or a parsed JSON object jsonld = case input when String then begin JSON.parse(input) rescue JSON::ParserError => e raise JsonLdSignatureError::InvalidJsonLdDocument, e.message end when Hash then input else raise JsonLdSignatureError::InvalidJsonLdDocument end signature = jsonld['signature'] created = signature['created'] creator = signature['creator'] signatureValue = signature['signatureValue'] domain = signature['domain'] nonce = signature['nonce'] uri = URI(creator) normOpts = { 'nonce' => nonce, 'domain' => domain, 'created' => created, 'creator' => creator } normalizedGraph = JSON::LD::SIGNATURE::generateNormalizedGraph jsonld, normOpts publicKey.verify Base64.decode64(signatureValue), normalizedGraph end