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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline chomper  
#1 Оставлено : 29 мая 2015 г. 15:57:29(UTC)
chomper

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.04.2008(UTC)
Сообщений: 85

Поблагодарили: 9 раз в 6 постах
Приветствую, коллеги.

Пытаюсь добавить в запрос, формируемый через ICEnroll4 расширение SubjectAltName, с помощью ICertEncodeAltName.

Завис на том, что в методе SetNameEntry для типа CERT_ALT_NAME_OTHER_NAME значением должно быть:
Цитата:
The name consists of an object identifier (OID) and a binary BLOB.


Никак не соображу в каком формате передавать, к примеру такое значение:
Код:
OID.1.2.643.100.5=369900000000000


В результате надо получить похожее на это:
Код:
SEQUENCE {
  OBJECT IDENTIFIER subjectAltName (2 5 29 17)
    OCTET STRING, encapsulates {
      SEQUENCE {
        [4] {
          SEQUENCE {
            SET {
              SEQUENCE {
                OBJECT IDENTIFIER '1 2 643 100 5'
                NumericString '369900000000000'
              }
            }
          }
        }
      }
    }
  }
}


Пробовал разные варианты:
Код:
CertEnc.SetNameEntry($80000000, CERT_ALT_NAME_OTHER_NAME, ...);
и
CertEnc.SetNameEntry(0, CERT_ALT_NAME_OTHER_NAME, ...);


Со строкой в качестве значения проглатывает, но метод Encode выдает ошибку что "Параметр задан неверно".

Пробовал подсунуть туда бинарные данные, вытащенные из рабочего сертификата, метод SetNameEntry сразу выдает "Неверные аргументы ASN1 при вызове функции".

Может кто подскажет как надо?

Спасибо.
Offline Kirill Sobolev  
#2 Оставлено : 29 мая 2015 г. 16:51:00(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Вариант со строкой должен проходить.
Чтобы правильно передать бинарные данные в виде строки можно воспользоваться CAPICOM.Utilities ByteArrayToBinaryString.
Техническую поддержку оказываем тут
Наша база знаний
Offline chomper  
#3 Оставлено : 1 июня 2015 г. 13:53:47(UTC)
chomper

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.04.2008(UTC)
Сообщений: 85

Поблагодарили: 9 раз в 6 постах
Удалось таки распарсить бинарные данные из рабочего сертификата с помощью IUtilities.HexToBinary и подсунув ответ в ICertEncodeAltName.Decode.

Вместо CERT_ALT_NAME_OTHER_NAME для добавления ОГРНИП (OID.1.2.643.100.5) надо использовать CERT_ALT_NAME_DIRECTORY_NAME.

Но как создать всю описанную выше цепочку вложенности не понятно.
Offline Kirill Sobolev  
#4 Оставлено : 1 июня 2015 г. 14:55:16(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
ASN.1 структура создается при вызове метода ICertEncodeAltName::Encode.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.