rsaenh: Store key when algid is a CALG_RSA_* algid, too.
This commit is contained in:
parent
65fc5aa57e
commit
48975c38e0
|
@ -3059,12 +3059,10 @@ BOOL WINAPI RSAENH_CPGenKey(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYP
|
||||||
if (pCryptKey) {
|
if (pCryptKey) {
|
||||||
new_key_impl(pCryptKey->aiAlgid, &pCryptKey->context, pCryptKey->dwKeyLen);
|
new_key_impl(pCryptKey->aiAlgid, &pCryptKey->context, pCryptKey->dwKeyLen);
|
||||||
setup_key(pCryptKey);
|
setup_key(pCryptKey);
|
||||||
if (Algid == AT_SIGNATURE) {
|
|
||||||
RSAENH_CPDestroyKey(hProv, pKeyContainer->hSignatureKeyPair);
|
RSAENH_CPDestroyKey(hProv, pKeyContainer->hSignatureKeyPair);
|
||||||
copy_handle(&handle_table, *phKey, RSAENH_MAGIC_KEY,
|
copy_handle(&handle_table, *phKey, RSAENH_MAGIC_KEY,
|
||||||
&pKeyContainer->hSignatureKeyPair);
|
&pKeyContainer->hSignatureKeyPair);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AT_KEYEXCHANGE:
|
case AT_KEYEXCHANGE:
|
||||||
|
@ -3073,12 +3071,10 @@ BOOL WINAPI RSAENH_CPGenKey(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYP
|
||||||
if (pCryptKey) {
|
if (pCryptKey) {
|
||||||
new_key_impl(pCryptKey->aiAlgid, &pCryptKey->context, pCryptKey->dwKeyLen);
|
new_key_impl(pCryptKey->aiAlgid, &pCryptKey->context, pCryptKey->dwKeyLen);
|
||||||
setup_key(pCryptKey);
|
setup_key(pCryptKey);
|
||||||
if (Algid == AT_KEYEXCHANGE) {
|
|
||||||
RSAENH_CPDestroyKey(hProv, pKeyContainer->hKeyExchangeKeyPair);
|
RSAENH_CPDestroyKey(hProv, pKeyContainer->hKeyExchangeKeyPair);
|
||||||
copy_handle(&handle_table, *phKey, RSAENH_MAGIC_KEY,
|
copy_handle(&handle_table, *phKey, RSAENH_MAGIC_KEY,
|
||||||
&pKeyContainer->hKeyExchangeKeyPair);
|
&pKeyContainer->hKeyExchangeKeyPair);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CALG_RC2:
|
case CALG_RC2:
|
||||||
|
|
|
@ -2086,6 +2086,37 @@ static void test_null_provider(void)
|
||||||
CryptAcquireContext(&prov, szContainer, NULL, PROV_RSA_FULL,
|
CryptAcquireContext(&prov, szContainer, NULL, PROV_RSA_FULL,
|
||||||
CRYPT_DELETEKEYSET);
|
CRYPT_DELETEKEYSET);
|
||||||
|
|
||||||
|
/* Test for being able to get a key generated with CALG_RSA_SIGN. */
|
||||||
|
result = CryptAcquireContext(&prov, szContainer, NULL, PROV_RSA_FULL,
|
||||||
|
CRYPT_NEWKEYSET);
|
||||||
|
ok(result, "CryptAcquireContext failed: %08x\n", GetLastError());
|
||||||
|
result = CryptGenKey(prov, CALG_RSA_SIGN, 0, &key);
|
||||||
|
ok(result, "CryptGenKey with CALG_RSA_SIGN failed with error %08x\n", GetLastError());
|
||||||
|
result = CryptGetUserKey(prov, AT_KEYEXCHANGE, &key);
|
||||||
|
ok(!result, "expected CryptGetUserKey to fail\n");
|
||||||
|
result = CryptGetUserKey(prov, AT_SIGNATURE, &key);
|
||||||
|
ok(result, "CryptGetUserKey with AT_SIGNATURE failed: %08x\n", GetLastError());
|
||||||
|
CryptDestroyKey(key);
|
||||||
|
CryptReleaseContext(prov, 0);
|
||||||
|
|
||||||
|
CryptAcquireContext(&prov, szContainer, NULL, PROV_RSA_FULL,
|
||||||
|
CRYPT_DELETEKEYSET);
|
||||||
|
|
||||||
|
/* Test for being able to get a key generated with CALG_RSA_KEYX. */
|
||||||
|
result = CryptAcquireContext(&prov, szContainer, NULL, PROV_RSA_FULL,
|
||||||
|
CRYPT_NEWKEYSET);
|
||||||
|
ok(result, "CryptAcquireContext failed: %08x\n", GetLastError());
|
||||||
|
result = CryptGenKey(prov, CALG_RSA_KEYX, 0, &key);
|
||||||
|
ok(result, "CryptGenKey with CALG_RSA_KEYX failed with error %08x\n", GetLastError());
|
||||||
|
result = CryptGetUserKey(prov, AT_KEYEXCHANGE, &key);
|
||||||
|
ok(result, "CryptGetUserKey with AT_KEYEXCHANGE failed: %08x\n", GetLastError());
|
||||||
|
result = CryptGetUserKey(prov, AT_SIGNATURE, &key);
|
||||||
|
ok(!result, "expected CryptGetUserKey to fail\n");
|
||||||
|
CryptDestroyKey(key);
|
||||||
|
CryptReleaseContext(prov, 0);
|
||||||
|
|
||||||
|
CryptAcquireContext(&prov, szContainer, NULL, PROV_RSA_FULL,
|
||||||
|
CRYPT_DELETEKEYSET);
|
||||||
|
|
||||||
/* test for the bug in accessing the user key in a container
|
/* test for the bug in accessing the user key in a container
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue