20.08.2003 16:41:57Как подписывают ключём шифрования? Ответов: 2
sekasan
Пожалуйста, ещё один вопрос.
Пользуюсь MS SDK Security с криптопровайдером CryptoPro. Создаю ф-ей CryptSignAndEncodeCertificate свой сертификат на ранее сгенерированном ключе CALG_GR3410EL, затем что-то подписываю ф-ей CryptSignMessage. Всё отлично работает. Затем создаю другой сертификат с ключём CALG_DH_EL_SF. Ф-ия CryptSignMessage выдаёт ошибку NTE_NO_KEY. Вроде всё нормально - ну нет ключа для подписи. НО! Взял я сертификат, сделанный майкросовтовским ЦС на ключе шифрования (CALG_DH_EL_SF), а он всё отлично подписывает! Ключа подписи в его контейнере точно нет - проверял ф-ей CryptGetUserKey. Как же ему это удаётся?
 
Ответы:
21.08.2003 11:00:40uri
При CALG_DSS_SIGN - получается ключ подписи (AT_SIGNATURE), и на нем можно только подписывать.
При CALG_DH_EL_SF - получается ключ обмена (AT_KEYEXCHANGE), и на нем можно и шифровать и подписывать.
21.08.2003 16:27:09sekasan
Это я уже понял, вопрос, КАК сделать сертификат, чтобы не возникала указанная ошибка