| /* | |
| * Copyright 2002 Mike McCormack for CodeWeavers | |
| * Copyright (C) 2004 Juan Lang | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | |
| #include <stdarg.h> | |
| #include "windef.h" | |
| #include "winbase.h" | |
| #include "winreg.h" | |
| #include "wincrypt.h" | |
| #include "wine/debug.h" | |
| WINE_DEFAULT_DEBUG_CHANNEL(crypt); | |
| #define WINE_CRYPTCERTSTORE_MAGIC 0x74726563 | |
| typedef struct WINE_CRYPTCERTSTORE | |
| { | |
| DWORD dwMagic; | |
| } WINECRYPT_CERTSTORE; | |
| /* | |
| * CertOpenStore | |
| * | |
| * System Store CA is | |
| * HKLM\\Software\\Microsoft\\SystemCertificates\\CA\\ | |
| * Certificates\\<compressed guid> | |
| * "Blob" = REG_BINARY | |
| * CRLs\\<compressed guid> | |
| * "Blob" = REG_BINARY | |
| * CTLs\\<compressed guid> | |
| * "Blob" = REG_BINARY | |
| */ | |
| HCERTSTORE WINAPI CertOpenStore( LPCSTR lpszStoreProvider, | |
| DWORD dwMsgAndCertEncodingType, HCRYPTPROV hCryptProv, | |
| DWORD dwFlags, const void* pvPara ) | |
| { | |
| WINECRYPT_CERTSTORE *hcs; | |
| FIXME("%s %08lx %08lx %08lx %p stub\n", debugstr_a(lpszStoreProvider), | |
| dwMsgAndCertEncodingType, hCryptProv, dwFlags, pvPara); | |
| if( lpszStoreProvider == (LPCSTR) 0x0009 ) | |
| { | |
| FIXME("pvPara = %s\n", debugstr_a( (LPCSTR) pvPara ) ); | |
| } | |
| hcs = HeapAlloc( GetProcessHeap(), 0, sizeof (WINECRYPT_CERTSTORE) ); | |
| if( !hcs ) | |
| return NULL; | |
| hcs->dwMagic = WINE_CRYPTCERTSTORE_MAGIC; | |
| return (HCERTSTORE) hcs; | |
| } | |
| HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV hProv, | |
| LPCSTR szSubSystemProtocol) | |
| { | |
| FIXME("(%ld, %s), stub\n", hProv, debugstr_a(szSubSystemProtocol)); | |
| return (HCERTSTORE)1; | |
| } | |
| HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV hProv, | |
| LPCWSTR szSubSystemProtocol) | |
| { | |
| FIXME("(%ld, %s), stub\n", hProv, debugstr_w(szSubSystemProtocol)); | |
| return (HCERTSTORE)1; | |
| } | |
| PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pPrev) | |
| { | |
| FIXME("(%p,%p)\n", hCertStore, pPrev); | |
| return NULL; | |
| } | |
| BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, | |
| DWORD dwSaveAs, DWORD dwSaveTo, void* pvSaveToPara, DWORD dwFlags) | |
| { | |
| FIXME("(%p,%ld,%ld,%ld,%p,%08lx) stub!\n", hCertStore, | |
| dwMsgAndCertEncodingType, dwSaveAs, dwSaveTo, pvSaveToPara, dwFlags); | |
| return TRUE; | |
| } | |
| PCCRL_CONTEXT WINAPI CertCreateCRLContext( DWORD dwCertEncodingType, | |
| const BYTE* pbCrlEncoded, DWORD cbCrlEncoded) | |
| { | |
| PCRL_CONTEXT pcrl; | |
| BYTE* data; | |
| TRACE("%08lx %p %08lx\n", dwCertEncodingType, pbCrlEncoded, cbCrlEncoded); | |
| pcrl = HeapAlloc( GetProcessHeap(), 0, sizeof (CRL_CONTEXT) ); | |
| if( !pcrl ) | |
| return NULL; | |
| data = HeapAlloc( GetProcessHeap(), 0, cbCrlEncoded ); | |
| if( !data ) | |
| { | |
| HeapFree( GetProcessHeap(), 0, pcrl ); | |
| return NULL; | |
| } | |
| pcrl->dwCertEncodingType = dwCertEncodingType; | |
| pcrl->pbCrlEncoded = data; | |
| pcrl->cbCrlEncoded = cbCrlEncoded; | |
| pcrl->pCrlInfo = NULL; | |
| pcrl->hCertStore = 0; | |
| return pcrl; | |
| } | |
| BOOL WINAPI CertAddCRLContextToStore( HCERTSTORE hCertStore, | |
| PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, | |
| PCCRL_CONTEXT* ppStoreContext ) | |
| { | |
| FIXME("%p %p %08lx %p\n", hCertStore, pCrlContext, | |
| dwAddDisposition, ppStoreContext); | |
| return TRUE; | |
| } | |
| BOOL WINAPI CertFreeCRLContext( PCCRL_CONTEXT pCrlContext) | |
| { | |
| FIXME("%p\n", pCrlContext ); | |
| return TRUE; | |
| } | |
| BOOL WINAPI CertCloseStore( HCERTSTORE hCertStore, DWORD dwFlags ) | |
| { | |
| FIXME("%p %08lx\n", hCertStore, dwFlags ); | |
| if( ! hCertStore ) | |
| return FALSE; | |
| HeapFree( GetProcessHeap(), 0, hCertStore ); | |
| return TRUE; | |
| } | |
| BOOL WINAPI CertFreeCertificateContext( PCCERT_CONTEXT pCertContext ) | |
| { | |
| FIXME("%p stub\n", pCertContext); | |
| return TRUE; | |
| } | |
| PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, | |
| DWORD dwCertEncodingType, DWORD dwFlags, DWORD dwType, | |
| const void *pvPara, PCCERT_CONTEXT pPrevCertContext) | |
| { | |
| FIXME("stub: %p %ld %ld %ld %p %p\n", hCertStore, dwCertEncodingType, | |
| dwFlags, dwType, pvPara, pPrevCertContext); | |
| SetLastError(CRYPT_E_NOT_FOUND); | |
| return NULL; | |
| } |