Skip to content

Commit 2bd6f27

Browse files
authored
Merge pull request openwallet-foundation#3622 from anonyome/gm/vm-resolve-fix
(fix) VM resolution strategy correction
2 parents 6ef36b7 + 1e805cb commit 2bd6f27

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

acapy_agent/wallet/default_verification_key_strategy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ async def get_verification_method_id_for_did(
104104
doc_raw = await resolver.resolve(profile=profile, did=did)
105105
doc = DIDDocument.deserialize(doc_raw)
106106

107-
methods_or_refs = getattr(doc, proof_purpose, [])
107+
methods_or_refs = doc_raw.get(proof_purpose, [])
108108
# Dereference any refs in the verification relationship
109109
methods = [
110110
await resolver.dereference_verification_method(profile, method, document=doc)

acapy_agent/wallet/tests/test_default_verification_key_strategy.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import pytest
33

44
from acapy_agent.resolver.did_resolver import DIDResolver
5+
from ...resolver.tests.test_did_resolver import MockResolver
56

67
from ...did.did_key import DIDKey
78
from ...utils.testing import create_test_profile
@@ -17,6 +18,40 @@ class TestDefaultVerificationKeyStrategy(IsolatedAsyncioTestCase):
1718
async def asyncSetUp(self) -> None:
1819
self.profile = await create_test_profile()
1920
resolver = DIDResolver()
21+
resolver.register_resolver(
22+
MockResolver(
23+
["example"],
24+
resolved={
25+
"@context": [
26+
"https://www.w3.org/ns/did/v1",
27+
"https://w3id.org/security/multikey/v1",
28+
],
29+
"id": "did:example:123",
30+
"verificationMethod": [
31+
{
32+
"id": "did:example:123#key-1",
33+
"type": "Multikey",
34+
"controller": "did:example:123",
35+
"publicKeyMultibase": "z6MkjYXizfaAXTriV3h2Vc9uxJ9AMQpfG7mE1WKMnn1KJvFE",
36+
},
37+
{
38+
"id": "did:example:123#key-2",
39+
"type": "Multikey",
40+
"controller": "did:example:123",
41+
"publicKeyMultibase": "z6MkjYXizfaAXTriV3h2Vc9uxJ9AMQpfG7mE1WKMnn1KJvFE",
42+
},
43+
{
44+
"id": "did:example:123#key-3",
45+
"type": "Ed25519VerificationKey2018",
46+
"controller": "did:example:123",
47+
"publicKeyBase58": "66GgQRKjBvNFNYrKp3C57CbAXqYorEWsKVQRxW3JPhTr",
48+
},
49+
],
50+
"authentication": ["did:example:123#key-1"],
51+
"assertionMethod": ["did:example:123#key-2", "did:example:123#key-3"],
52+
},
53+
)
54+
)
2055
self.profile.context.injector.bind_instance(DIDResolver, resolver)
2156

2257
async def test_with_did_sov(self):
@@ -33,6 +68,27 @@ async def test_with_did_key(self):
3368
== DIDKey.from_did(TEST_DID_KEY).key_id
3469
)
3570

71+
async def test_with_did_for_assertion(self):
72+
strategy = DefaultVerificationKeyStrategy()
73+
assert (
74+
await strategy.get_verification_method_id_for_did(
75+
"did:example:123",
76+
self.profile,
77+
proof_type="Ed25519Signature2020",
78+
proof_purpose="assertionMethod",
79+
)
80+
== "did:example:123#key-2"
81+
)
82+
assert (
83+
await strategy.get_verification_method_id_for_did(
84+
"did:example:123",
85+
self.profile,
86+
proof_type="Ed25519Signature2018",
87+
proof_purpose="assertionMethod",
88+
)
89+
== "did:example:123#key-3"
90+
)
91+
3692
async def test_unsupported_did_method(self):
3793
strategy = DefaultVerificationKeyStrategy()
3894
with pytest.raises(Exception):

0 commit comments

Comments
 (0)