/// <summary> /// Digests the client response. /// </summary> /// <param name="digest">The digest to use.</param> /// <param name="passwordHash">The password hash.</param> /// <param name="nonce">The nonce.</param> /// <param name="nc">The nc.</param> /// <param name="qop">The qop.</param> /// <param name="cnonce">The cnonce.</param> /// <param name="digestUri">The digest URI.</param> /// <returns>The digest</returns> public static async Task <string> DigestClientResponseAsync(Digest digest, string passwordHash, string nonce, string nc, string qop, string cnonce, string digestUri) { string a1 = $"{passwordHash}:{nonce}:{cnonce}"; string ha1 = await digest.HashHexAsync(a1).ConfigureAwait(false); string a2 = $"AUTHENTICATE:{digestUri}"; string ha2 = await digest.HashHexAsync(a2).ConfigureAwait(false); string s = $"{nonce}:{nc}:{cnonce}:{qop}:{ha2}"; string k = $"{ha1}:{s}"; return(await digest.HashHexAsync(k).ConfigureAwait(false)); }