resolveDidKey function

DidDocument resolveDidKey(
  1. String did
)

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');
  }
}