signCredential function

Future<String> signCredential(
  1. WalletStore wallet,
  2. dynamic credentialToSign, {
  3. String? challenge,
  4. Signer? signer,
  5. dynamic loadDocumentFunction(
    1. Uri url,
    2. LoadDocumentOptions? options
    ) = loadDocumentStrict,
})

Signs a W3C-Standard conform credentialToSign with the private key for issuer-did in the credential.

Implementation

Future<String> signCredential(WalletStore wallet, dynamic credentialToSign,
    {String? challenge,
    Signer? signer,
    Function(Uri url, LoadDocumentOptions? options) loadDocumentFunction =
        loadDocumentStrict}) async {
  Map<String, dynamic> credential;
  if (credentialToSign is VerifiableCredential) {
    credential = credentialToSign.toJson();
  } else {
    credential = credentialToMap(credentialToSign);
  }

  String issuerDid = getIssuerDidFromCredential(credential);
  if (issuerDid == '') {
    throw Exception('Could not examine IssuerDID');
  }
  signer ??= _determineSignerForDid(issuerDid, loadDocumentFunction);
  credential['proof'] = await signer.buildProof(credential, wallet, issuerDid,
      challenge: challenge);
  return jsonEncode(credential);
}