Signed-off-by: Zhang Shuai wxsxsdz@gmail.com --- dlls/rsaenh/cryptoprovconfig.h | 8 +++++- dlls/rsaenh/cryptoprovutils.c | 46 +++++++++++++++++----------------- dlls/rsaenh/cryptoprovutils.h | 10 ++++---- 3 files changed, 35 insertions(+), 29 deletions(-)
diff --git a/dlls/rsaenh/cryptoprovconfig.h b/dlls/rsaenh/cryptoprovconfig.h index 10cbc31b8b..e482d37ad4 100644 --- a/dlls/rsaenh/cryptoprovconfig.h +++ b/dlls/rsaenh/cryptoprovconfig.h @@ -79,6 +79,12 @@ static const PROVNAMEPERSONALITYPAIR aProvNamePersonalityPairs[6] = /****************************************************************************** * Definitions concerning prefix. */ -#define RSAENH_SCHANNEL_INFO SCHANNEL_INFO +#define RSAENH_SCHANNEL_INFO SCHANNEL_INFO +#define RSAENH_MAX_KEY_SIZE CRYPTO_PROV_MAX_KEY_SIZE +#define RSAENH_MAX_BLOCK_SIZE CRYPTO_PROV_MAX_BLOCK_SIZE + +#define CRYPTO_PROV_REGKEY RSAENH_REGKEY +#define CRYPTO_PROV_MAGIC_KEY RSAENH_MAGIC_KEY +#define CRYPTO_PROV_MAGIC_CONTAINER RSAENH_MAGIC_CONTAINER
#endif /* __WINE_CRYPTOPROVCONFIG_H */ diff --git a/dlls/rsaenh/cryptoprovutils.c b/dlls/rsaenh/cryptoprovutils.c index 7262ead819..ed3b16b13a 100644 --- a/dlls/rsaenh/cryptoprovutils.c +++ b/dlls/rsaenh/cryptoprovutils.c @@ -52,19 +52,19 @@ extern struct handle_table handle_table; */ BOOL create_container_key(KEYCONTAINER *pKeyContainer, REGSAM sam, HKEY *phKey) { - CHAR szRSABase[sizeof(RSAENH_REGKEY) + MAX_PATH]; + CHAR szBase[sizeof(CRYPTO_PROV_REGKEY) + MAX_PATH]; HKEY hRootKey;
- sprintf(szRSABase, RSAENH_REGKEY, pKeyContainer->szName); + sprintf(szBase, CRYPTO_PROV_REGKEY, pKeyContainer->szName);
if (pKeyContainer->dwFlags & CRYPT_MACHINE_KEYSET) hRootKey = HKEY_LOCAL_MACHINE; else hRootKey = HKEY_CURRENT_USER;
- /* @@ Wine registry key: HKLM\Software\Wine\Crypto\RSA */ - /* @@ Wine registry key: HKCU\Software\Wine\Crypto\RSA */ - return RegCreateKeyExA(hRootKey, szRSABase, 0, NULL, + /* @@ Wine registry key: HKLM\Software\Wine\Crypto(CRYPTO_PROV) */ + /* @@ Wine registry key: HKCU\Software\Wine\Crypto(CRYPTO_PROV) */ + return RegCreateKeyExA(hRootKey, szBase, 0, NULL, REG_OPTION_NON_VOLATILE, sam, NULL, phKey, NULL) == ERROR_SUCCESS; } @@ -83,19 +83,19 @@ BOOL create_container_key(KEYCONTAINER *pKeyContainer, REGSAM sam, HKEY *phKey) */ BOOL open_container_key(LPCSTR pszContainerName, DWORD dwFlags, REGSAM access, HKEY *phKey) { - CHAR szRSABase[sizeof(RSAENH_REGKEY) + MAX_PATH]; + CHAR szBase[sizeof(CRYPTO_PROV_REGKEY) + MAX_PATH]; HKEY hRootKey;
- sprintf(szRSABase, RSAENH_REGKEY, pszContainerName); + sprintf(szBase, CRYPTO_PROV_REGKEY, pszContainerName);
if (dwFlags & CRYPT_MACHINE_KEYSET) hRootKey = HKEY_LOCAL_MACHINE; else hRootKey = HKEY_CURRENT_USER;
- /* @@ Wine registry key: HKLM\Software\Wine\Crypto\RSA */ - /* @@ Wine registry key: HKCU\Software\Wine\Crypto\RSA */ - return RegOpenKeyExA(hRootKey, szRSABase, 0, access, phKey) == + /* @@ Wine registry key: HKLM\Software\Wine\Crypto(CRYPTO_PROV) */ + /* @@ Wine registry key: HKCU\Software\Wine\Crypto(CRYPTO_PROV) */ + return RegOpenKeyExA(hRootKey, szBase, 0, access, phKey) == ERROR_SUCCESS; }
@@ -110,10 +110,10 @@ BOOL open_container_key(LPCSTR pszContainerName, DWORD dwFlags, REGSAM access, H */ BOOL delete_container_key(LPCSTR pszContainerName, DWORD dwFlags) { - CHAR szRegKey[sizeof(RSAENH_REGKEY) + MAX_PATH]; + CHAR szRegKey[sizeof(CRYPTO_PROV_REGKEY) + MAX_PATH]; HKEY hRootKey;
- sprintf(szRegKey, RSAENH_REGKEY, pszContainerName); + sprintf(szRegKey, CRYPTO_PROV_REGKEY, pszContainerName);
if (dwFlags & CRYPT_MACHINE_KEYSET) hRootKey = HKEY_LOCAL_MACHINE; @@ -180,7 +180,7 @@ void store_key_pair(HCRYPTKEY hCryptKey, HKEY hKey, DWORD dwKeySpec, DWORD dwFla
if (!(szValueName = map_key_spec_to_key_pair_name(dwKeySpec))) return; - if (lookup_handle(&handle_table, hCryptKey, RSAENH_MAGIC_KEY, + if (lookup_handle(&handle_table, hCryptKey, CRYPTO_PROV_MAGIC_KEY, (OBJECTHDR**)&pKey)) { if (crypt_export_key(pKey, 0, PRIVATEKEYBLOB, 0, TRUE, 0, &dwLen)) @@ -222,7 +222,7 @@ void store_key_container_keys(KEYCONTAINER *pKeyContainer) DWORD dwFlags;
/* On WinXP, persistent keys are stored in a file located at: - * $AppData$\Microsoft\Crypto\RSA\$SID$\some_hex_string + * $AppData$\Microsoft\Crypto\(CRYPTO_PROV)\$SID$\some_hex_string */
if (pKeyContainer->dwFlags & CRYPT_MACHINE_KEYSET) @@ -289,7 +289,7 @@ void store_key_permissions(HCRYPTKEY hCryptKey, HKEY hKey, DWORD dwKeySpec)
if (!(szValueName = map_key_spec_to_permissions_name(dwKeySpec))) return; - if (lookup_handle(&handle_table, hCryptKey, RSAENH_MAGIC_KEY, + if (lookup_handle(&handle_table, hCryptKey, CRYPTO_PROV_MAGIC_KEY, (OBJECTHDR**)&pKey)) RegSetValueExA(hKey, szValueName, 0, REG_DWORD, (BYTE *)&pKey->dwPermissions, @@ -330,9 +330,9 @@ void store_key_container_permissions(KEYCONTAINER *pKeyContainer) void release_key_container_keys(KEYCONTAINER *pKeyContainer) { release_handle(&handle_table, pKeyContainer->hKeyExchangeKeyPair, - RSAENH_MAGIC_KEY); + CRYPTO_PROV_MAGIC_KEY); release_handle(&handle_table, pKeyContainer->hSignatureKeyPair, - RSAENH_MAGIC_KEY); + CRYPTO_PROV_MAGIC_KEY); }
/****************************************************************************** @@ -407,7 +407,7 @@ BOOL read_key_value(HCRYPTPROV hKeyContainer, HKEY hKey, DWORD dwKeySpec, DWORD { CRYPTKEY *pKey;
- if (lookup_handle(&handle_table, *phCryptKey, RSAENH_MAGIC_KEY, + if (lookup_handle(&handle_table, *phCryptKey, CRYPTO_PROV_MAGIC_KEY, (OBJECTHDR**)&pKey)) { if ((szValueName = map_key_spec_to_permissions_name(dwKeySpec))) @@ -454,7 +454,7 @@ HCRYPTPROV read_key_container(PCHAR pszContainerName, DWORD dwFlags, const VTabl DWORD dwProtectFlags = (dwFlags & CRYPT_MACHINE_KEYSET) ? CRYPTPROTECT_LOCAL_MACHINE : 0;
- if (!lookup_handle(&handle_table, hKeyContainer, RSAENH_MAGIC_CONTAINER, + if (!lookup_handle(&handle_table, hKeyContainer, CRYPTO_PROV_MAGIC_CONTAINER, (OBJECTHDR**)&pKeyContainer)) return (HCRYPTPROV)INVALID_HANDLE_VALUE;
@@ -466,10 +466,10 @@ HCRYPTPROV read_key_container(PCHAR pszContainerName, DWORD dwFlags, const VTabl */ if (read_key_value(hKeyContainer, hKey, AT_KEYEXCHANGE, dwProtectFlags, &hCryptKey)) - release_handle(&handle_table, hCryptKey, RSAENH_MAGIC_KEY); + release_handle(&handle_table, hCryptKey, CRYPTO_PROV_MAGIC_KEY); if (read_key_value(hKeyContainer, hKey, AT_SIGNATURE, dwProtectFlags, &hCryptKey)) - release_handle(&handle_table, hCryptKey, RSAENH_MAGIC_KEY); + release_handle(&handle_table, hCryptKey, CRYPTO_PROV_MAGIC_KEY); }
return hKeyContainer; @@ -478,7 +478,7 @@ HCRYPTPROV read_key_container(PCHAR pszContainerName, DWORD dwFlags, const VTabl /****************************************************************************** * new_key_container [Internal] * - * Create a new key container. The personality (RSA Base, Strong or Enhanced CP) + * Create a new key container. The personality * of the CSP is determined via the pVTable->pszProvName string. * * PARAMS @@ -495,7 +495,7 @@ HCRYPTPROV new_key_container(PCCH pszContainerName, DWORD dwFlags, const VTableP HCRYPTPROV hKeyContainer; DWORD i;
- hKeyContainer = new_object(&handle_table, sizeof(KEYCONTAINER), RSAENH_MAGIC_CONTAINER, + hKeyContainer = new_object(&handle_table, sizeof(KEYCONTAINER), CRYPTO_PROV_MAGIC_CONTAINER, destroy_key_container, (OBJECTHDR**)&pKeyContainer); if (hKeyContainer != (HCRYPTPROV)INVALID_HANDLE_VALUE) { diff --git a/dlls/rsaenh/cryptoprovutils.h b/dlls/rsaenh/cryptoprovutils.h index f745ada8d4..3a756d3735 100644 --- a/dlls/rsaenh/cryptoprovutils.h +++ b/dlls/rsaenh/cryptoprovutils.h @@ -47,8 +47,8 @@ typedef struct _SCHANNEL_INFO CRYPT_DATA_BLOB blobServerRandom; } SCHANNEL_INFO;
-#define RSAENH_MAX_KEY_SIZE 64 -#define RSAENH_MAX_BLOCK_SIZE 24 +#define CRYPTO_PROV_MAX_KEY_SIZE 64 +#define CRYPTO_PROV_MAX_BLOCK_SIZE 24 typedef struct tagCRYPTKEY { OBJECTHDR header; @@ -63,9 +63,9 @@ typedef struct tagCRYPTKEY DWORD dwBlockLen; DWORD dwState; KEY_CONTEXT context; - BYTE abKeyValue[RSAENH_MAX_KEY_SIZE]; - BYTE abInitVector[RSAENH_MAX_BLOCK_SIZE]; - BYTE abChainVector[RSAENH_MAX_BLOCK_SIZE]; + BYTE abKeyValue[CRYPTO_PROV_MAX_KEY_SIZE]; + BYTE abInitVector[CRYPTO_PROV_MAX_BLOCK_SIZE]; + BYTE abChainVector[CRYPTO_PROV_MAX_BLOCK_SIZE]; SCHANNEL_INFO siSChannelInfo; CRYPT_DATA_BLOB blobHmacKey; } CRYPTKEY;
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=60319
Your paranoid android.
=== debian10 (build log) ===
error: corrupt patch at line 191 Task: Patch failed to apply
=== debian10 (build log) ===
error: corrupt patch at line 191 Task: Patch failed to apply