Skip to content

Commit e9beda3

Browse files
committed
fix: dereference refs in vm relationship
Signed-off-by: Daniel Bluhm <[email protected]>
1 parent 9144f76 commit e9beda3

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

acapy_agent/wallet/default_verification_key_strategy.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
import logging
55
from typing import Optional
66

7-
from acapy_agent.core.error import BaseError
8-
from acapy_agent.core.profile import Profile
9-
from acapy_agent.did.did_key import DIDKey
10-
from acapy_agent.resolver.did_resolver import DIDResolver
7+
from pydid import DIDDocument
8+
9+
from ..core.error import BaseError
10+
from ..core.profile import Profile
11+
from ..did.did_key import DIDKey
12+
from ..resolver.did_resolver import DIDResolver
1113

1214
LOGGER = logging.getLogger(__name__)
1315

@@ -90,11 +92,21 @@ async def get_verification_method_id_for_did(
9092
return did + "#key-1"
9193

9294
resolver = profile.inject(DIDResolver)
93-
did_document = await resolver.resolve(profile=profile, did=did)
94-
method_types = self.key_types_mapping[proof_type]
95+
doc_raw = await resolver.resolve(profile=profile, did=did)
96+
doc = DIDDocument.deserialize(doc_raw)
97+
98+
methods_or_refs = getattr(doc, proof_purpose, [])
99+
# Dereference any refs in the verification relationship
100+
methods = [
101+
await resolver.dereference_verification_method(profile, method, document=doc)
102+
if isinstance(method, str)
103+
else method
104+
for method in methods_or_refs
105+
]
95106

96-
methods = did_document.get(proof_purpose, [])
97-
methods = [vm for vm in methods if vm.get("type") in method_types]
107+
method_types = self.key_types_mapping[proof_type]
108+
# Filter methods by type expected for proof_type
109+
methods = [vm for vm in methods if vm.type in method_types]
98110
if not methods:
99111
raise VerificationKeyStrategyError(
100112
f"No matching verification method found for did {did} with proof "

0 commit comments

Comments
 (0)