18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/json/ld/signature/ed25519Verifier.rb', line 18
def verify(input, options = {})
publicKey = pub
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
|