Esempio n. 1
0
        /// <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));
        }