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