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. Как же ему это удаётся? |
|
Ответы:
|
|
При CALG_DSS_SIGN - получается ключ подписи (AT_SIGNATURE), и на нем можно только подписывать.
При CALG_DH_EL_SF - получается ключ обмена (AT_KEYEXCHANGE), и на нем можно и шифровать и подписывать.
|
|
21.08.2003 16:27:09 | sekasan |
|
Это я уже понял, вопрос, КАК сделать сертификат, чтобы не возникала указанная ошибка |
|