/// <summary> /// Builds a ledger request to store a NYM. /// </summary> /// <remarks> /// <para> /// Builds a request message that is suitable for storing a NYM for the <paramref name="targetDid"/> /// on the ledger. /// </para> /// <para> /// Only the <paramref name="submitterDid"/> and <paramref name="targetDid"/> parameters /// are required, however the other parameters provide greater control over the process. Normally /// the <paramref name="targetDid"/> and <paramref name="verKey"/> parameters would be from values /// generated by a prior call to <see cref="Signus.CreateAndStoreMyDidAsync(Wallet, string)"/>. /// </para> /// <para> /// The <paramref name="role"/> parameter dictates what permissions the NYM will have - valid values /// are 'STEWARD' and 'TRUSTEE' and 'TRUST_ANCHOR'. /// </para> /// </remarks> /// <param name="submitterDid">The DID of the party who will submit the request to the ledger.</param> /// <param name="targetDid">The DID the NYM belongs to.</param> /// <param name="verKey">The verification key for the NYM.</param> /// <param name="alias">The alias for the NYM.</param> /// <param name="role">The role of the NYM.</param> /// <returns>An asynchronous <see cref="Task{T}"/> that resolves to a <see cref="string"/> /// containing the request JSON. </returns> public static Task <string> BuildNymRequestAsync(string submitterDid, string targetDid, string verKey, string alias, string role) { var taskCompletionSource = new TaskCompletionSource <string>(); var commandHandle = PendingCommands.Add(taskCompletionSource); var result = IndyNativeMethods.indy_build_nym_request( commandHandle, submitterDid, targetDid, verKey, alias, role, _buildRequestCallback ); CallbackHelper.CheckResult(result); return(taskCompletionSource.Task); }