bcrypt: Return an error when BCryptFinalizeKeyPair() is called twice.

Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Hans Leidekker 2022-03-10 11:05:06 +01:00 committed by Alexandre Julliard
parent 545ec32d28
commit 9ff16aa1cb
2 changed files with 7 additions and 0 deletions

View File

@ -846,6 +846,7 @@ static NTSTATUS key_asymmetric_generate( void *args )
int ret;
if (!libgnutls_handle) return STATUS_INTERNAL_ERROR;
if (key_data(key)->privkey) return STATUS_INVALID_HANDLE;
switch (key->alg_id)
{

View File

@ -2157,6 +2157,9 @@ static void test_RSA(void)
ret = BCryptImportKeyPair(alg, NULL, BCRYPT_RSAPRIVATE_BLOB, &key, rsaPrivateBlob, sizeof(rsaPrivateBlob), 0);
ok(ret == STATUS_SUCCESS, "got %#lx\n", ret);
ret = BCryptFinalizeKeyPair(key, 0);
ok(ret == STATUS_INVALID_HANDLE, "got %#lx\n", ret);
size = 0;
buf = HeapAlloc(GetProcessHeap(), 0, sizeof(rsaPrivateBlob));
ret = BCryptExportKey(key, NULL, BCRYPT_RSAPRIVATE_BLOB, buf, sizeof(rsaPrivateBlob), &size, 0);
@ -2565,6 +2568,9 @@ static void test_BCryptSignHash(void)
ret = BCryptFinalizeKeyPair(key, 0);
ok(ret == STATUS_SUCCESS, "got %#lx\n", ret);
ret = BCryptFinalizeKeyPair(key, 0);
ok(ret == STATUS_INVALID_HANDLE, "got %#lx\n", ret);
len = 0;
memset(sig, 0, sizeof(sig));