From 1866b31f5e2ecd02bafb19226ffd4cdcb16ba4fb Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 3 Jun 2017 22:38:34 +0000 Subject: [PATCH] [RSAENH_WINETEST] Sync with Wine Staging 2.9. CORE-13362 svn path=/trunk/; revision=74844 --- rostests/winetests/rsaenh/rsaenh.c | 80 ++++++++++++++++++++++++++---- 1 file changed, 71 insertions(+), 9 deletions(-) diff --git a/rostests/winetests/rsaenh/rsaenh.c b/rostests/winetests/rsaenh/rsaenh.c index 4286db0289f..c9532b2bcc1 100644 --- a/rostests/winetests/rsaenh/rsaenh.c +++ b/rostests/winetests/rsaenh/rsaenh.c @@ -110,23 +110,21 @@ static void printBytes(const char *heading, const BYTE *pb, size_t cb) static BOOL (WINAPI *pCryptDuplicateHash) (HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); -/* static void trace_hex(BYTE *pbData, DWORD dwLen) { char szTemp[256]; DWORD i, j; for (i = 0; i < dwLen-7; i+=8) { - sprintf(szTemp, "0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x,\n", - pbData[i], pbData[i+1], pbData[i+2], pbData[i+3], pbData[i+4], pbData[i+5], - pbData[i+6], pbData[i+7]); - trace(szTemp); + trace("0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x,\n", + pbData[i], pbData[i+1], pbData[i+2], pbData[i+3], pbData[i+4], pbData[i+5], + pbData[i+6], pbData[i+7]); } for (j=0; i 1) { + trace("Expected public key (%u):\n", dwDataLen); + trace_hex(exported_key, dwDataLen); + trace("AT_KEYEXCHANGE public key (%u):\n", dwDataLen); + trace_hex(exported_key2, dwDataLen); + } + HeapFree(GetProcessHeap(), 0, exported_key2); + + /* importing a public key doesn't update key container at all */ + result = CryptImportKey(hProv, abPlainPublicKey, + sizeof(abPlainPublicKey), 0, 0, &hPublicKey); + ok(result, "failed to import the public key\n"); + CryptDestroyKey(hPublicKey); + + /* getting the public key again, and compare it */ + result = CryptGetUserKey(hProv, AT_KEYEXCHANGE, &hPrivKey); + ok(result, "CryptGetUserKey failed: %08x\n", GetLastError()); + result = CryptExportKey(hPrivKey, 0, PUBLICKEYBLOB, 0, NULL, &dwDataLen); + ok(result, "CryptExportKey failed: %08x\n", GetLastError()); + exported_key2 = HeapAlloc(GetProcessHeap(), 0, dwDataLen); + result = CryptExportKey(hPrivKey, 0, PUBLICKEYBLOB, 0, exported_key2, + &dwDataLen); + ok(result, "CryptExportKey failed: %08x\n", GetLastError()); + CryptDestroyKey(hPrivKey); + + result = !memcmp(exported_key, exported_key2, dwDataLen); + ok(result, "unexpected value\n"); + if (!result && winetest_debug > 1) { + trace("Expected public key (%u):\n", dwDataLen); + trace_hex(exported_key, dwDataLen); + trace("AT_KEYEXCHANGE public key (%u):\n", dwDataLen); + trace_hex(exported_key2, dwDataLen); + } + + HeapFree(GetProcessHeap(), 0, exported_key); + HeapFree(GetProcessHeap(), 0, exported_key2); } static void test_import_hmac(void) -- 2.17.1