Dmitry Timoshkov : crypt32: Implement CryptUnregisterOIDInfo.
Alexandre Julliard
julliard at winehq.org
Mon Oct 8 15:44:07 CDT 2018
Module: wine
Branch: master
Commit: 0b89c5a264186c6893d4f24bdd017d5f71f668f5
URL: https://source.winehq.org/git/wine.git/?a=commit;h=0b89c5a264186c6893d4f24bdd017d5f71f668f5
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Fri Oct 5 16:40:47 2018 +0800
crypt32: Implement CryptUnregisterOIDInfo.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/crypt32/crypt32.spec | 2 +-
dlls/crypt32/oid.c | 43 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 44 insertions(+), 1 deletion(-)
diff --git a/dlls/crypt32/crypt32.spec b/dlls/crypt32/crypt32.spec
index 0bc78a1..64d5aa9 100644
--- a/dlls/crypt32/crypt32.spec
+++ b/dlls/crypt32/crypt32.spec
@@ -194,7 +194,7 @@
@ stdcall CryptUnprotectMemory(ptr long long)
@ stdcall CryptUnregisterDefaultOIDFunction(long str wstr)
@ stdcall CryptUnregisterOIDFunction(long str str)
-@ stub CryptUnregisterOIDInfo
+@ stdcall CryptUnregisterOIDInfo(ptr)
@ stdcall CryptVerifyCertificateSignature(long long ptr long ptr)
@ stdcall CryptVerifyCertificateSignatureEx(long long long ptr long ptr long ptr)
@ stdcall CryptVerifyDetachedMessageHash(ptr ptr long long ptr ptr ptr ptr)
diff --git a/dlls/crypt32/oid.c b/dlls/crypt32/oid.c
index c9b0b41..e9ccab7 100644
--- a/dlls/crypt32/oid.c
+++ b/dlls/crypt32/oid.c
@@ -1,6 +1,7 @@
/*
* Copyright 2002 Mike McCormack for CodeWeavers
* Copyright 2005-2006 Juan Lang
+ * Copyright 2018 Dmitry Timoshkov
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -653,6 +654,48 @@ error_close_key:
}
/***********************************************************************
+ * CryptUnregisterOIDInfo (CRYPT32.@)
+ */
+BOOL WINAPI CryptUnregisterOIDInfo(PCCRYPT_OID_INFO info)
+{
+ char *key_name;
+ HKEY root;
+ DWORD err;
+
+ TRACE("(%p)\n", info);
+
+ if (!info || info->cbSize != sizeof(*info) || !info->pszOID)
+ {
+ SetLastError(E_INVALIDARG);
+ return FALSE;
+ }
+
+ err = RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CryptDllFindOIDInfo", 0, KEY_ALL_ACCESS, &root);
+ if (err != ERROR_SUCCESS)
+ {
+ SetLastError(err);
+ return FALSE;
+ }
+
+ key_name = CryptMemAlloc(strlen(info->pszOID) + 16);
+ if (key_name)
+ {
+ sprintf(key_name, "%s!%u", info->pszOID, info->dwGroupId);
+ err = RegDeleteKeyA(root, key_name);
+ }
+ else
+ err = ERROR_OUTOFMEMORY;
+
+ CryptMemFree(key_name);
+ RegCloseKey(root);
+
+ if (err)
+ SetLastError(err);
+
+ return !err;
+}
+
+/***********************************************************************
* CryptRegisterOIDInfo (CRYPT32.@)
*/
BOOL WINAPI CryptRegisterOIDInfo(PCCRYPT_OID_INFO pInfo, DWORD dwFlags)
More information about the wine-cvs
mailing list