Как я понимаю hash должен быть одинаков для одного и того же файла не зависимо от браузера
т.к. функции создания хеша для ассинхронного режима в chome на сайте не выложена я создал свою
var CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;
var dataToSign = document.getElementById("Files"+arg[1]).getElementsByClassName("file-content")[0].innerHTML ; // Получаем base64 версию файла
var hashAlg = CADESCOM_HASH_ALGORITHM_CP_GOST_3411; // ГОСТ Р 34.11-94
var CADESCOM_BASE64_TO_BINARY = 1;
// Инициализируем объект
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
// Алгоритм хэширования нужно указать до того, как будет передано хэш-значение
yield oHashedData.Algorithm = hashAlg;
// Указываем кодировку данных
// Кодировка должна быть указана до того, как будут переданы сами данные
yield oHashedData.DataEncoding = CADESCOM_BASE64_TO_BINARY;
// Передаем данные
yield oHashedData.Hash(dataToSign);
//отладка - проверка вывода хеша
document.getElementById("hashVal").innerHTML =yield oHashedData.Value;
в итоге на выходе получаю вот такой хеш
5945AFB6995D7778A00BE9982D65606AFEF3C68B71EF1C88766D00170C4BC403
однако делая теже операции только под браузером firefox хеш выглядит вот так
4302250B2EBEDE744FC264714E4C63532919DBB99150B504283EB3A42014519F
вот функция получения хеша под фаерфокс
function InitializeHashedData(hashAlg, dataInBase64) {
// Создаем объект CAdESCOM.HashedData
var CADESCOM_BASE64_TO_BINARY = 1;
// Инициализируем объект
var oHashedData = cadesplugin.CreateObject("CAdESCOM.HashedData");
// Алгоритм хэширования нужно указать до того, как будет передано хэш-значение
oHashedData.Algorithm = hashAlg;
// Указываем кодировку данных
// Кодировка должна быть указана до того, как будут переданы сами данные
oHashedData.DataEncoding = CADESCOM_BASE64_TO_BINARY;
// Передаем данные
oHashedData.Hash(dataInBase64);
//Возвращаем объект HashedData
document.getElementById("hashVal").innerHTML = oHashedData.Value;
return oHashedData;
}
итогом должна получиться отделенная подпись
но с хрома она не валидируется и пишет что "Статус завершения операции: Одна или несколько подписей некорректна или нет доверия."
с Firefox получается успешная валидация
Прошу помочь с решением данного вопроса
Тех данные
ОС: Windows 7
Firefox 50.0.2
Crome 55.0.2883.87 m
Версия плагина: 2.0.12711 Версия криптопровайдера: 3.6.7777
Криптопровайдер: Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Лог файл с firefox
00000001 0.00000000 [4112] cades.dll: {4732} /CadesSignHash/ cades.cpp(4567) : (pSignPara=0x001FF3F8, pbHashData=0x031F4338, cbHashData=32, pszInnerContentObjID=0x03BA23F8, ppSignedBlob=0x001FF448)
00000002 0.02066580 [4112] cades.dll: {4732} /CadesSignHashImpl/ cades.cpp(4232) : Signer updating start
00000003 0.02078440 [4112] cades.dll: {4732} /CadesSignHashImpl/ cades.cpp(4235) : Hash algorithm deduced
00000004 0.02087010 [4112] cades.dll: {4732} /CadesMsgOpenToEncodeImplNamespace::SigningTimeAttributeExists/ cades.cpp(178) : (pAttr=0)
00000005 0.02094470 [4112] cades.dll: {4732} /CadesMsgOpenToEncodeImplNamespace::AttributeExists/ cades.cpp(160) : (pAttr=0)
00000006 0.02104140 [4112] cades.dll: {4732} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(407) : Attributes copied
00000007 0.02111860 [4112] cades.dll: {4732} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(410) : Signer does not have any of signing-certificate attributes
00000008 0.02208300 [4112] cades.dll: {4732} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(414) : signing-certificate(-v2) attribute assembled
00000009 0.02217040 [4112] cades.dll: {4732} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(418) : Signer does not have signingTime attribute
00000010 0.02230990 [4112] cades.dll: {4732} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(423) : signingTime attribute assembled
00000011 0.02239560 [4112] cades.dll: {4732} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(428) : Signer is updated successfully
00000012 0.08157730 [4112] cades.dll: {4732} /CadesMsgEnhanceSignature/ cades.cpp(1277) : (hCryptMsg=0x03C3D350, dwSignatureIndex=0, pCadesSignPara=0x001FEE18)
00000013 0.08169430 [4112] cades.dll: {4732} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1068) : Input parameters checked
00000014 0.08213510 [4112] cades.dll: {4732} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1072) : Signer certificate ID found
00000015 0.08221170 [4112] cades.dll: {4732} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1087) : pSignerCert=0x03BC7C70
00000016 0.08275420 [4112] cades.dll: {4732} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1098) : Only to CAdES-X LONG TYPE 1 or CAdES-T can be enhanced.
00000017 0.08284100 [4112] cades.dll: {4732} /CadesMsgEnhanceSignature/ cades.cpp(1306) : (res=1, GetLastError=0x00000000
00000018 0.08312310 [4112] cades.dll: {4732} /CadesSignHash/ cades.cpp(4598) : (res=1, GetLastError=0x00000000
00000019 0.08321720 [4112] cades.dll: {4732} /CadesFreeBlob/ cades.cpp(2944) : (pBlob=0x03BC9A48)
00000020 0.08328640 [4112] cades.dll: {4732} /CadesFreeBlob/ cades.cpp(2972) : (res=1, GetLastError=0x00000000
Лог файл с chrome
00000001 0.00000000 [4964] Externs.cpp(33) : /Init/
00000002 0.00027380 [4964] CPSettings.cpp(305) : /Init/
00000003 0.00199520 [4964] Externs.cpp(33) : /Init/
00000004 0.00223230 [4964] CPSettings.cpp(305) : /Init/
00000005 0.00419660 [4964] Externs.cpp(33) : /Init/
00000006 0.00908800 [4964] CPSettings.cpp(305) : /Init/
00000007 0.01055960 [4964] cades.dll: {3876} /CCadesApp::InitInstance/ CadesApp.cpp(16) : hInstance=61390000
00000008 0.01221480 [4964] Externs.cpp(33) : /Init/
00000009 0.01254180 [4964] CPSettings.cpp(305) : /Init/
00000010 0.13651770 [4964] cpcspi: Thread: file:line function text xcode(dcode) level: 0
00000011 0.13713039 [4964] function text level: 0
00000012 0.14856060 [4964] cpui: Thread: file:line function text xcode(dcode) level: 0
00000013 0.19649580 [4964] cpext: Thread: file:line function text xcode(dcode) level: 0
00000014 10.85414028 [4964] cades.dll: {3876} /CadesSignHash/ cades.cpp(4567) : (pSignPara=0x002BF85C, pbHashData=0x009D5878, cbHashData=32, pszInnerContentObjID=0x004DB908, ppSignedBlob=0x002BF8AC)
00000015 10.86320305 [4964] cprdr: Thread: file:line function text xcode(dcode) level: 1
00000016 11.09600925 [4964] pcsc: Thread: file:line function text xcode(dcode) level: 0
00000017 11.18978977 [4964] cades.dll: {3876} /CadesSignHashImpl/ cades.cpp(4232) : Signer updating start
00000018 11.18990040 [4964] cades.dll: {3876} /CadesSignHashImpl/ cades.cpp(4235) : Hash algorithm deduced
00000019 11.18997955 [4964] cades.dll: {3876} /CadesMsgOpenToEncodeImplNamespace::SigningTimeAttributeExists/ cades.cpp(173) : (pAttr->pszObjId=1.2.840.113549.1.9.5)
00000020 11.19005203 [4964] cades.dll: {3876} /CadesMsgOpenToEncodeImplNamespace::AttributeExists/ cades.cpp(160) : (pAttr=0)
00000021 11.19012356 [4964] cades.dll: {3876} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(407) : Attributes copied
00000022 11.19018936 [4964] cades.dll: {3876} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(410) : Signer does not have any of signing-certificate attributes
00000023 11.19137383 [4964] cades.dll: {3876} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(414) : signing-certificate(-v2) attribute assembled
00000024 11.19145012 [4964] cades.dll: {3876} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(428) : Signer is updated successfully
00000025 11.25439644 [4964] cpcng: Thread: file:line function text xcode(dcode) level: 0
00000026 11.25551033 [4964] cades.dll: {3876} /CadesMsgEnhanceSignature/ cades.cpp(1277) : (hCryptMsg=0x004EC6E0, dwSignatureIndex=0, pCadesSignPara=0x002BF27C)
00000027 11.25559616 [4964] cades.dll: {3876} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1068) : Input parameters checked
00000028 11.25606918 [4964] cades.dll: {3876} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1072) : Signer certificate ID found
00000029 11.25614548 [4964] cades.dll: {3876} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1087) : pSignerCert=0x004D2AC0
00000030 11.25666142 [4964] cades.dll: {3876} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1098) : Only to CAdES-X LONG TYPE 1 or CAdES-T can be enhanced.
00000031 11.25674820 [4964] cades.dll: {3876} /CadesMsgEnhanceSignature/ cades.cpp(1306) : (res=1, GetLastError=0x00000000
00000032 11.25710678 [4964] cades.dll: {3876} /CadesSignHash/ cades.cpp(4598) : (res=1, GetLastError=0x00000000
00000033 11.25720501 [4964] cades.dll: {3876} /CadesFreeBlob/ cades.cpp(2944) : (pBlob=0x004ECB30)
00000034 11.25727558 [4964] cades.dll: {3876} /CadesFreeBlob/ cades.cpp(2972) : (res=1, GetLastError=0x00000000
Отредактировано пользователем 15 декабря 2016 г. 12:12:27(UTC)
| Причина: Не указана