Код: Выделить всё
var checksumHeader = context.Request.Headers["X-Hub-Signature"];
var signature = checksumHeader.ToString().Split('=')[1];
var stream = context.Request.Body;
string body;
using (var reader = new StreamReader(stream, Encoding.UTF8)) {
body = await reader.ReadToEndAsync();
}
var isValid = PubSubSecret.Check(body, signature);
Метод My Check:
Код: Выделить всё
public static bool Check(string body, string signature) {
using (var hmac = new HMACSHA1(Encoding.UTF8.GetBytes(Secret))) {
var hashBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(body));
var hash = Convert.ToHexString(hashBytes).ToLowerInvariant();
Console.WriteLine("Sig: " + signature);
Console.WriteLine("Computed Hash " + hash);
return signature.Equals(hash);
}
}
Я надеюсь, что кто-нибудь подскажет мне, что проверять дальше.
Я надеюсь, что кто-нибудь подскажет мне, что делать дальше.
p>
Если я скопирую тело и секрет строки в один из множества онлайн-инструментов Hmac SHA1, я получу тот же хэш, который вычисляет мой код, но не тот, который YouTube отправляет в заголовке.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ion-failed
Мобильная версия