public HttpResponseMessage RespondWithChallenge() { var challengeData = new Dictionary <string, string> { { OAuthHelper.Keys.ChallengeTimestamp, OAuthServerHelper.DateTimeToString(SystemTime.UtcNow) }, { OAuthHelper.Keys.ChallengeSalt, OAuthHelper.BytesToString(OAuthServerHelper.RandomBytes(OAuthHelper.Keys.ChallengeSaltLength)) } }; var responseData = new Dictionary <string, string> { { OAuthHelper.Keys.RSAExponent, OAuthServerHelper.RSAExponent }, { OAuthHelper.Keys.RSAModulus, OAuthServerHelper.RSAModulus }, { OAuthHelper.Keys.Challenge, OAuthServerHelper.EncryptSymmetric(OAuthHelper.DictionaryToString(challengeData)) } }; var msg = GetEmptyMessage(HttpStatusCode.PreconditionFailed); var value = OAuthHelper.Keys.WWWAuthenticateHeaderKey + " " + OAuthHelper.DictionaryToString(responseData); msg.Headers.TryAddWithoutValidation("WWW-Authenticate", value); return(msg); }