50 static const WCHAR fmt[] = {
'%',
'0',
'2',
'X',0 };
56 for (
i = 0;
i < 20;
i++)
60 static const WCHAR CertsW[] = {
'C',
'e',
'r',
't',
'i',
'f',
'i',
'c',
'a',
't',
'e',
's',
100 TRACE(
"Adding cert with hash %s\n",
103 contextType, &addedType);
121 contextInterface =
NULL;
123 if (contextInterface)
129 WCHAR asciiHash[20 * 2 + 1];
132 TRACE(
"comparing %s\n",
135 if (!
lstrcmpW(asciiHash, subKeyName))
137 TRACE(
"hash matches, adding\n");
143 TRACE(
"hash doesn't match, ignoring\n");
185 WCHAR asciiHash[20 * 2 + 1];
269 WCHAR asciiHash[20 * 2 + 1];
309 TRACE(
"(%p, %d)\n", store, force);
311 if (store->
dirty || force)
457 DWORD dwCtrlType,
void const *pvCtrlPara)
462 TRACE(
"(%p, %08x, %d, %p)\n", hCertStore,
dwFlags, dwCtrlType,
483 FIXME(
"CERT_STORE_CTRL_AUTO_RESYNC: stub\n");
486 FIXME(
"CERT_STORE_CTRL_NOTIFY_CHANGE: stub\n");
489 FIXME(
"%u: stub\n", dwCtrlType);
563 provInfo.
cbSize =
sizeof(provInfo);
576 TRACE(
"returning %p\n", store);
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
#define CERT_STORE_DELETE_FLAG
static BOOL WINAPI CRYPT_RegDeleteCRL(HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwFlags)
const WINE_CONTEXT_INTERFACE * pCRLInterface
static context_t * context_from_ptr(const void *ptr)
static void CRYPT_HashToStr(const BYTE *hash, LPWSTR asciiHash)
#define CERT_STORE_CTRL_RESYNC
WINE_DEFAULT_DEBUG_CHANNEL(crypt)
WINECRYPT_CERTSTORE * CRYPT_RegOpenStore(HCRYPTPROV hCryptProv, DWORD dwFlags, const void *pvPara)
static void CRYPT_RegReadFromReg(HKEY key, HCERTSTORE store)
#define ERROR_NO_MORE_ITEMS
const WINE_CONTEXT_INTERFACE * pCTLInterface
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
#define CERT_STORE_CTRL_AUTO_RESYNC
#define CERT_STORE_CERTIFICATE_CONTEXT_FLAG
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
static const WCHAR BlobW[]
HCERTSTOREPROV hStoreProv
static BOOL CRYPT_RegDeleteContext(WINE_REGSTOREINFO *store, struct list *deleteList, const void *context, const WINE_CONTEXT_INTERFACE *contextInterface)
static const WCHAR CRLsW[]
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define CERT_STORE_CTRL_COMMIT
static BOOL CRYPT_RegWriteToReg(WINE_REGSTOREINFO *store)
void Context_Release(context_t *context)
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define CERT_STORE_CTRL_COMMIT_FORCE_FLAG
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
#define CERT_STORE_CTL_CONTEXT_FLAG
LONG WINAPI RegCloseKey(HKEY hKey)
#define CERT_STORE_CREATE_NEW_FLAG
#define ERROR_ACCESS_DENIED
static void * regProvFuncs[]
BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags)
WINECRYPT_CERTSTORE * CRYPT_ProvCreateStore(DWORD dwFlags, WINECRYPT_CERTSTORE *memStore, const CERT_STORE_PROV_INFO *pProvInfo) DECLSPEC_HIDDEN
void ** rgpvStoreProvFunc
#define CERT_STORE_PROV_MEMORY
BOOL CRYPT_SerializeContextsToReg(HKEY key, DWORD flags, const WINE_CONTEXT_INTERFACE *contextInterface, HCERTSTORE memStore)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
#define CERT_STORE_ADD_REPLACE_EXISTING
#define ERROR_FILE_NOT_FOUND
static BOOL WINAPI CRYPT_RegControl(HCERTSTORE hCertStore, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara)
SerializeElementFunc serialize
const void * CRYPT_ReadSerializedElement(const BYTE *pbElement, DWORD cbElement, DWORD dwContextTypeFlags, DWORD *pdwContentType) DECLSPEC_HIDDEN
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
#define CERT_STORE_CERTIFICATE_CONTEXT
static BOOL CRYPT_WriteSerializedToReg(HKEY key, DWORD flags, const BYTE *hash, const BYTE *buf, DWORD len)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define CERT_STORE_PROV_WRITE_ADD_FLAG
static BOOL CRYPT_RegWriteContext(WINE_REGSTOREINFO *store, const void *context, DWORD dwFlags)
static BOOL WINAPI CRYPT_RegWriteCTL(HCERTSTORE hCertStore, PCCTL_CONTEXT ctl, DWORD dwFlags)
#define CERT_HASH_PROP_ID
_In_opt_ PVOID _In_ ULONG _In_ PVOID context
PCRITICAL_SECTION_DEBUG DebugInfo
#define CERT_STORE_READONLY_FLAG
struct list certsToDelete
struct _WINE_HASH_TO_DELETE WINE_HASH_TO_DELETE
GetContextPropertyFunc getProp
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
static void WINAPI CRYPT_RegCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
static const WCHAR CertsW[]
#define GetCurrentProcess()
_In_ PCCTL_CONTEXT pCtlContext
static BOOL CRYPT_RegFlushStore(WINE_REGSTOREINFO *store, BOOL force)
LSTATUS WINAPI RegDeleteTreeW(HKEY hKey, LPCWSTR lpszSubKey)
AddContextToStoreFunc addContextToStore
static BOOL WINAPI CRYPT_RegDeleteCert(HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwFlags)
static unsigned __int64 next
#define CERT_STORE_CRL_CONTEXT_FLAG
#define CERT_STORE_CTL_CONTEXT
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
static BOOL WINAPI CRYPT_RegWriteCRL(HCERTSTORE hCertStore, PCCRL_CONTEXT crl, DWORD dwFlags)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define CERT_STORE_CTRL_NOTIFY_CHANGE
EnumContextsInStoreFunc enumContextsInStore
static void CRYPT_RegReadSerializedFromReg(HKEY key, DWORD contextType, HCERTSTORE store)
BOOL WINAPI I_CertUpdateStore(HCERTSTORE store1, HCERTSTORE store2, DWORD unk0, DWORD unk1) DECLSPEC_HIDDEN
#define CERT_STORE_CRL_CONTEXT
static BOOL WINAPI CRYPT_RegDeleteCTL(HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwFlags)
HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwMsgAndCertEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara)
VOID WINAPI CryptMemFree(LPVOID pv)
static const WCHAR CTLsW[]
static BOOL WINAPI CRYPT_RegWriteCert(HCERTSTORE hCertStore, PCCERT_CONTEXT cert, DWORD dwFlags)
_In_ PCCRL_CONTEXT pCrlContext
#define CERT_STORE_NO_CRYPT_RELEASE_FLAG
__WINE_SERVER_LIST_INLINE void list_init(struct list *list)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
const WINE_CONTEXT_INTERFACE * pCertInterface
struct _WINE_REGSTOREINFO WINE_REGSTOREINFO
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
_In_ PCCERT_CONTEXT pCertContext