Module: wine Branch: master Commit: 9260fcf7acafc15364340b457e7f01bb1216b564 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9260fcf7acafc15364340b457e...
Author: Juan Lang juan.lang@gmail.com Date: Tue Nov 6 11:53:14 2007 -0800
rsaenh: Use helper function to delete a key container's registry key.
---
dlls/rsaenh/rsaenh.c | 52 +++++++++++++++++++++++++++++++------------------ 1 files changed, 33 insertions(+), 19 deletions(-)
diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c index fbb0238..4c154c1 100644 --- a/dlls/rsaenh/rsaenh.c +++ b/dlls/rsaenh/rsaenh.c @@ -965,6 +965,38 @@ static BOOL open_container_key(LPCSTR pszContainerName, DWORD dwFlags, HKEY *phK }
/****************************************************************************** + * delete_container_key [Internal] + * + * Deletes a key container's persistent storage. + * + * PARAMS + * pszContainerName [I] Name of the container to be opened. + * dwFlags [I] Flags indicating which keyset to be opened. + */ +static BOOL delete_container_key(LPCSTR pszContainerName, DWORD dwFlags) +{ + CHAR szRegKey[MAX_PATH]; + + if (snprintf(szRegKey, MAX_PATH, RSAENH_REGKEY, pszContainerName) >= MAX_PATH) { + SetLastError(NTE_BAD_KEYSET_PARAM); + return FALSE; + } else { + HKEY hRootKey; + if (dwFlags & CRYPT_MACHINE_KEYSET) + hRootKey = HKEY_LOCAL_MACHINE; + else + hRootKey = HKEY_CURRENT_USER; + if (!RegDeleteKeyA(hRootKey, szRegKey)) { + SetLastError(ERROR_SUCCESS); + return TRUE; + } else { + SetLastError(NTE_BAD_KEYSET); + return FALSE; + } + } +} + +/****************************************************************************** * store_key_container_keys [Internal] * * Stores key container's keys in a persistent location. @@ -1479,7 +1511,6 @@ BOOL WINAPI RSAENH_CPAcquireContext(HCRYPTPROV *phProv, LPSTR pszContainer, DWORD dwFlags, PVTableProvStruc pVTable) { CHAR szKeyContainerName[MAX_PATH]; - CHAR szRegKey[MAX_PATH];
TRACE("(phProv=%p, pszContainer=%s, dwFlags=%08x, pVTable=%p)\n", phProv, debugstr_a(pszContainer), dwFlags, pVTable); @@ -1501,24 +1532,7 @@ BOOL WINAPI RSAENH_CPAcquireContext(HCRYPTPROV *phProv, LPSTR pszContainer, break;
case CRYPT_DELETEKEYSET: - if (snprintf(szRegKey, MAX_PATH, RSAENH_REGKEY, szKeyContainerName) >= MAX_PATH) { - SetLastError(NTE_BAD_KEYSET_PARAM); - return FALSE; - } else { - HKEY hRootKey; - if (dwFlags & CRYPT_MACHINE_KEYSET) - hRootKey = HKEY_LOCAL_MACHINE; - else - hRootKey = HKEY_CURRENT_USER; - if (!RegDeleteKeyA(hRootKey, szRegKey)) { - SetLastError(ERROR_SUCCESS); - return TRUE; - } else { - SetLastError(NTE_BAD_KEYSET); - return FALSE; - } - } - break; + return delete_container_key(szKeyContainerName, dwFlags);
case CRYPT_NEWKEYSET: *phProv = read_key_container(szKeyContainerName, dwFlags, pVTable);