/// <summary>
        /// Verifies a signature using the specified key.
        /// </summary>
        /// <param name="verifyKey">The verification key</param>
        /// <param name="algorithm">The signing algorithm. For more information on possible algorithm types, see JsonWebKeyEncryptionAlgorithm.</param>
        /// <param name="digest">The digest hash value</param>
        /// <param name="signature">The signature to verify</param>
        /// <returns>true if verification succeeds, false if verification fails</returns>
        public static async Task <bool> VerifyAsync(this KeyVaultClient client, JsonWebKey verifyKey, string algorithm, byte[] digest, byte[] signature)
        {
            if (verifyKey == null)
            {
                throw new ArgumentNullException("verifyKey");
            }

            if (digest == null)
            {
                throw new ArgumentNullException("digest");
            }

            if (signature == null)
            {
                throw new ArgumentNullException("signature");
            }

            return(await client.VerifyAsync(verifyKey.Kid, algorithm, digest, signature).ConfigureAwait(false));
        }
 /// <summary>
 /// Verifies a signature using the specified key
 /// </summary>
 /// <param name="verifyKey">The verification key</param>
 /// <param name="algorithm">The signing algorithm</param>
 /// <param name="digest">The digest hash value</param>
 /// <param name="signature">The signature to verify</param>
 /// <returns>true if verification succeeds, false if verification fails</returns>
 public static async Task <bool> VerifyAsync(this KeyVaultClient client, KeyBundle verifyKey, string algorithm, byte[] digest, byte[] signature)
 {
     return(await client.VerifyAsync(verifyKey.Key, algorithm, digest, signature).ConfigureAwait(false));
 }