Статус: Новичок
Группы: Участники
Зарегистрирован: 27.11.2017(UTC) Сообщений: 8
|
Пытаюсь с помощью КриптоПро Browser plug-in расшифровать xml, зашифрованную gost28147. Вытаскиваю из тега xenc:CipherValue закодированное сообщение, передаю в функцию decrypt, и пытаюсь расшифровать ключом сертификата, которым производилось шифрование: Код:decrypt(encryptedContent: string, certHash: string) {
return new Promise(function (resolve, reject) {
cadesplugin.async_spawn(function* (args) {
try {
let store = yield cadesplugin.CreateObjectAsync("CAPICOM.Store");
yield store.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE,
cadesplugin.CAPICOM_MY_STORE,
cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
let certificatesObj = yield store.Certificates;
let certificates = yield certificatesObj.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, args[1]);
let certificate = yield certificates.Item(1);
let oEnvelop = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPEnvelopedData");
yield oEnvelop.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
yield oEnvelop.propset_Content(args[0]);
let rp = yield oEnvelop.Recipients;
yield rp.Clear();
yield rp.Add(certificate);
let decryptedContent = yield oEnvelop.Decrypt(args[0]);
yield store.Close();
args[2](decryptedContent);
}
catch (e) {
args[3](`Ошибка при дешифровании сообщения: ${cadesplugin.getLastError(e)}`);
}
}, encryptedContent, certHash, resolve, reject);
});
},
Метод oEnvelop.Decrypt пытался вызывать тремя способами: 1. без параметров: КриптоПро Browser plug-in завершает работу; 2. передать в качестве аргумента сертификат: возвращалась ошибка "Parameter is incorrect"; 3. передать в качестве аргумента закодированное сообщение: возвращалась ошибка "asn1 bad tag value met". Подскажите, как правильно использовать плагин для расшифровки.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Derypt ожидает на вход CMS EnvelopedData message. Скорее всего что в теге некоего xml в поле xenc:CipherValue лежит не это. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 27.11.2017(UTC) Сообщений: 8
|
На вход передаются правильные данные. Их удавалось расшифровать средствами .net, а через апи плагина ошибка "asn1 bad tag value met". Может я неправильно передаю контент методом propset_Content? В моём варианте получается, что в Decrypt передаётся тот же параметр, что устанавливается в propset_Content, это точно правильно?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
То что вы расшифровали с помощью некоего кода в .NET это не говорит о формате данных ни чего. Decrypt ожидает что данные будут правильно ASN1 закодированное сообщение CMS Enveloped Data. У меня есть большие сомнения что в этом теге именно эти данные находятся. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 27.11.2017(UTC) Сообщений: 8
|
Хорошо, один момент, кажется, выяснили, параметром метода decrypt должен быть секретный ключ в BASE64 кодировке, находящийся в xml. Итого получается, что в объект CAdESCOM.CPEnvelopedData я передаю следующие параметры: - recipients: сертификат, которым должно выполниться дешифрование - content: сообщение, которое должно быть расшифровано - аргумент метода decrypt: секретный ключ Всё верно? Я проверил секретный ключ в онлайн сервисе https://lapo.it/asn1js/, получился такой результат: Код:SEQUENCE(2 elem)
SEQUENCE(2 elem)
OCTET STRING(32 byte) 32FE964805D3EF28DEE63506272169FC2FEF3AE4B657960AECE9871470D5CFF8
OCTET STRING(4 byte) 19F615DA
[0](3 elem)
OBJECT IDENTIFIER1.2.643.2.2.31.1cryptoProCipherA(CryptoPro params A for GOST 28147-89)
[0](2 elem)
SEQUENCE(2 elem)
OBJECT IDENTIFIER1.2.643.2.2.19gostPublicKey(GOST R 34.10-2001 (ECC) public key)
SEQUENCE(2 elem)
OBJECT IDENTIFIER1.2.643.2.2.36.0cryptoProSignXA(CryptoPro ell.curve XA for GOST R 34.11-2001)
Offset: 70
Length: 2+7
Value:
1.2.643.2.2.36.0
cryptoProSignXA
CryptoPro ell.curve XA for GOST R 34.11-2001
OBJECT IDENTIFIER1.2.643.2.2.30.1cryptoProDigestA(CryptoPro digest params for GOST R 34.11-94)
BIT STRING(1 elem)
OCTET STRING(64 byte) ...
OCTET STRING(8 byte) ...
Это вроде похоже на ASN.1 закодированное сообщение, но метод Decrypt по-прежнему возвращает "asn1 bad tag value met". Подскажите, может с этим секретным ключом нужно ещё что-то сделать?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close