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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Dmitriy3008  
#1 Оставлено : 16 сентября 2009 г. 18:44:20(UTC)
Dmitriy3008

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Приветствую! Такой вопрос:
В Delphi в модуле wcrypt2.pas объявлены такие константы:
Код:
const 
  CERT_DIGITAL_SIGNATURE_KEY_USAGE    = $80;
  CERT_NON_REPUDIATION_KEY_USAGE      = $40;
  CERT_KEY_ENCIPHERMENT_KEY_USAGE     = $20;
  CERT_DATA_ENCIPHERMENT_KEY_USAGE    = $10;
  CERT_KEY_AGREEMENT_KEY_USAGE        = $08;
  CERT_KEY_CERT_SIGN_KEY_USAGE        = $04;
  CERT_OFFLINE_CRL_SIGN_KEY_USAGE     = $02;

  CERT_CRL_SIGN_KEY_USAGE             = $02;

В C++ в модуле wincrypt.h этот список дополнен
Код:
// Byte[0]
#define CERT_DIGITAL_SIGNATURE_KEY_USAGE     0x80
#define CERT_NON_REPUDIATION_KEY_USAGE       0x40
#define CERT_KEY_ENCIPHERMENT_KEY_USAGE      0x20
#define CERT_DATA_ENCIPHERMENT_KEY_USAGE     0x10
#define CERT_KEY_AGREEMENT_KEY_USAGE         0x08
#define CERT_KEY_CERT_SIGN_KEY_USAGE         0x04
#define CERT_OFFLINE_CRL_SIGN_KEY_USAGE      0x02
#define CERT_CRL_SIGN_KEY_USAGE              0x02
#define CERT_ENCIPHER_ONLY_KEY_USAGE         0x01
// Byte[1]
#define CERT_DECIPHER_ONLY_KEY_USAGE         0x80

Сравниваю просто:
Код:
  if Flags and CERT_DIGITAL_SIGNATURE_KEY_USAGE = CERT_DIGITAL_SIGNATURE_KEY_USAGE then
     Result := Result + ' ' + 'Digital Signature';
  и т.д.

Но CERT_DIGITAL_SIGNATURE_KEY_USAGE и CERT_DECIPHER_ONLY_KEY_USAGE равны, а также CERT_OFFLINE_CRL_SIGN_KEY_USAGE и CERT_CRL_SIGN_KEY_USAGE.
Как быть в этой ситуации?
(что означают комментарии // Byte[0] Byte[1] и почему, если они что-то означают, то CERT_CRL_SIGN_KEY_USAGE тоже не вынесли за // Byte[1]?)Может тут есть какие-то правила? Пока только нашел на MSDN это:
Цитата:
XCN_CERT_DECIPHER_ONLY_KEY_USAGE - The key is used to decrypt data while performing key agreement. When this value is specified, the XCN_CERT_KEY_AGREEMENT_KEY_USAGE must also be specified
Offline Dmitriy3008  
#2 Оставлено : 17 сентября 2009 г. 13:26:55(UTC)
Dmitriy3008

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Я, наверное, слишком сложно написал, попробую проще.
Если встретился флаг 0x80, как различать это будет CERT_DIGITAL_SIGNATURE_KEY_USAGE или CERT_DECIPHER_ONLY_KEY_USAGE?
Offline Kirill Sobolev  
#3 Оставлено : 18 сентября 2009 г. 17:50:17(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Там же, чуть выше только, написано
Цитата:
XCN_CERT_DECIPHER_ONLY_KEY_USAGE = ( 0x80 << 8 )

Так что сравнивайте либо с этим значением, либо отдельные байты.
Техническую поддержку оказываем тут
Наша база знаний
Offline Dmitriy3008  
#4 Оставлено : 18 сентября 2009 г. 19:43:58(UTC)
Dmitriy3008

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Kirill Sobolev написал:
Там же, чуть выше только, написано
Цитата:
XCN_CERT_DECIPHER_ONLY_KEY_USAGE = ( 0x80 << 8 )

Так что сравнивайте либо с этим значением, либо отдельные байты.
Думаете, я это не заметил?
XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE = 0x80
XCN_CERT_DECIPHER_ONLY_KEY_USAGE = ( 0x80 << 8 )
XCN_CERT_KEY_AGREEMENT_KEY_USAGE = 0x8

Т.е. если выставлены 0x80 и 0x8(KEY_AGREEMENT), то 0x80 это именно DECIPHER_ONLY, а не DIGITAL_SIGNATURE ??? И XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE вместе с XCN_CERT_KEY_AGREEMENT_KEY_USAGE не могут сочетаться?

CERT_OFFLINE_CRL_SIGN_KEY_USAGE и CERT_CRL_SIGN_KEY_USAGE (оба 0x02) , я предполагаю, всегда используются в сочетании ?
Или я не правильно понимаю запись вида : ( 0x80 << 8 ). Извините, не совсем понял ваш ответ.
Offline Dmitriy3008  
#5 Оставлено : 18 сентября 2009 г. 19:51:06(UTC)
Dmitriy3008

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Вот, что мне посоветовали на sql.ru:
Цитата:
В данном случае нужно отметить, что мы рассматриваем код на C++, который принято использовать на разных платформах. А на разных платформах может быть разный порядок байт в машинном слове. У Intel он один, у Power PC и большинства RISC другой.

Если же мы работаем с Delphi исключительно на Intel, да ещё и в среде Windows, то можно с порядком байт не париться и сразу объявлять константы с нужным смещением битов. То есть, чтобы выделить 0x80 в Byte[1] можно просто написать 0x8000 (у Intеl порядок байт обратный, то есть в памяти сначала будет записно 0x00, а потом 0x80).
Можете подтвердить или опровергнуть? Переназначить то можно, а есть ли смысл?
Offline Dmitriy3008  
#6 Оставлено : 18 сентября 2009 г. 19:55:46(UTC)
Dmitriy3008

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
А лучше дайте какой-нибудь сертификат с флагом CERT_DECIPHER_ONLY_KEY_USAGE, я уж сам с ним разберусь и сделаю выводы.
Offline Kirill Sobolev  
#7 Оставлено : 18 сентября 2009 г. 21:38:02(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
Или я не правильно понимаю запись вида : ( 0x80 << 8 ).

<< - это сдвиг влево, аналог Shl из дельфи.
Цитата:
В данном случае нужно отметить...

подтверждаю Angel
Цитата:
А лучше дайте какой-нибудь сертификат с флагом CERT_DECIPHER_ONLY_KEY_USAGE, я уж сам с ним разберусь и сделаю выводы.

пожалуйста, разбирайтесь на здоровье.
Вложение(я):
keyusage.cer (2kb) загружен 42 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Техническую поддержку оказываем тут
Наша база знаний
Offline Dmitriy3008  
#8 Оставлено : 18 сентября 2009 г. 22:19:56(UTC)
Dmitriy3008

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Большое спасибо! Applause
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.