1111
1212from ...config .injection_context import InjectionContext
1313from ...core .profile import Profile
14+ from ...did .did_key import DIDKey
1415from ...ledger .endpoint_type import EndpointType
1516from ...ledger .error import LedgerError
1617from ...ledger .multiple_ledger .ledger_requests_executor import (
1920)
2021from ...messaging .valid import IndyDID
2122from ...multitenant .base import BaseMultitenantManager
22-
23+ from ... wallet . key_type import ED25519
2324from ..base import BaseDIDResolver , DIDNotFound , ResolverError , ResolverType
2425
2526LOGGER = logging .getLogger (__name__ )
@@ -29,6 +30,26 @@ class NoIndyLedger(ResolverError):
2930 """Raised when there is no Indy ledger instance configured."""
3031
3132
33+ def _routing_keys_as_did_key_urls (routing_keys : Sequence [str ]) -> Sequence [str ]:
34+ """Convert raw base58 keys to did:key values.
35+
36+ If a did:key is passed in, convert to a did:key URL.
37+ """
38+
39+ did_key_urls = []
40+ for routing_key in routing_keys :
41+ if not routing_key .startswith ("did:key:" ):
42+ did_key_urls .append (DIDKey .from_public_key_b58 (routing_key , ED25519 ).key_id )
43+ else :
44+ if "#" not in routing_key :
45+ did_key_urls .append (
46+ f"{ routing_key } #{ DIDKey .from_did (routing_key ).fingerprint } "
47+ )
48+ else :
49+ return routing_keys
50+ return did_key_urls
51+
52+
3253class IndyDIDResolver (BaseDIDResolver ):
3354 """Indy DID Resolver."""
3455
@@ -101,7 +122,7 @@ def add_services(
101122 type_ = self .SERVICE_TYPE_DID_COMMUNICATION ,
102123 service_endpoint = endpoint ,
103124 priority = 1 ,
104- routing_keys = routing_keys ,
125+ routing_keys = _routing_keys_as_did_key_urls ( routing_keys ) ,
105126 recipient_keys = [recipient_key .id ],
106127 accept = (
107128 service_accept if service_accept else ["didcomm/aip2;env=rfc19" ]
@@ -114,7 +135,7 @@ def add_services(
114135 type_ = self .SERVICE_TYPE_DIDCOMM ,
115136 service_endpoint = endpoint ,
116137 recipient_keys = [recipient_key .id ],
117- routing_keys = routing_keys ,
138+ routing_keys = _routing_keys_as_did_key_urls ( routing_keys ) ,
118139 # CHECKME
119140 # accept=(service_accept if service_accept else ["didcomm/v2"]),
120141 accept = ["didcomm/v2" ],
0 commit comments