/// <summary> /// Creates keys for the given schema and signature type. /// </summary> /// <remarks> /// <para>This method creates both primary and revocation keys for the given /// signature type and schema and stores them in the provided <see cref="Wallet"/>. /// The generated claim definition is returned as a JSON string containing information about the /// signature type, schema, the issuer's public key and the unique identifier of the public key /// in the wallet. /// </para> /// <note type="note">Currently the only signature type that is supported is 'CL'.</note> /// </remarks> /// <param name="wallet">The wallet into which the claim definition will be stored.</param> /// <param name="issuerDid">The DID of the issuer of the claim definition.</param> /// <param name="schemaJson">The JSON schema of the claim definition.</param> /// <param name="signatureType">The type of signature to use.</param> /// <param name="createNonRevoc">Whether to request non-revocation claim.</param> /// <returns> /// An asynchronous <see cref="Task{T}"/> that, when the operation completes, resolves to a /// JSON string containing the claim definition.</returns> public static Task <string> IssuerCreateAndStoreClaimDefAsync(Wallet wallet, string issuerDid, string schemaJson, string signatureType, bool createNonRevoc) { var taskCompletionSource = new TaskCompletionSource <string>(); var commandHandle = PendingCommands.Add(taskCompletionSource); var commandResult = IndyNativeMethods.indy_issuer_create_and_store_claim_def( commandHandle, wallet.Handle, issuerDid, schemaJson, signatureType, createNonRevoc, _issuerCreateAndStoreClaimDefCallback ); CallbackHelper.CheckResult(commandResult); return(taskCompletionSource.Task); }