25.06.2004 20:34:42Подпись хэша ключом AT_KEYEXCHANGE Ответов: 1
Николай Краснокутский
Пожалуйста, если возможно, ответьте на следующий вопрос.

Я сравнивал работу Крипто-Про CSP и MS Base DSS and DH CSP с точки зрения определения алгоритмов, используемых для ЦП. Если с помощью MS Base DSS and DH CSP сгенерировать ключевую пару с AlgId = AT_KEYEXCHANGE, а потом попытаться подписать хэш закрытым ключом этой пары, то MS Base DSS and DH CSP выдает ошибку 0x80090008 "Invalid algorithm specified". Если же те же самые операции проделать с помощью Крипто-Про CSP, все работает нормально. Казалось бы, разницы между двумя этими криптопровайдерами в смысле выполнения вышеупомянутых операций не должно быть. Однако MS Base DSS and DH CSP упорно отказывается выполнить подпись хэша таким ключом. В чем здесь дело? Почему MS Base DSS and DH CSP не хочет в этом случае подписывать хэш? В описании функций CryptSignHash и CPSignHash на MSDN, включая все примечания, четко написано, что подпись можно выполнять как ключом с AlgId = AT_SIGNATURE, так и ключом с AlgId = AT_KEYEXCHANGE.

Я пытался задать этот вопрос на форуме MS Windows SDK: Security API. Однако Microsoft guys отвечать на него не хотят.

Заранее благодарен.

Николай
 
Ответы:
29.06.2004 9:38:13kure
Почему MS Base DSS and DH CSP не подписывают ключом AT_EXCHANGE.
Так задумано. DH алгоритм обмена ключами и AT_EXCHANGE используется только для этих целей.