Вы можете поделиться примером кода, чтобы узнать, как вы реализуете это:
"Я унаследовал некоторый код, который использует проверку HMA C для проверки запросов POST. Данные POST кодируются в источнике через HMA C с предварительным общим секретом, и это добавляется в заголовок. Заголовок - это чтение на нашей принимающей стороне и сравнение. Это прекрасно работает. "
Я реализовал функцию для проверки запроса HMA C точно так, как предложил Docusign:
public bool HashIsValid(string hmacKey, string xmlbody, string hmacSignature)
{
string result = ComputeHash(hmacKey, xmlbody);
return result.Equals(hmacSignature);
}
public string ComputeHash(string hmacKey, string xmlbody)
{
byte[] bytes = Encoding.UTF8.GetBytes(hmacKey);
System.Security.Cryptography.HMAC hmac = new System.Security.Cryptography.HMACSHA256(bytes);
bytes = Encoding.UTF8.GetBytes(xmlbody);
bytes = hmac.ComputeHash(bytes);
return Convert.ToBase64String(bytes);
}
Я уверен, что я установил правильный hmacKey (общий ключ из моей учетной записи Docusign), правильный hmacSignature (x-docusign-signature-1) и правильный (все строки) XML body body, но эти функции возвращают разные значения ha sh: результат всегда отличается от hmacSignature. Я что то пропустил? заранее спасибо!