Support for multikey v1 context within jsonld signature verification

merge-requests/30/head
Bob Mottram 2024-01-21 10:54:32 +00:00
parent 693655f1b2
commit 29ec9f08a7
2 changed files with 51 additions and 0 deletions

View File

@ -22,6 +22,7 @@ VALID_CONTEXTS = (
"*/socialweb/webfinger.jsonld",
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/multikey/v1",
"https://w3c.github.io/vc-data-integrity/contexts/multikey/v1.jsonld",
"https://w3id.org/security/data-integrity/v1"
)
@ -84,6 +85,47 @@ def has_valid_context(post_json_object: {}) -> bool:
return True
def get_multikey_v1_schema() -> {}:
""" https://w3id.org/security/multikey/v1
https://w3c.github.io/vc-data-integrity/contexts/multikey/v1.jsonld
"""
return {
"@context": {
"id": "@id",
"type": "@type",
"@protected": True,
"Multikey": {
"@id": "https://w3id.org/security#Multikey",
"@context": {
"@protected": True,
"id": "@id",
"type": "@type",
"controller": {
"@id": "https://w3id.org/security#controller",
"@type": "@id"
},
"revoked": {
"@id": "https://w3id.org/security#revoked",
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
},
"expires": {
"@id": "https://w3id.org/security#expiration",
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
},
"publicKeyMultibase": {
"@id": "https://w3id.org/security#publicKeyMultibase",
"@type": "https://w3id.org/security#multibase"
},
"secretKeyMultibase": {
"@id": "https://w3id.org/security#secretKeyMultibase",
"@type": "https://w3id.org/security#multibase"
}
}
}
}
}
def get_did_v1_schema() -> {}:
# https://www.w3.org/ns/did/v1
return {

View File

@ -49,6 +49,7 @@ from context import get_v1security_schema
from context import get_activitystreams_schema
from context import get_webfinger_schema
from context import get_did_v1_schema
from context import get_multikey_v1_schema
try:
from functools import cmp_to_key
@ -449,6 +450,14 @@ def load_document(url):
'document': get_webfinger_schema()
}
return doc
elif (url == "https://w3id.org/security/multikey/v1" or
url.endswith("/vc-data-integrity/contexts/multikey/v1.jsonld")):
doc = {
'contextUrl': None,
'documentUrl': url,
'document': get_multikey_v1_schema()
}
return doc
elif url == 'https://litepub.social/litepub/context.jsonld':
doc = {
'contextUrl': None,