Статус: Активный участник
Группы: Участники
Зарегистрирован: 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
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 30.08.2009(UTC) Сообщений: 52
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 2 раз в 2 постах
|
Я, наверное, слишком сложно написал, попробую проще. Если встретился флаг 0x80, как различать это будет CERT_DIGITAL_SIGNATURE_KEY_USAGE или CERT_DECIPHER_ONLY_KEY_USAGE?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Там же, чуть выше только, написано Цитата:XCN_CERT_DECIPHER_ONLY_KEY_USAGE = ( 0x80 << 8 ) Так что сравнивайте либо с этим значением, либо отдельные байты. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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 ). Извините, не совсем понял ваш ответ.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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). Можете подтвердить или опровергнуть? Переназначить то можно, а есть ли смысл?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 30.08.2009(UTC) Сообщений: 52
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 2 раз в 2 постах
|
А лучше дайте какой-нибудь сертификат с флагом CERT_DECIPHER_ONLY_KEY_USAGE, я уж сам с ним разберусь и сделаю выводы.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:Или я не правильно понимаю запись вида : ( 0x80 << 8 ). << - это сдвиг влево, аналог Shl из дельфи. Цитата:В данном случае нужно отметить... подтверждаю Цитата: А лучше дайте какой-нибудь сертификат с флагом CERT_DECIPHER_ONLY_KEY_USAGE, я уж сам с ним разберусь и сделаю выводы. пожалуйста, разбирайтесь на здоровье. Вложение(я):  keyusage.cer (2kb) загружен 42 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 30.08.2009(UTC) Сообщений: 52
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 2 раз в 2 постах
|
Большое спасибо!
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close