Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2016(UTC) Сообщений: 14  Сказал(а) «Спасибо»: 5 раз
|
Необходимо реализовать подпись по алгоритмам GOST R 34.11-94 и GOST R 34.10-2012. При создании и проверке подписи по сертификату с GOST R 34.11-94 все работает прекрасно. При проверке подписи сертификата GOST R 34.10-2012 возникает ошибка "Неправильное значение хеша". Клиент: Код:
function SignCreateHashData(hashToSign, certificateThumbprint) {
var oCertificate = GetCertificateByThumbprint(certificateThumbprint);
var providerName = oCertificate.PrivateKey.ProviderName;
var algorithm;
switch (providerName) {
case "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider":
algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
break;
case "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider":
algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
break;
}
var oHashedData = InitializeHashedData(algorithm, hashToSign);
var sSignedMessage = SignCreateHashDataBase(oCertificate, oHashedData);
return sSignedMessage;
}
function InitializeHashedData(hashAlg, sHashValue) {
var oHashedData = CreateObject("CAdESCOM.HashedData");
oHashedData.Algorithm = hashAlg;
oHashedData.SetHashValue(sHashValue);
return oHashedData;
}
function SignCreateHashDataBase(oCertificate, oHashedData) {
var oSigner = CreateSigner(oCertificate);
var oSignedData = CreateObject("CAdESCOM.CadesSignedData");
var sSignedMessage;
try {
sSignedMessage = oSignedData.SignHash(oHashedData, oSigner, CADESCOM_CADES_BES);
} catch (err) {
throw GetErrorMessage(err);
}
return sSignedMessage;
}
Сервер: Код:
/// <summary>
/// Проверяем отсоединенную подпись.
/// </summary>
/// <param name="signedData">Подписываемые данные.</param>
/// <param name="signature">Подпись.</param>
/// <param name="checkSignatureOnly">Признак необходимости проверки лишь самой подписи.</param>
/// <param name="certificate">Сертификат, которым производилась подпись.</param>
/// <exception cref="System.Security.Cryptography.CryptographicException">Возникает в случае некорректной подписи, либо других Cryptographic исключений.</exception>
public static void CheckDetachedSignature(byte[] signedData, byte[] signature, bool checkSignatureOnly, out X509Certificate2 certificate)
{
SignedCms cms = new SignedCms(new ContentInfo(signedData), true);
cms.Decode(signature);
if (cms.SignerInfos.Count > 1)
{
throw new CryptographicException("Обнаружено более одной подписи, данный метод предназначен для проверки единственной подписи");
}
cms.CheckSignature(true);
certificate = cms.SignerInfos[0].Certificate;
if (!checkSignatureOnly)
{
CheckCertificate(certificate, null);
}
}
При проверке подписи 34.10-2012, падает на строке Код:cms.CheckSignature(true);
с ошибкой "Неправильное значение хеша". Что я упускаю? Возможно есть какие-то особенности в создании подписи по алгоритму GOST R 34.10-2012, не могу найти ответ Отредактировано пользователем 17 ноября 2017 г. 12:24:26(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Прикрепите получившийся CMS. И определять алгоритм по криптопровайдеру не стоит, лучше по алгоритму открытого ключа. |
|
 1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2016(UTC) Сообщений: 14  Сказал(а) «Спасибо»: 5 раз
|
Вот что получилось
MIILPwYJKoZIhvcNAQcCoIILMDCCCywCAQExDjAMBggqhQMHAQECAgUAMAsGCSqGSIb3DQEHAaCC BxAwggcMMIIGu6ADAgECAgoUX/S6AAMAAzNPMAgGBiqFAwICAzCCAUgxGDAWBgUqhQNkARINMTAz NzcwMDA4NTQ0NDEaMBgGCCqFAwOBAwEBEgwwMDc3MTcxMDc5OTExOTA3BgNVBAkeMARDBDsALgAg BCEEQwRJBFEEMgRBBDoEOAQ5ACAEMgQwBDsALAAgBDQALgAgADEAODEhMB8GA1UECB4YADcANwAg BDMALgAgBBwEPgRBBDoEMgQwMRUwEwYDVQQHHgwEHAQ+BEEEOgQyBDAxIDAeBgkqhkiG9w0BCQEW EWluZm9AY3J5cHRvcHJvLnJ1MQswCQYDVQQGEwJSVTEpMCcGA1UECh4gBB4EHgQeACAAIgQaBCAE GAQfBCIEHgAtBB8EIAQeACIxQTA/BgNVBAMeOAQiBDUEQQRCBD4EMgRLBDkAIAQjBCYAIAQeBB4E HgAgACIEGgQgBBgEHwQiBB4ALQQfBCAEHgAiMB4XDTE3MTEwNzE0MTkwMFoXDTE4MDIwNzE0Mjkw MFowEzERMA8GA1UEAwwIY2VydDIwMTIwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQEC AgNDAARApIK2wLAcOlTb7/zUVOILFZKVkhlR32mMeWJ7fKsqcCbf/yVOUCRclG+58htso27B96j8 bU9S1e11BaZtEDJWWaOCBLMwggSvMA4GA1UdDwEB/wQEAwIE8DAmBgNVHSUEHzAdBggrBgEFBQcD BAYHKoUDAgIiBgYIKwYBBQUHAwIwHQYDVR0OBBYEFPAzoGQ7W74BFMTATYJJ3Ne22KYnMIIBiQYD VR0jBIIBgDCCAXyAFCuyEDRmggKs8OGqQIZ4AXFFnTPjoYIBUKSCAUwwggFIMRgwFgYFKoUDZAES DTEwMzc3MDAwODU0NDQxGjAYBggqhQMDgQMBARIMMDA3NzE3MTA3OTkxMTkwNwYDVQQJHjAEQwQ7 AC4AIAQhBEMESQRRBDIEQQQ6BDgEOQAgBDIEMAQ7ACwAIAQ0AC4AIAAxADgxITAfBgNVBAgeGAA3 ADcAIAQzAC4AIAQcBD4EQQQ6BDIEMDEVMBMGA1UEBx4MBBwEPgRBBDoEMgQwMSAwHgYJKoZIhvcN AQkBFhFpbmZvQGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxKTAnBgNVBAoeIAQeBB4EHgAgACIE GgQgBBgEHwQiBB4ALQQfBCAEHgAiMUEwPwYDVQQDHjgEIgQ1BEEEQgQ+BDIESwQ5ACAEIwQmACAE HgQeBB4AIAAiBBoEIAQYBB8EIgQeAC0EHwQgBB4AIoIQRIfaV0mTYJ5IdvaCc0T/FzBcBgNVHR8E VTBTMFGgT6BNhktodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9yYS9jZHAvMmJiMjEwMzQ2NjgyMDJh Y2YwZTFhYTQwODY3ODAxNzE0NTlkMzNlMy5jcmwwgbEGCCsGAQUFBwEBBIGkMIGhMDQGCCsGAQUF BzABhihodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9vY3NwbmMyL29jc3Auc3JmMDIGCCsGAQUFBzAB hiZodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9vY3NwMi9vY3NwLnNyZjA1BggrBgEFBQcwAoYpaHR0 cDovL3d3dy5jcnlwdG9wcm8ucnUvcmEvY2RwL2NhY2VyMy5jcnQwKwYDVR0QBCQwIoAPMjAxNzEx MDcxNDE5MDBagQ8yMDE4MDIwNzE0MTkwMFowHQYDVR0gBBYwFDAIBgYqhQNkcQEwCAYGKoUDZHEC MDQGBSqFA2RvBCsMKdCa0YDQuNC/0YLQvtCf0YDQviBDU1AgKNCy0LXRgNGB0LjRjyAzLjYpMIIB MwYFKoUDZHAEggEoMIIBJAwrItCa0YDQuNC/0YLQvtCf0YDQviBDU1AiICjQstC10YDRgdC40Y8g My42KQxTItCj0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgCAi0JrRgNC40L/R gtC+0J/RgNC+INCj0KYiINCy0LXRgNGB0LjQuCAxLjUMT9Ch0LXRgNGC0LjRhNC40LrQsNGCINGB 0L7QvtGC0LLQtdGC0YHRgtCy0LjRjyDihJYg0KHQpC8xMjQtMjczOCDQvtGCIDAxLjA3LjIwMTUM T9Ch0LXRgNGC0LjRhNC40LrQsNGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjRjyDihJYg0KHQpC8x MjgtMjc2OCDQvtGCIDMxLjEyLjIwMTUwCAYGKoUDAgIDA0EA16a7z0UriUy2rHYfkZWYexktHd57 ao6p8K9QRc1BmWKtLCSSpnBen1tEt2ut0noZZFY5kWJ27AzJkHdoTRTiYDGCA/QwggPwAgEBMIIB WDCCAUgxGDAWBgUqhQNkARINMTAzNzcwMDA4NTQ0NDEaMBgGCCqFAwOBAwEBEgwwMDc3MTcxMDc5 OTExOTA3BgNVBAkeMARDBDsALgAgBCEEQwRJBFEEMgRBBDoEOAQ5ACAEMgQwBDsALAAgBDQALgAg ADEAODEhMB8GA1UECB4YADcANwAgBDMALgAgBBwEPgRBBDoEMgQwMRUwEwYDVQQHHgwEHAQ+BEEE OgQyBDAxIDAeBgkqhkiG9w0BCQEWEWluZm9AY3J5cHRvcHJvLnJ1MQswCQYDVQQGEwJSVTEpMCcG A1UECh4gBB4EHgQeACAAIgQaBCAEGAQfBCIEHgAtBB8EIAQeACIxQTA/BgNVBAMeOAQiBDUEQQRC BD4EMgRLBDkAIAQjBCYAIAQeBB4EHgAgACIEGgQgBBgEHwQiBB4ALQQfBCAEHgAiAgoUX/S6AAMA AzNPMAwGCCqFAwcBAQICBQCgggIcMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcN AQkFMQ8XDTE3MTEyMDA1NTIxN1owLwYJKoZIhvcNAQkEMSIEIGIQnjYEkEqIVEmlVyj/9dXSmspn mxalZJ58aygEE48nMIIBrwYLKoZIhvcNAQkQAi8xggGeMIIBmjCCAZYwggGSMAoGCCqFAwcBAQIC BCD7Bf+BudLKr3T1fsMSQkyziQw1Gf8VixTZ8VLb999p3TCCAWAwggFQpIIBTDCCAUgxGDAWBgUq hQNkARINMTAzNzcwMDA4NTQ0NDEaMBgGCCqFAwOBAwEBEgwwMDc3MTcxMDc5OTExOTA3BgNVBAke MARDBDsALgAgBCEEQwRJBFEEMgRBBDoEOAQ5ACAEMgQwBDsALAAgBDQALgAgADEAODEhMB8GA1UE CB4YADcANwAgBDMALgAgBBwEPgRBBDoEMgQwMRUwEwYDVQQHHgwEHAQ+BEEEOgQyBDAxIDAeBgkq hkiG9w0BCQEWEWluZm9AY3J5cHRvcHJvLnJ1MQswCQYDVQQGEwJSVTEpMCcGA1UECh4gBB4EHgQe ACAAIgQaBCAEGAQfBCIEHgAtBB8EIAQeACIxQTA/BgNVBAMeOAQiBDUEQQRCBD4EMgRLBDkAIAQj BCYAIAQeBB4EHgAgACIEGgQgBBgEHwQiBB4ALQQfBCAEHgAiAgoUX/S6AAMAAzNPMB8GCCqFAwcB AQEBMBMGByqFAwICJAAGCCqFAwcBAQICBEBeb5B5GtAn2r4vQYdOGLPq75h5HJfGwunKJKQlJExM 5WauYtjn1aFz1yeHQN/HxJqk+5tA+joX+mxCiIW5LgjQ
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
А на сервере точно CSP 4.0? Какая версия? |
|
 1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2016(UTC) Сообщений: 14  Сказал(а) «Спасибо»: 5 раз
|
Версия КриптоПро CSP: 4.0.9842
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
 1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2016(UTC) Сообщений: 14  Сказал(а) «Спасибо»: 5 раз
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2016(UTC) Сообщений: 14  Сказал(а) «Спасибо»: 5 раз
|
Указание CADESCOM_BASE64_TO_BINARY в качестве ContentEncoding тоже не помогло
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
А хэш изначальный посчитан каким алгоритмом? |
|
 1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.09.2016(UTC) Сообщений: 14  Сказал(а) «Спасибо»: 5 раз
|
Кажется, проблема в этом Код:
/// <summary>
/// Вычисление хеша массива байтов используя алгоритм ГОСТ Р 34.11-94.
/// </summary>
/// <param name="bytesToHash">Массив байт, который будем хешировать.</param>
/// <returns>Хеш в виде массива байт.</returns>
/// <exception cref="System.Security.Cryptography.CryptographicException">Возникает в случае отсутствия доступа к криптопровайдеру (к примеру, не установлен Крипто Про .Net).</exception>
public static byte[] ComputeHash(byte[] bytesToHash)
{
using (HashAlgorithm algorithm = HashAlgorithm.Create("GOST3411"))
{
if (algorithm == null)
{
throw new CryptographicException("CryptoPro is unavailable.");
}
return algorithm.ComputeHash(bytesToHash);
}
}
GOST3411? Должен быть другой параметр? Отредактировано пользователем 21 ноября 2017 г. 9:30:59(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close