Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline azazm  
#1 Оставлено : 5 марта 2020 г. 16:06:49(UTC)
azazm

Статус: Новичок

Группы: Участники
Зарегистрирован: 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
..........................



А как получить реальные читаемые значения, которые можно показать пользователю?




Offline Андрей *  
#2 Оставлено : 5 марта 2020 г. 17:11:20(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Здравствуйте.

OID комментария - 1.2.643.2.45.1.1.1
Техническую поддержку оказываем тут
Наша база знаний
Offline Анатолий Беляев  
#3 Оставлено : 5 марта 2020 г. 17:14:27(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Приложите подпись с этим атрибутом. Там скорее всего более сложная структура чем просто UTF8String закодированный у вас. Или вы просто не в тот oid добавляете.

Отредактировано пользователем 5 марта 2020 г. 17:15:13(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline azazm  
#4 Оставлено : 6 марта 2020 г. 5:37:38(UTC)
azazm

Статус: Новичок

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline two_oceans  
#5 Оставлено : 6 марта 2020 г. 7:09:14(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 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)  | Причина: Не указана

Offline Андрей *  
#6 Оставлено : 6 марта 2020 г. 9:59:59(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Мы о разных КриптоАРМ-ах или в разных местах смотрим?

У меня создаётся и он отображает.

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



Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#7 Оставлено : 6 марта 2020 г. 10:04:39(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Snimok ehkrana ot 2020-03-06 11-04-25.png (58kb) загружен 8 раз(а).

Приложенный файл - атрибут отображается в КриптоАРМ.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#8 Оставлено : 6 марта 2020 г. 10:06:43(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: 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.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#9 Оставлено : 6 марта 2020 г. 10:11:48(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Цитата:
Файл тот же самый, подписываю его в КриптоАРМе, 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 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#10 Оставлено : 6 марта 2020 г. 10:13:58(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.