Type: New Feature
Affects Version/s: None
Fix Version/s: None
As a developer building on top of Indy, I need to be able to use fully qualified DIDs in my code so that I can work with peer DIDs or DIDs from other ledgers.
- Minimize changes required to Indy Node
- A configuration parameter exists for the fully qualified DID prefix that is not required when communicating with an Indy ledger.
- If DIDs returned from the ledger do not contain the DID prefix, it should be added when communicating with applications through the APIs
- The wallet stores fully qualified DIDs
- Legacy DIDs in the wallet are handled gracefully
- Potential options
- Convert legacy DIDs in the wallet to include the prefix
- Detect DIDs that do not start "did:" and treat these as legacy DIDs that need the prefix
- Potential options
- Test scripts assume fully qualified DIDs
- An architecture proposal is prepared
- The architecture proposal includes a plan for managing DIDs from multiple ledgers in the wallet
- Issues exist for the remaining work
- At some point in the future, Aries wallets will contain DIDs from different ledgers. Our current work should move us toward that goal.
- Original request from Daniel:
To everybody who is working on functions that accept a DID, either in the ledger, the SDK, the agency, or elsewhere: I would like us to support fully qualified DIDs in the form `did:sov:<value>`, not just `<value>`. If we see just <value>, we can assume the prefix is "did:sov:" — and if we see a prefix that isn't "did:sov:", we can potentially raise an error about an unsupported DID type. Note that some DID formats may make different assumptions than Sovrin does about the length of a DID, whether it is case-sensitive, etc. We need to get in the habit of thinking of DIDs as being fully qualified. Our sample files should show this. Our wallet APIs should handle it. Etc. This is the foundation for us being able to have a single wallet/agent/agency that supports DIDs from the production Sovrin ledger as well as a test network--and it is the foundation for eventual interop with other ledgers like Bitcoin and Ethereum.
Requested action item for team leads: please write tickets to capture work required to support fully qualified DIDs at the minimal level I've described above. Then put them in the backlog so we are at least tracking this effort.
Requested action item for all devs: Immediately, stop estimating or writing code that isn't compatible with this fully qualified form.
Requested action item for QA: start testing with fully qualified DIDs and log bugs as needed.