Статус: Новичок
Группы: Участники
Зарегистрирован: 22.02.2020(UTC) Сообщений: 5
Сказал(а) «Спасибо»: 1 раз
|
Добрый день, добавляю комментарий к откреплённой подписи, чтобы его можно было увидеть в КриптоАРМе. Но, к сожалению, комментарий не отображается в окне "Информация о подписи и сертификате". Код: Код:
function SignHashAsync(dataToSign, thumbprint) {
return new Promise(function(resolve, reject) {
cadesplugin.async_spawn(function*(arg) {
var oStore;
try {
oStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store");
yield oStore.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE, cadesplugin.CAPICOM_MY_STORE, cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var allCertificates = yield oStore.Certificates;
var oCertificates = yield allCertificates.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);
var certificatesCount = yield oCertificates.Count;
if (certificatesCount === 0) {
return reject("Сертификат не найден в хранилище.");
}
var oCertificate = yield oCertificates.Item(1);
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411);
yield oHashedData.SetHashValue(dataToSign);
var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
oSigner.propset_Certificate(oCertificate);
var oCadesSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
oCadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
var SignatureComment = 'lala 123 привет!@'; // Строка для записи в комментарий
var CommentOBJ = yield cadesplugin.CreateObjectAsync("CADESCOM.CPAttribute");
// Размер русских символов = символ * 2.
var RussiansSymbolsLength = 0;
var RussiansSymbols = SignatureComment.match(/[А-яЁё]/g);
if(RussiansSymbols !== null)
RussiansSymbolsLength = RussiansSymbols.length;
var CommentValue = String.fromCharCode(0x0C) + String.fromCharCode(SignatureComment.length + RussiansSymbolsLength) + SignatureComment;
yield CommentOBJ.propset_ValueEncoding(cadesplugin.CADESCOM_ENCODE_BASE64);
var CommentOID = yield CommentOBJ.OID;
yield CommentOID.propset_Value('1.3.6.1.4.1.311.2.1.120'); // OID комментария в КриптоАРМ
yield CommentOBJ.propset_Value(b64EncodeUnicode(CommentValue));
var Attr = yield oSigner.AuthenticatedAttributes2;
yield Attr.Add(CommentOBJ);
var signatureHex = yield oCadesSignedData.SignHash(oHashedData, oSigner, cadesplugin.CADESCOM_CADES_BES);
return resolve(signatureHex);
} catch (err) {
return reject("Не удалось создать подпись. " + GetErrorMessage(err));
} finally {
if (oStore) {
yield oStore.Close();
}
}
});
});
}
Функция отрабатывает без ошибок, подпись успешно проверяется КриптоАРМом. Но комментарий к подписи пуст. При попытке распечатать информацию о подписи и сертификате, я вижу что такой OID появился: Цитата: Атрибуты
1.2.840.113549.1.9.3 (Тип содержимого) 1.2.840.113549.1.7.1 (PKCS#7 - data) 1.2.840.113549.1.9.5 (Время подписания) 05.03.2020 12:43:58 UTC 1.3.6.1.4.1.311.2.1.120 0c 17 6c 61 6c 61 20 31 32 33 20 d0 bf d1 80 d0 b8 d0 b2 d0 b5 d1 82 21 40
Но его значение отличается от того значения, которое формируется при подписи файла в самом КриптоАРМе. Там оно выглядит так: Цитата: ..... 1.3.6.1.4.1.311.2.1.120 Комментарий нет Использование подписи Согласовано (1.2.643.6.3.1.3) ....
Ну и по поводу получения значения комментария. Пытаюсь делать так: Код:
............................................
var Attr = yield cadesplugin.CreateObjectAsync('CADESCOM.CPAttribute');
let Attrs = yield Signer.AuthenticatedAttributes2;
let Attrsc = yield Attrs.Count;
for(var i=1; i<=Attrsc; i++) {
let AttrsItem = yield Attrs.Item(i);
let AttrsItemO = yield AttrsItem.OID;
let AttrsItemN = yield AttrsItemO.FriendlyName;
let AttrsItemV = yield AttrsItemO.Value;
console.log(AttrsItemN + " : " + AttrsItemV);
}
............................................
Где в результате получаю: Цитата: .......................... Время подписания : 1.2.840.113549.1.9.5 1.3.6.1.4.1.311.2.1.120 : 1.3.6.1.4.1.311.2.1.120 ..........................
А как получить реальные читаемые значения, которые можно показать пользователю?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,255 Сказал «Спасибо»: 545 раз Поблагодарили: 2193 раз в 1712 постах
|
Здравствуйте.
OID комментария - 1.2.643.2.45.1.1.1
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Приложите подпись с этим атрибутом. Там скорее всего более сложная структура чем просто UTF8String закодированный у вас. Или вы просто не в тот oid добавляете. Отредактировано пользователем 5 марта 2020 г. 17:15:13(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 22.02.2020(UTC) Сообщений: 5
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей * Здравствуйте.
OID комментария - 1.2.643.2.45.1.1.1
Изменил OID на этот, но комментарий по-прежнему не отображается в КриптоАРМ при проверке подписи. При нажатии на кнопку "Печать" в окне "Информация о подписи и сертификате" в конце получаю примерно такое: Цитата: 1.2.840.113549.1.9.5 (Время подписания) 06.03.2020 02:14:04 UTC 1.2.643.2.45.1.1.1 0c 17 6c 61 6c 61 20 31 32 33 20 d0 bf d1 80 d0 b8 d0 b2 d0 b5 d1 82 21 40
Хэш, который подписывается: FC2B713BD020156990E085745BE5D5D1F5F75AC45E9221FB60F454306DE8CD06 Прикрепляю сигнатуру, в которой OID = 1.2.643.2.45.1.1.1:
Хэш посчитан от файла: Jellyfish.jpg (758kb) загружен 5 раз(а). Теперь о получении комментария из подписи. Файл тот же самый, подписываю его в КриптоАРМе, c комментарием "рус eng @@!". Сигнатура:
Этот комментарий также не отображается в списке атрибутов, которые я пытаюсь получить: Код:
............................................
var Attr = yield cadesplugin.CreateObjectAsync('CADESCOM.CPAttribute');
let Attrs = yield Signer.AuthenticatedAttributes2;
let Attrsc = yield Attrs.Count;
for(var i=1; i<=Attrsc; i++) {
let AttrsItem = yield Attrs.Item(i);
let AttrsItemO = yield AttrsItem.OID;
let AttrsItemN = yield AttrsItemO.FriendlyName;
let AttrsItemV = yield AttrsItemO.Value;
console.log(AttrsItemN + " : " + AttrsItemV);
}
............................................
Отредактировано пользователем 6 марта 2020 г. 11:00:55(UTC)
| Причина: Не указана
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Структура в созданном КриптоАрм файле посложнее: Код:1002 44: SEQUENCE {
1004 10: OBJECT IDENTIFIER '1 3 6 1 4 1 311 2 1 120'
1016 30: SET {
1018 28: SEQUENCE {
1020 22: BMPString '.@.C.A e n g @ @ ! '
1044 0: BMPString
: Error: Object has zero length.
1046 0: BMPString
: Error: Object has zero length.
: }
: }
: }
В Вашем файле Код:1005 37: SEQUENCE {
1007 8: OBJECT IDENTIFIER '1 2 643 2 45 1 1 1'
1017 25: SET {
1019 23: UTF8String 'lala 123 ............!@'
: }
: }
Не поручусь какой формат для 1 2 643 2 45 1 1 1, но для 1 3 6 1 4 1 311 2 1 120 явно не хватает последовательности в начале и двух пустых строк в конце (идентификатор ресурса? использование подписи?) плюс тип строки другой. Отредактировано пользователем 6 марта 2020 г. 7:19:09(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,255 Сказал «Спасибо»: 545 раз Поблагодарили: 2193 раз в 1712 постах
|
Мы о разных КриптоАРМ-ах или в разных местах смотрим? У меня создаётся и он отображает. Snimok ehkrana ot 2020-03-06 10-57-15.png (25kb) загружен 12 раз(а). Snimok ehkrana ot 2020-03-06 10-57-50.png (22kb) загружен 11 раз(а).Цитата: SEQUENCE(2 elem) OBJECT IDENTIFIER1.2.643.7.1.1.2.2 NULL [0](5 elem) SEQUENCE(2 elem) OBJECT IDENTIFIER1.2.840.113549.1.9.3 SET(1 elem) OBJECT IDENTIFIER1.2.840.113549.1.7.1 SEQUENCE(2 elem) OBJECT IDENTIFIER1.2.840.113549.1.9.5 SET(1 elem) UTCTime2020-03-06 06:54:49 UTC SEQUENCE(2 elem) OBJECT IDENTIFIER1.2.643.2.45.1.1.1 SET(1 elem) BMPString привет! hello! SEQUENCE(2 elem) OBJECT IDENTIFIER1.2.840.113549.1.9.4 SET(1 elem) OCTET STRING(32 byte) 11F6937350AA4A15A73993A782D735266F2280A54F7662FBCA98B2D7F92F71CC
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,255 Сказал «Спасибо»: 545 раз Поблагодарили: 2193 раз в 1712 постах
|
Snimok ehkrana ot 2020-03-06 11-04-25.png (58kb) загружен 8 раз(а).Приложенный файл - атрибут отображается в КриптоАРМ. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,255 Сказал «Спасибо»: 545 раз Поблагодарили: 2193 раз в 1712 постах
|
Автор: two_oceans Структура в созданном КриптоАрм файле посложнее: Код:1002 44: SEQUENCE {
1004 10: OBJECT IDENTIFIER '1 3 6 1 4 1 311 2 1 120'
1016 30: SET {
1018 28: SEQUENCE {
1020 22: BMPString '.@.C.A e n g @ @ ! '
1044 0: BMPString
: Error: Object has zero length.
1046 0: BMPString
: Error: Object has zero length.
: }
: }
: }
В Вашем файле Код:1005 37: SEQUENCE {
1007 8: OBJECT IDENTIFIER '1 2 643 2 45 1 1 1'
1017 25: SET {
1019 23: UTF8String 'lala 123 ............!@'
: }
: }
Не поручусь какой формат для 1 2 643 2 45 1 1 1, но для 1 3 6 1 4 1 311 2 1 120 явно не хватает последовательности в начале и двух пустых строк в конце (идентификатор ресурса? использование подписи?) плюс тип строки другой. это другой вариант "хранения" информации... 3 строки в OID = 1 3 6 1 4 1 311 2 1 120. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,255 Сказал «Спасибо»: 545 раз Поблагодарили: 2193 раз в 1712 постах
|
Цитата: Файл тот же самый, подписываю его в КриптоАРМе, c комментарием "рус eng @@!". Snimok ehkrana ot 2020-03-06 11-10-29.png (19kb) загружен 6 раз(а). Snimok ehkrana ot 2020-03-06 11-11-43.png (22kb) загружен 5 раз(а). Snimok ehkrana ot 2020-03-06 11-10-22.png (12kb) загружен 6 раз(а). |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,255 Сказал «Спасибо»: 545 раз Поблагодарили: 2193 раз в 1712 постах
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close