resolveDidKey function
Implementation
DidDocument resolveDidKey(String did) {
if (!did.startsWith('did:key')) throw Exception('Expected did to start with `did:key`. However `$did` did not');
var splited = did.split(':');
if (splited.length != 3) throw Exception('malformed did: `$did`');
String keyPart = splited[2];
var multibaseIndicator = keyPart[0];
keyPart = keyPart.substring(1);
var context = [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/ed25519-2020/v1",
"https://w3id.org/security/suites/x25519-2020/v1"
];
var id = did;
if (multibaseIndicator != 'z') {
throw UnimplementedError('Only Base58 is supported yet');
}
if (keyPart.startsWith('6Mk')) {
return _buildEDDoc(context, id, keyPart);
} else if (keyPart.startsWith('6LS')) {
return _buildXDoc(context, id, keyPart);
} else {
throw UnimplementedError('Only Ed25519 and X25519 keys are supported now');
}
}