Всем привет!
В описании функции CryptImportKey сказано, что публичный ключ может быть нулем в случае экспорта PUBLICKEYBLOB.
Однако в одном из примеров эта функция вызывается с публичным нулевым ключом для BLOB, экспортированного с параметром SIMPLEBLOB!
Т.е. CryptExportKey(hKey, hPubKey, SIMPLEBLOB,0,&blob,bloblen)
CryptImportKey(hProv,&blob,bloblen,0,0,&hKey)
Здравствуйте Алекс, Вы писали:
А>Всем привет! А>В описании функции CryptImportKey сказано, что публичный ключ может быть нулем в случае экспорта PUBLICKEYBLOB. А>Однако в одном из примеров эта функция вызывается с публичным нулевым ключом для BLOB, экспортированного с параметром SIMPLEBLOB! А>Т.е. CryptExportKey(hKey, hPubKey, SIMPLEBLOB,0,&blob,bloblen) А>CryptImportKey(hProv,&blob,bloblen,0,0,&hKey)
А>Пачему?
Патаму...
Экспортировать сеансовый ключ при желании можно и без шифрования. Соответственно, и импортировать его нужно без дешифрования.
Здравствуйте Lexey, Вы писали:
L>Здравствуйте Алекс, Вы писали:
А>>Всем привет! А>>В описании функции CryptImportKey сказано, что публичный ключ может быть нулем в случае экспорта PUBLICKEYBLOB. А>>Однако в одном из примеров эта функция вызывается с публичным нулевым ключом для BLOB, экспортированного с параметром SIMPLEBLOB! А>>Т.е. CryptExportKey(hKey, hPubKey, SIMPLEBLOB,0,&blob,bloblen) А>>CryptImportKey(hProv,&blob,bloblen,0,0,&hKey)
А>>Пачему?
L>Патаму... L>Экспортировать сеансовый ключ при желании можно и без шифрования. Соответственно, и импортировать его нужно без дешифрования.
L>>Ну да. Никто ведь этого не запрещает.
А>Ну а зачем тогда его создавать? А>В примере MSDN там он создается для того, чтобы вызвать CryptExportKey(), а потом сразу убивается. Нафиг это надо?
L>>>Ну да. Никто ведь этого не запрещает.
А>>Ну а зачем тогда его создавать? А>>В примере MSDN там он создается для того, чтобы вызвать CryptExportKey(), а потом сразу убивается. Нафиг это надо?
L> В каком примере ты такое нашел?
Platform SDK->Security->Cryptography->CryptoAPI->Using CryptoAPI->Acquiring a Cryptographic Context and Generating Keys->Example C Program: Exporting a Session Key
L>>>>Ну да. Никто ведь этого не запрещает.
А>>>Ну а зачем тогда его создавать? А>>>В примере MSDN там он создается для того, чтобы вызвать CryptExportKey(), а потом сразу убивается. Нафиг это надо?
L>> В каком примере ты такое нашел?
А>Platform SDK->Security->Cryptography->CryptoAPI->Using CryptoAPI->Acquiring a Cryptographic Context and Generating Keys->Example C Program: Exporting a Session Key
Что-то я не увидел там никакого создания публичного ключа. В этом примере берется обменный ключ пользователя и на нем экспортируется сгенерированный сеансовый ключ. Что тебе тут не нравится?