Статус: Участник
Группы: Участники
Зарегистрирован: 26.11.2015(UTC) Сообщений: 14 Откуда: Москва Сказал(а) «Спасибо»: 11 раз
|
Здравствуйте! Пытаюсь по частям воспроизвести подписывание XML по шаблону. Для этого взял за основу пример подписи XML по шаблонутолько чуток отредактировал метод канонизации, вместо http://www.w3.org/2001/10/xml-exc-c14n# указал http://www.w3.org/TR/2001/REC-xml-c14n-20010315(но кстати на хэш в данном случае это не повлияло) Код:<?xml version="1.0" encoding="UTF-8"?>
<!--
Original XML doc file for sign example.
-->
<Envelope xmlns="urn:envelope">
<Data>
Hello, World!
</Data>
<Node xml:id="nodeID">
Hello, Node!
</Node>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<Reference URI="#nodeID">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue/>
</Reference>
</SignedInfo>
<SignatureValue/>
<KeyInfo/>
</Signature>
</Envelope>
Далее его подписал, получил хэш: Код:<DigestValue>HqSr6WBLm1fD1bm0XzTxm1Fio4xODWpI2kliY9Jqf80=</DigestValue>
Или если в hex вернуть: Код:1EA4ABE9604B9B57C3D5B9B45F34F19B5162A38C4E0D6A48DA496263D26A7FCD
Подписывал его таким кодом(вырезал выше объявленный xml): Код:function SignCadesXML_Async(certId, sXmlData) {
return cadesplugin.async_spawn(function*(arg) {
if (!arg[0]) {
alert("Сертификат не выбран!");
return;
}
var Result = {};
var sXmlData = arg[1];
sXmlData=".....";
console.log(sXmlData);
var thumbprint = arg[0].split(" ").reverse().join("").replace(/\s/g, "").toUpperCase();
try {
var oStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store");
yield oStore.Open();
} catch (err) {
alert('Не удалось создать CAdESCOM.Store: ' + err.number);
return;
}
var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
var all_certs = yield oStore.Certificates;
var oCerts = yield all_certs.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);
if ((yield oCerts.Count) == 0) {
alert("Сертификат не найден");
return;
}
var certificate = yield oCerts.Item(1);
try
{
var errormes = "";
try {
var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
} catch (err) {
errormes = "Не удалось создать CAdESCOM.CPSigner: " + err.number;
throw errormes;
}
if (oSigner) {
yield oSigner.propset_Certificate(certificate);
}
else {
errormes = "Не удалось создать CAdESCOM.CPSigner";
throw errormes;
}
var oSignedXML = yield cadesplugin.CreateObjectAsync("CAdESCOM.SignedXML");
if (sXmlData) {
// Данные на подпись ввели
yield oSignedXML.propset_Content(sXmlData);
yield oSignedXML.propset_SignatureType(cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE);
try {
Result.Signature = yield oSignedXML.Sign(oSigner);
console.log(Result.Signature);
}
catch (err) {
errormes = "Не удалось создать подпись из-за ошибки: " + GetErrorMessage(err);
throw errormes;
}
}
return Result;
}
catch(err)
{
alert("Возникла ошибка:"+err);
}
}, certId, sXmlData); //cadesplugin.async_spawn
}
теперь я пытаюсь получить этот же хэш вручную. Для этого я на java вызываю для канонизации узла: Код:NamespaceContextImpl namespaces = new NamespaceContextImpl();
namespaces.addPrefix("main", "urn:envelope");
xpath.setNamespaceContext(namespaces);
XPathExpression expr = xpath.compile("//main:Node");
NodeList nodes = (NodeList)expr.evaluate(doc, XPathConstants.NODESET);
Canonicalizer canon = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
byte[] canonXmlBytes = canon.canonicalizeSubtree(nodes.item(0));
canonXmlString = new String(canonXmlBytes);
Получаю: Код:<Node xmlns="urn:envelope" xml:id="nodeID">
Hello, Node!
</Node>
Считаю от него хэш так: Код:function calcHash(data) {
return cadesplugin.async_spawn(function*(arg) {
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
oHashedData.Algorithm = cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
yield oHashedData.Hash(arg[0]);
return yield oHashedData.Value;
},data);
}
calcHash("<Node xmlns=\"urn:envelope\" xml:id=\"nodeID\">\n" +
" Hello, Node!\n" +
" </Node>");
я получаю Код:03A0D1C676EDC9AA4CFADA794C32B79D67A0A4023EB6E98A0DA1902EEBDB96D3
1. ОС Windows 7x64. Браузер - Опера 48. 2. Версия плагина - 2.0.13064, КриптоПро CSP - 3.6.7777 3. Подпись CAdES_BES я так понимаю. 4. Логи прикрепил, но может туда не всё вошло, тогда прошу пояснить что ещё и как включить. В реестр в 4 местах параметры прописал. signlog.LOG (2kb) загружен 5 раз(а).В чём может быть проблема? Мне очень не нравится результат канонизации xml, но я пробовал различные варианты - ничего не сходится. К сожалению, оставить подпись по шаблону я не могу, т.к. общая задача сложнее и включает кастомную нормализацию xml.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
При таком подсчете хеша Цитата:var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData"); oHashedData.Algorithm = cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411; yield oHashedData.Hash(arg[0]); return yield oHashedData.Value;
У вас xml воспринимается как UCS2LE строка. Это скорее всего не то что вы хотите. Что бы правильно передать данные вам надо выставить ContentEncoding и передать строку как base64 кодированную. http://cpdn.cryptopro.ru...es/content-encoding.html |
|
1 пользователь поблагодарил Анатолий Беляев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.11.2015(UTC) Сообщений: 14 Откуда: Москва Сказал(а) «Спасибо»: 11 раз
|
Автор: cross При таком подсчете хеша Цитата:var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData"); oHashedData.Algorithm = cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411; yield oHashedData.Hash(arg[0]); return yield oHashedData.Value;
У вас xml воспринимается как UCS2LE строка. Это скорее всего не то что вы хотите. Что бы правильно передать данные вам надо выставить ContentEncoding и передать строку как base64 кодированную. http://cpdn.cryptopro.ru...es/content-encoding.html Спасибо! Хэш сошёлся. Видел эту документацию, хотел попробовать, но там указано ContentEncoding, а в текущей версии плагина оно DataEncoding. Поэтому я решил, что меня это не касается. Наверно надо поменять в документации.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.11.2015(UTC) Сообщений: 14 Откуда: Москва Сказал(а) «Спасибо»: 11 раз
|
И всё-таки требуется помощь дальше( Теперь канонизирую SignedInfo с подставленным правильным хэшем, получаю: Код:<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"></SignatureMethod>
<Reference URI="#nodeID">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"></DigestMethod>
<DigestValue>HqSr6WBLm1fD1bm0XzTxm1Fio4xODWpI2kliY9Jqf80=</DigestValue>
</Reference>
</SignedInfo>
Загоняю его в base64, cчитаю от него хэш, получаю: Код:79415FBE02245F9767FABD779FF6FCB77989A03DB5112B4663ACFD1DA5205238
Далее методом Код:function CreateSignature(oCertificate, oHashedData) {
return cadesplugin.async_spawn(function*(arg) {
// Создаем объект CAdESCOM.RawSignature
var oRawSignature = yield cadesplugin.CreateObjectAsync("CAdESCOM.RawSignature");
// Вычисляем значение подписи
try {
var sRawSignature = yield oRawSignature.SignHash(arg[1], arg[0]);
} catch (err) {
alert("Failed to create signature. Error: " + cadesplugin.getLastError(err));
return;
}
return sRawSignature;
},oCertificate, oHashedData);
Получаю значение подписи. Ну, например, такую: Код:6F025FF0BA49E814FCA6B86CB0BC5BB6D163A09A1F8E20559BA649577F78FAEFBEE59E24DAFDC66EAE866FCF5ACB33E7CBEC2F4D5D27BCDC64D000AEC6E08E88
Далее её переводим в строку, переворачиваем и кодируем в Base64. Получаю Код:COgIbuwKAE3GzXvS1fTCvnw+s6z1/Gbo6mbcr03iWe77ro/3d5VkulkF4vihCToWbbvFC8uGa8pPgZ6kC/8l8A==
Вставляю в xml: Код:<?xml version="1.0" encoding="UTF-8"?>
<!--
Original XML doc file for sign example.
-->
<Envelope xmlns="urn:envelope">
<Data>
Hello, World!
</Data>
<Node xml:id="nodeID">
Hello, Node!
</Node>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<Reference URI="#nodeID">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue>HqSr6WBLm1fD1bm0XzTxm1Fio4xODWpI2kliY9Jqf80=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>COgIbuwKAE3GzXvS1fTCvnw+s6z1/Gbo6mbcr03iWe77ro/3d5VkulkF4vihCToWbbvFC8uGa8pPgZ6kC/8l8A==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIKAjCCCbGgAwIBAgIRAuGy2XrEDNGA5xE7srknKIIwCAYGKoUDAgIDMIIBozEg
MB4GCSqGSIb3DQEJARYRdnVjQGNhLmN1c3RvbXMucnUxGjAYBggqhQMDgQMBARIM
MDA3NzMwNjU0NDcxMRgwFgYFKoUDZAESDTExMTc3NDY4ODk5NDExezB5BgNVBAoM
ctCm0LXQvdGC0YDQsNC70YzQvdC+0LUg0LjQvdGE0L7RgNC80LDRhtC40L7QvdC9
0L4t0YLQtdGF0L3QuNGH0LXRgdC60L7QtSDRgtCw0LzQvtC20LXQvdC90L7QtSDR
g9C/0YDQsNCy0LvQtdC90LjQtTE6MDgGA1UECQwx0L/Quy7QmtC+0LzRgdC+0LzQ
vtC70YzRgdC60LDRjyDQtC4xINC60L7RgNC/LiDQkDEVMBMGA1UEBwwM0JzQvtGB
0LrQstCwMRswGQYDVQQIDBI3NyDQsy7QnNC+0YHQutCy0LAxCzAJBgNVBAYTAlJV
MU8wTQYDVQQDDEbQk9C+0LvQvtCy0L3QvtC5INGD0LTQvtGB0YLQvtCy0LXRgNGP
0Y7RidC40Lkg0YbQtdC90YLRgCDQodCS0KPQpiDQotCeMB4XDTE3MTAxNjA2MjAz
N1oXDTE5MTAxNjA2MzAzN1owggHaMR0wGwYJKoZIhvcNAQkBFg5kcm9ub3ZAYXNi
Yy5ydTEaMBgGCCqFAwOBAwEBEgwwMDc3MDM2MjA1OTMxFjAUBgUqhQNkAxILMTMy
MzUwMDU2MDUxGDAWBgUqhQNkARINMTA2Nzc2MTMyMzk1OTFuMGwGA1UECgxl0J7Q
ntCeINCQ0LLRgtC+0LzQsNGC0LjQt9C40YDQvtCy0LDQvdC90YvQtSDRgdC40YHR
gtC10LzRiyDQuCDQsdGO0LTQttC10YLQvdGL0Lkg0LrQvtC90YHQsNC70YLQuNC9
0LMxFTATBgNVBAcMDNCc0L7RgdC60LLQsDEcMBoGA1UECAwTNzcg0LMuINCc0L7R
gdC60LLQsDELMAkGA1UEBhMCUlUxLjAsBgNVBCoMJdCh0LXRgNCz0LXQuSDQktC7
0LDQtNC40LzQuNGA0L7QstC40YcxGTAXBgNVBAQMENCa0LDQv9C70YPQvdC+0LIx
bjBsBgNVBAMMZdCe0J7QniDQkNCy0YLQvtC80LDRgtC40LfQuNGA0L7QstCw0L3Q
vdGL0LUg0YHQuNGB0YLQtdC80Ysg0Lgg0LHRjtC00LbQtdGC0L3Ri9C5INC60L7Q
vdGB0LDQu9GC0LjQvdCzMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgED
QwAEQG8vIriPn+VO54BSqhAbE3SQI3/IKrBfRg86OaFdnOTixZYiyyhpv8aTQnck
tCBG18ndKwlKswrwG38E56JIlQujggWBMIIFfTAOBgNVHQ8BAf8EBAMCBPAwHQYD
VR0OBBYEFAsh6fS7ERipRkZuJbze4wCPMHwTMIIBYwYDVR0jBIIBWjCCAVaAFKQX
jOaHOlZNd0Vc8OmwBmSmLGmYoYIBKaSCASUwggEhMRowGAYIKoUDA4EDAQESDDAw
NzcxMDQ3NDM3NTEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAxMR4wHAYJKoZIhvcN
AQkBFg9kaXRAbWluc3Z5YXoucnUxPDA6BgNVBAkMMzEyNTM3NSDQsy4g0JzQvtGB
0LrQstCwINGD0LsuINCi0LLQtdGA0YHQutCw0Y8g0LQuNzEsMCoGA1UECgwj0JzQ
uNC90LrQvtC80YHQstGP0LfRjCDQoNC+0YHRgdC40LgxFTATBgNVBAcMDNCc0L7R
gdC60LLQsDEcMBoGA1UECAwTNzcg0LMuINCc0L7RgdC60LLQsDELMAkGA1UEBhMC
UlUxGzAZBgNVBAMMEtCj0KYgMSDQmNChINCT0KPQpoIRBKgeQAWpGFyC5hESydxH
IGEwXAYDVR0lBFUwUwYIKwYBBQUHAwIGCCsGAQUFBwMEBgcqhQMDgVcLBgcqhQMD
gVcMBgcqhQMDgVcNBgcqhQMDgVcEBgcqhQMDgVcGBgcqhQMDgVcHBgcqhQMDgVcI
MHQGCSsGAQQBgjcVCgRnMGUwCgYIKwYBBQUHAwIwCgYIKwYBBQUHAwQwCQYHKoUD
A4FXCzAJBgcqhQMDgVcMMAkGByqFAwOBVw0wCQYHKoUDA4FXBDAJBgcqhQMDgVcG
MAkGByqFAwOBVwcwCQYHKoUDA4FXCDAdBgNVHSAEFjAUMAgGBiqFA2RxATAIBgYq
hQNkcQIwKwYDVR0QBCQwIoAPMjAxNzEwMTYwNjIwMzZagQ8yMDE5MTAxNjA2MjAz
NlowggEwBgUqhQNkcASCASUwggEhDCsi0JrRgNC40L/RgtC+0J/RgNC+IENTUCIg
KNCy0LXRgNGB0LjRjyA0LjApDCwi0JrRgNC40L/RgtC+0J/RgNC+INCj0KYiICjQ
stC10YDRgdC40LggMi4wKQxf0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQ
stC10YLRgdGC0LLQuNGPINCk0KHQkSDQoNC+0YHRgdC40Lgg0KHQpC8xMjQtMjg2
NCDQvtGCIDIwLjAzLjIwMTYMY9Ch0LXRgNGC0LjRhNC40LrQsNGCINGB0L7QvtGC
0LLQtdGC0YHRgtCy0LjRjyDQpNCh0JEg0KDQvtGB0YHQuNC4IOKEliDQodCkLzEy
OC0yODgxINC+0YIgMTIuMDQuMjAxNjA2BgUqhQNkbwQtDCsi0JrRgNC40L/RgtC+
0J/RgNC+IENTUCIgKNCy0LXRgNGB0LjRjyA0LjApMIGiBgNVHR8EgZowgZcwOqA4
oDaGNGh0dHA6Ly92dWMuY3VzdG9tcy5ydS9jZHAvZ29sb3Zub3lfdWNfc3Z1Y3Rv
XzEuMi5jcmwwWaBXoFWGU2h0dHA6Ly9zdnVjdG9zLmduaXZjLmVhaXMuY3VzdG9t
cy5ydS9pbWFnZXMvc3Rvcmllcy9maWxlL2dvbG92bm95X3VjX3N2dWN0b18xLjIu
Y3JsMIGzBggrBgEFBQcBAQSBpjCBozBABggrBgEFBQcwAoY0aHR0cDovL3Z1Yy5j
dXN0b21zLnJ1L2NkcC9nb2xvdm5veV91Y19zdnVjdG9fMS4yLmNydDBfBggrBgEF
BQcwAoZTaHR0cDovL3N2dWN0b3MuZ25pdmMuZWFpcy5jdXN0b21zLnJ1L2ltYWdl
cy9zdG9yaWVzL2ZpbGUvZ29sb3Zub3lfdWNfc3Z1Y3RvXzEuMi5jcnQwCAYGKoUD
AgIDA0EAzJVsgK9HU1Nca25p/04ufYfXouKzgvEX62v+PUnDI7D0NojMmE97tykJ
KYuYOoOtaTS2V8Uya1KcXPWiU0ALQg==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</Envelope>
И вызываю Verify, получаю: Failed to verify signature. Error: An error was encountered while processing an XML digital signature. (0x800705BA) В связи с этим вопросы: 1. Где я ошибаюсь? 2. Есть ли возможность в дебаге или ещё как-то увидеть хэш от SignedInfo при подписывании по шаблону(это по крайней мере бы исключило ошибку на этапе канонизации)? 3. Алгоритм подписи определяется по сертификату и в подписи по шаблону участвует только с целью информирования при проверке об алгоритме подписи? Отредактировано пользователем 24 октября 2017 г. 13:50:22(UTC)
| Причина: Прикрепил не перевернутую строку.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.11.2015(UTC) Сообщений: 14 Откуда: Москва Сказал(а) «Спасибо»: 11 раз
|
Попробовал изменить xml чтобы уменьшить вероятность неправильных преобразований - убрал из него все переносы. Хэш данных получаю правильный, дальше канонизирую SignedInfo, получаю: Код:<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"></SignatureMethod><Reference URI="#nodeID"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"></DigestMethod><DigestValue>M1BO3FqOZzuKQUprrU7WLbs9R5aoMKTuKr5Xcu38yYs=</DigestValue></Reference></SignedInfo>
Кодирую в Base64, получаю хэш: Код:80F10DDF555F5B471D2E108217D3BC19546AB8737DCC9125845BA72EB8FF9270
Теперь Получаю подпись этого хэша. Ну например: Код:9932E52A50235C0AE32ADC2CDC247383DDE5086D8DAD57A92DE670961349D5A8C234ED8DE8172AEDAAA9D36A63D06D285FDFD53EC307718F4AB30487D23D91E4
Теперь её надо перевернуть. Просмотрел много тем(да и стандарт) и так и не могу сказать что понял как переворачивать. Вроде бы согласно этой темеКод:function reverseStr(str) {
var newStr = '', i;
for (i = str.length - 1; i >= 0; i--) {
newStr += str.charAt(i);
}
return newStr;
}
function hex2bin(hex)
{
var bytes = [], str;
for(var i=0; i< hex.length-1; i+=2)
bytes.push(parseInt(hex.substr(i, 2), 16));
return String.fromCharCode.apply(String, bytes);
}
var bin = hex2bin("9932E52A50235C0AE32ADC2CDC247383DDE5086D8DAD57A92DE670961349D5A8C234ED8DE8172AEDAAA9D36A63D06D285FDFD53EC307718F4AB30487D23D91E4");
bin = reverseStr(bin);
у меня получается такая строка: Код:ä=Ò³JqÃ>Õß_(mÐcjÓ©ªí*èí4¨ÕIpæ-©WmåÝs$Ü,Ü*ã
\#P*å2
т.е. получаем hex, переводим в bin и дальше строку посимвольно переворачиваем. Может кто-нибудь проверить корректность этого преобразования? Или просто для данной строки выдать корректный base64. И ещё прошу для xml Код:<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="urn:envelope"><Data>Hello, World!</Data><Node xml:id="nodeID">Hello, Node!</Node><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/><Reference URI="#nodeID"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><DigestValue>M1BO3FqOZzuKQUprrU7WLbs9R5aoMKTuKr5Xcu38yYs=</DigestValue></Reference></SignedInfo><SignatureValue/><KeyInfo>
<X509Data>
<X509Certificate>MIIKAjCCCbGgAwIBAgIRAuGy2XrEDNGA5xE7srknKIIwCAYGKoUDAgIDMIIBozEg
MB4GCSqGSIb3DQEJARYRdnVjQGNhLmN1c3RvbXMucnUxGjAYBggqhQMDgQMBARIM
MDA3NzMwNjU0NDcxMRgwFgYFKoUDZAESDTExMTc3NDY4ODk5NDExezB5BgNVBAoM
ctCm0LXQvdGC0YDQsNC70YzQvdC+0LUg0LjQvdGE0L7RgNC80LDRhtC40L7QvdC9
0L4t0YLQtdGF0L3QuNGH0LXRgdC60L7QtSDRgtCw0LzQvtC20LXQvdC90L7QtSDR
g9C/0YDQsNCy0LvQtdC90LjQtTE6MDgGA1UECQwx0L/Quy7QmtC+0LzRgdC+0LzQ
vtC70YzRgdC60LDRjyDQtC4xINC60L7RgNC/LiDQkDEVMBMGA1UEBwwM0JzQvtGB
0LrQstCwMRswGQYDVQQIDBI3NyDQsy7QnNC+0YHQutCy0LAxCzAJBgNVBAYTAlJV
MU8wTQYDVQQDDEbQk9C+0LvQvtCy0L3QvtC5INGD0LTQvtGB0YLQvtCy0LXRgNGP
0Y7RidC40Lkg0YbQtdC90YLRgCDQodCS0KPQpiDQotCeMB4XDTE3MTAxNjA2MjAz
N1oXDTE5MTAxNjA2MzAzN1owggHaMR0wGwYJKoZIhvcNAQkBFg5kcm9ub3ZAYXNi
Yy5ydTEaMBgGCCqFAwOBAwEBEgwwMDc3MDM2MjA1OTMxFjAUBgUqhQNkAxILMTMy
MzUwMDU2MDUxGDAWBgUqhQNkARINMTA2Nzc2MTMyMzk1OTFuMGwGA1UECgxl0J7Q
ntCeINCQ0LLRgtC+0LzQsNGC0LjQt9C40YDQvtCy0LDQvdC90YvQtSDRgdC40YHR
gtC10LzRiyDQuCDQsdGO0LTQttC10YLQvdGL0Lkg0LrQvtC90YHQsNC70YLQuNC9
0LMxFTATBgNVBAcMDNCc0L7RgdC60LLQsDEcMBoGA1UECAwTNzcg0LMuINCc0L7R
gdC60LLQsDELMAkGA1UEBhMCUlUxLjAsBgNVBCoMJdCh0LXRgNCz0LXQuSDQktC7
0LDQtNC40LzQuNGA0L7QstC40YcxGTAXBgNVBAQMENCa0LDQv9C70YPQvdC+0LIx
bjBsBgNVBAMMZdCe0J7QniDQkNCy0YLQvtC80LDRgtC40LfQuNGA0L7QstCw0L3Q
vdGL0LUg0YHQuNGB0YLQtdC80Ysg0Lgg0LHRjtC00LbQtdGC0L3Ri9C5INC60L7Q
vdGB0LDQu9GC0LjQvdCzMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgED
QwAEQG8vIriPn+VO54BSqhAbE3SQI3/IKrBfRg86OaFdnOTixZYiyyhpv8aTQnck
tCBG18ndKwlKswrwG38E56JIlQujggWBMIIFfTAOBgNVHQ8BAf8EBAMCBPAwHQYD
VR0OBBYEFAsh6fS7ERipRkZuJbze4wCPMHwTMIIBYwYDVR0jBIIBWjCCAVaAFKQX
jOaHOlZNd0Vc8OmwBmSmLGmYoYIBKaSCASUwggEhMRowGAYIKoUDA4EDAQESDDAw
NzcxMDQ3NDM3NTEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAxMR4wHAYJKoZIhvcN
AQkBFg9kaXRAbWluc3Z5YXoucnUxPDA6BgNVBAkMMzEyNTM3NSDQsy4g0JzQvtGB
0LrQstCwINGD0LsuINCi0LLQtdGA0YHQutCw0Y8g0LQuNzEsMCoGA1UECgwj0JzQ
uNC90LrQvtC80YHQstGP0LfRjCDQoNC+0YHRgdC40LgxFTATBgNVBAcMDNCc0L7R
gdC60LLQsDEcMBoGA1UECAwTNzcg0LMuINCc0L7RgdC60LLQsDELMAkGA1UEBhMC
UlUxGzAZBgNVBAMMEtCj0KYgMSDQmNChINCT0KPQpoIRBKgeQAWpGFyC5hESydxH
IGEwXAYDVR0lBFUwUwYIKwYBBQUHAwIGCCsGAQUFBwMEBgcqhQMDgVcLBgcqhQMD
gVcMBgcqhQMDgVcNBgcqhQMDgVcEBgcqhQMDgVcGBgcqhQMDgVcHBgcqhQMDgVcI
MHQGCSsGAQQBgjcVCgRnMGUwCgYIKwYBBQUHAwIwCgYIKwYBBQUHAwQwCQYHKoUD
A4FXCzAJBgcqhQMDgVcMMAkGByqFAwOBVw0wCQYHKoUDA4FXBDAJBgcqhQMDgVcG
MAkGByqFAwOBVwcwCQYHKoUDA4FXCDAdBgNVHSAEFjAUMAgGBiqFA2RxATAIBgYq
hQNkcQIwKwYDVR0QBCQwIoAPMjAxNzEwMTYwNjIwMzZagQ8yMDE5MTAxNjA2MjAz
NlowggEwBgUqhQNkcASCASUwggEhDCsi0JrRgNC40L/RgtC+0J/RgNC+IENTUCIg
KNCy0LXRgNGB0LjRjyA0LjApDCwi0JrRgNC40L/RgtC+0J/RgNC+INCj0KYiICjQ
stC10YDRgdC40LggMi4wKQxf0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQ
stC10YLRgdGC0LLQuNGPINCk0KHQkSDQoNC+0YHRgdC40Lgg0KHQpC8xMjQtMjg2
NCDQvtGCIDIwLjAzLjIwMTYMY9Ch0LXRgNGC0LjRhNC40LrQsNGCINGB0L7QvtGC
0LLQtdGC0YHRgtCy0LjRjyDQpNCh0JEg0KDQvtGB0YHQuNC4IOKEliDQodCkLzEy
OC0yODgxINC+0YIgMTIuMDQuMjAxNjA2BgUqhQNkbwQtDCsi0JrRgNC40L/RgtC+
0J/RgNC+IENTUCIgKNCy0LXRgNGB0LjRjyA0LjApMIGiBgNVHR8EgZowgZcwOqA4
oDaGNGh0dHA6Ly92dWMuY3VzdG9tcy5ydS9jZHAvZ29sb3Zub3lfdWNfc3Z1Y3Rv
XzEuMi5jcmwwWaBXoFWGU2h0dHA6Ly9zdnVjdG9zLmduaXZjLmVhaXMuY3VzdG9t
cy5ydS9pbWFnZXMvc3Rvcmllcy9maWxlL2dvbG92bm95X3VjX3N2dWN0b18xLjIu
Y3JsMIGzBggrBgEFBQcBAQSBpjCBozBABggrBgEFBQcwAoY0aHR0cDovL3Z1Yy5j
dXN0b21zLnJ1L2NkcC9nb2xvdm5veV91Y19zdnVjdG9fMS4yLmNydDBfBggrBgEF
BQcwAoZTaHR0cDovL3N2dWN0b3MuZ25pdmMuZWFpcy5jdXN0b21zLnJ1L2ltYWdl
cy9zdG9yaWVzL2ZpbGUvZ29sb3Zub3lfdWNfc3Z1Y3RvXzEuMi5jcnQwCAYGKoUD
AgIDA0EAzJVsgK9HU1Nca25p/04ufYfXouKzgvEX62v+PUnDI7D0NojMmE97tykJ
KYuYOoOtaTS2V8Uya1KcXPWiU0ALQg==</X509Certificate>
</X509Data>
</KeyInfo></Signature></Envelope>
дать канонизированное представление SignedInfo
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.10.2017(UTC) Сообщений: 7 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close