Module: wine Branch: master Commit: 30764edd12716a425621862e39c4b061e0dd6bdc URL: http://source.winehq.org/git/wine.git/?a=commit;h=30764edd12716a425621862e39...
Author: Juan Lang juan.lang@gmail.com Date: Wed Jan 28 21:45:12 2009 -0800
rsaenh: Use helper function to install keys.
---
dlls/rsaenh/rsaenh.c | 32 +++++++++++++++++++++++--------- 1 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c index 4dc8aa6..c775082 100644 --- a/dlls/rsaenh/rsaenh.c +++ b/dlls/rsaenh/rsaenh.c @@ -2443,6 +2443,23 @@ BOOL WINAPI RSAENH_CPExportKey(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTKEY hPubK }
/****************************************************************************** + * release_and_install_key [Internal] + * + * Release an existing key, if present, and replaces it with a new one. + * + * PARAMS + * hProv [I] Key container into which the key is to be imported. + * src [I] Key which will replace *dest + * dest [I] Points to key to be released and replaced with src + */ +static void release_and_install_key(HCRYPTPROV hProv, HCRYPTKEY src, + HCRYPTKEY *dest) +{ + RSAENH_CPDestroyKey(hProv, *dest); + copy_handle(&handle_table, src, RSAENH_MAGIC_KEY, dest); +} + +/****************************************************************************** * CPImportKey (RSAENH.@) * * Import a BLOB'ed key into a key container. @@ -2517,16 +2534,14 @@ BOOL WINAPI RSAENH_CPImportKey(HCRYPTPROV hProv, CONST BYTE *pbData, DWORD dwDat case AT_SIGNATURE: case CALG_RSA_SIGN: TRACE("installing signing key\n"); - RSAENH_CPDestroyKey(hProv, pKeyContainer->hSignatureKeyPair); - copy_handle(&handle_table, *phKey, RSAENH_MAGIC_KEY, - &pKeyContainer->hSignatureKeyPair); + release_and_install_key(hProv, *phKey, + &pKeyContainer->hSignatureKeyPair); break; case AT_KEYEXCHANGE: case CALG_RSA_KEYX: TRACE("installing key exchange key\n"); - RSAENH_CPDestroyKey(hProv, pKeyContainer->hKeyExchangeKeyPair); - copy_handle(&handle_table, *phKey, RSAENH_MAGIC_KEY, - &pKeyContainer->hKeyExchangeKeyPair); + release_and_install_key(hProv, *phKey, + &pKeyContainer->hKeyExchangeKeyPair); break; } } @@ -2558,9 +2573,8 @@ BOOL WINAPI RSAENH_CPImportKey(HCRYPTPROV hProv, CONST BYTE *pbData, DWORD dwDat case AT_KEYEXCHANGE: case CALG_RSA_KEYX: TRACE("installing public key\n"); - RSAENH_CPDestroyKey(hProv, pKeyContainer->hKeyExchangeKeyPair); - copy_handle(&handle_table, *phKey, RSAENH_MAGIC_KEY, - &pKeyContainer->hKeyExchangeKeyPair); + release_and_install_key(hProv, *phKey, + &pKeyContainer->hKeyExchangeKeyPair); break; } }