65 if (
info->pwszContainerName)
67 if (
info->pwszProvName)
70 for (
i = 0;
i <
info->cProvParam;
i++)
81 if (
info->pwszContainerName)
90 if (
info->pwszProvName)
105 for (
i = 0;
i <
info->cProvParam;
i++)
120 const BYTE *encodedContext,
DWORD cbEncodedContext,
DWORD contextPropID,
127 omitHashes, pbElement, pcbElement);
154 }
while (
ret && prop != 0);
158 *pcbElement = bytesNeeded;
161 else if (*pcbElement < bytesNeeded)
163 *pcbElement = bytesNeeded;
214 pbElement += propSize;
222 }
while (
ret && prop != 0);
226 hdr->propID = contextPropID;
228 hdr->cb = cbEncodedContext;
230 encodedContext, cbEncodedContext);
291 else if (!
hdr->propID)
298 else if (
hdr->unknown != 1)
303 else if (
hdr->propID == propID)
366 if (
info->cProvParam)
372 for (
i = 0;
i <
info->cProvParam;
i++)
398 if (cbElement < hdr->
cb)
403 else if (
hdr->unknown != 1)
448 hdr->propID, 0, pbElement);
483 DWORD dwContextTypeFlags,
DWORD *pdwContentType)
487 TRACE(
"(%p, %ld, %08lx, %p)\n", pbElement, cbElement, dwContextTypeFlags,
565 while (!noMoreProps &&
ret)
574 TRACE(
"prop is %ld\n",
hdr->propID);
585 hdr, pbElement, cbElement);
586 pbElement +=
hdr->cb;
587 cbElement -=
hdr->cb;
595 *pdwContentType =
type;
626 ret = read_func(
handle, fileHeaderBuf,
sizeof(fileHeaderBuf), &
read);
631 else if (
read !=
sizeof(fileHeaderBuf))
643 if (
ret &&
read ==
sizeof(propHdr))
645 if (contextInterface &&
context &&
692 if (!contextInterface)
694 WARN(
"prop id %ld before a context id\n",
709 if (contextInterface &&
context)
752 reader->current += *bytesRead;
835 static const BYTE fileTrailer[12] = { 0 };
862 ret = output(
handle, fileTrailer,
sizeof(fileTrailer));
1089 TRACE(
"(%p, %08lx, %ld, %ld, %p, %08lx)\n", hCertStore,
1090 dwMsgAndCertEncodingType, dwSaveAs, dwSaveTo, pvSaveToPara,
dwFlags);
1107 WARN(
"unimplemented for %ld\n", dwSaveAs);
1129 WARN(
"unimplemented for %ld\n", dwSaveTo);
1133 ret = saveFunc(hCertStore, dwMsgAndCertEncodingType,
handle);
1142 DWORD dwContextTypeFlags,
DWORD *pdwContentType,
const void **ppvContext)
1148 TRACE(
"(%p, %p, %ld, %08lx, %08lx, %08lx, %p, %p)\n", hCertStore,
1149 pbElement, cbElement, dwAddDisposition,
dwFlags, dwContextTypeFlags,
1150 pdwContentType, ppvContext);
1157 dwContextTypeFlags, &
type);
1176 if (contextInterface)
1183 *pdwContentType =
type;
1185 dwAddDisposition, ppvContext);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
BOOL(WINAPI * SerializeElementFunc)(const void *context, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement)
const WINE_CONTEXT_INTERFACE * pCTLInterface
const WINE_CONTEXT_INTERFACE * pCertInterface
#define CERT_CERT_PROP_ID
static context_t * context_from_ptr(const void *ptr)
const WINE_CONTEXT_INTERFACE * pCRLInterface
BOOL CRYPT_AsnEncodeCMSSignedInfo(CRYPT_SIGNED_INFO *, void *pvData, DWORD *pcbData)
void CRYPT_ConvertKeyContext(const struct store_CERT_KEY_CONTEXT *src, CERT_KEY_CONTEXT *dst)
void Context_Release(context_t *context)
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
LPVOID WINAPI CryptMemRealloc(LPVOID pv, ULONG cbSize)
VOID WINAPI CryptMemFree(LPVOID pv)
PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pPrev)
PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pPrev)
#define ERROR_INVALID_PARAMETER
#define ReadFile(a, b, c, d, e)
#define CreateFileA(a, b, c, d, e, f, g)
#define __EXCEPT_PAGE_FAULT
BOOL WINAPI WriteFile(_In_ HANDLE hFile, _In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
#define STATUS_ACCESS_VIOLATION
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
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 memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
BOOL CRYPT_ReadSerializedStoreFromFile(HANDLE file, HCERTSTORE store)
BOOL(* SerializedOutputFunc)(void *handle, const void *buffer, DWORD size)
const void * CRYPT_ReadSerializedElement(const BYTE *pbElement, DWORD cbElement, DWORD dwContextTypeFlags, DWORD *pdwContentType)
static BOOL CRYPT_CountSerializedBytes(void *handle, const void *buffer, DWORD size)
static BOOL CRYPT_SerializeStoreElement(const void *context, const BYTE *encodedContext, DWORD cbEncodedContext, DWORD contextPropID, const WINE_CONTEXT_INTERFACE *contextInterface, DWORD dwFlags, BOOL omitHashes, BYTE *pbElement, DWORD *pcbElement)
BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, DWORD dwSaveAs, DWORD dwSaveTo, void *pvSaveToPara, DWORD dwFlags)
static BOOL CRYPT_SaveSerializedToFile(HCERTSTORE store, DWORD dwMsgAndCertEncodingType, void *handle)
static BOOL read_blob_wrapper(void *handle, void *buffer, DWORD bytesToRead, DWORD *bytesRead)
BOOL WINAPI CertSerializeCRLStoreElement(PCCRL_CONTEXT pCrlContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement)
BOOL(* read_serialized_func)(void *handle, void *buffer, DWORD bytesToRead, DWORD *bytesRead)
static BOOL read_file_wrapper(void *handle, void *buffer, DWORD bytesToRead, DWORD *bytesRead)
static BOOL CRYPT_SaveSerializedToMem(HCERTSTORE store, DWORD dwMsgAndCertEncodingType, void *handle)
static BOOL WINAPI CRYPT_SerializeCTLNoHash(PCCTL_CONTEXT pCtlContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement)
static BOOL CRYPT_MemOutputFunc(void *handle, const void *buffer, DWORD size)
BOOL CRYPT_ReadSerializedStoreFromBlob(const CRYPT_DATA_BLOB *blob, HCERTSTORE store)
static const WINE_CERT_PROP_HEADER * CRYPT_findPropID(const BYTE *buf, DWORD size, DWORD propID)
static DWORD read_serialized_KeyProvInfoProperty(const struct store_CRYPT_KEY_PROV_INFO *store, CRYPT_KEY_PROV_INFO **ret)
static DWORD serialize_KeyProvInfoProperty(const CRYPT_KEY_PROV_INFO *info, struct store_CRYPT_KEY_PROV_INFO **ret)
static const BYTE fileHeader[]
static BOOL CRYPT_WriteSerializedStoreToStream(HCERTSTORE store, SerializedOutputFunc output, void *handle)
static BOOL CRYPT_ReadSerializedStore(void *handle, read_serialized_func read_func, HCERTSTORE store)
BOOL WINAPI CertAddSerializedElementToStore(HCERTSTORE hCertStore, const BYTE *pbElement, DWORD cbElement, DWORD dwAddDisposition, DWORD dwFlags, DWORD dwContextTypeFlags, DWORD *pdwContentType, const void **ppvContext)
static BOOL CRYPT_SavePKCSToMem(HCERTSTORE store, DWORD dwMsgAndCertEncodingType, void *handle)
BOOL WINAPI CertSerializeCTLStoreElement(PCCTL_CONTEXT pCtlContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement)
static BOOL CRYPT_FileOutputFunc(void *handle, const void *buffer, DWORD size)
static BOOL CRYPT_ReadContextProp(const WINE_CONTEXT_INTERFACE *contextInterface, const void *context, const WINE_CERT_PROP_HEADER *hdr, const BYTE *pbElement, DWORD cbElement)
static BOOL CRYPT_SerializeContextsToStream(SerializedOutputFunc output, void *handle, const WINE_CONTEXT_INTERFACE *contextInterface, HCERTSTORE store)
BOOL WINAPI CertSerializeCertificateStoreElement(PCCERT_CONTEXT pCertContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement)
static BOOL CRYPT_WriteSerializedStoreToFile(HANDLE file, HCERTSTORE store)
static BOOL CRYPT_SavePKCSToFile(HCERTSTORE store, DWORD dwMsgAndCertEncodingType, void *handle)
static BOOL WINAPI CRYPT_SerializeCRLNoHash(PCCRL_CONTEXT pCrlContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement)
static BOOL WINAPI CRYPT_SerializeCertNoHash(PCCERT_CONTEXT pCertContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement)
struct _WINE_CERT_PROP_HEADER WINE_CERT_PROP_HEADER
const CRYPT_DATA_BLOB * blob
SetContextPropertyFunc setProp
AddEncodedContextToStoreFunc addEncodedToStore
EnumPropertiesFunc enumProps
GetContextPropertyFunc getProp
SerializeElementFunc serialize
AddContextToStoreFunc addContextToStore
EnumContextsInStoreFunc enumContextsInStore
DWORD WINAPI GetLastError(void)
#define CERT_PVK_FILE_PROP_ID
#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID
#define CERT_ENROLLMENT_PROP_ID
#define CERT_MD5_HASH_PROP_ID
#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID
#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
#define CERT_KEY_CONTEXT_PROP_ID
#define CERT_KEY_IDENTIFIER_PROP_ID
#define CERT_STORE_SAVE_AS_STORE
#define IS_CERT_HASH_PROP_ID(x)
#define CERT_STORE_SAVE_AS_PKCS7
#define CERT_KEY_PROV_INFO_PROP_ID
#define CERT_FIRST_USER_PROP_ID
#define CERT_DESCRIPTION_PROP_ID
#define CERT_NEXT_UPDATE_LOCATION_PROP_ID
#define CERT_STORE_CTL_CONTEXT_FLAG
#define X509_ASN_ENCODING
#define CERT_STORE_CRL_CONTEXT_FLAG
#define CERT_STORE_ALL_CONTEXT_FLAG
#define CERT_PUBKEY_ALG_PARA_PROP_ID
#define CERT_AUTO_ENROLL_PROP_ID
#define CERT_FRIENDLY_NAME_PROP_ID
#define CERT_CTL_USAGE_PROP_ID
#define CERT_STORE_CERTIFICATE_CONTEXT
#define CERT_STORE_CTL_CONTEXT
#define CERT_STORE_ADD_NEW
#define CERT_STORE_SAVE_TO_MEMORY
#define CERT_HASH_PROP_ID
#define CERT_RENEWAL_PROP_ID
#define CERT_SIGNATURE_HASH_PROP_ID
#define CERT_STORE_CERTIFICATE_CONTEXT_FLAG
#define CERT_STORE_SAVE_TO_FILE
#define CERT_LAST_USER_PROP_ID
struct _CRYPT_KEY_PROV_INFO CRYPT_KEY_PROV_INFO
#define CERT_STORE_CRL_CONTEXT
#define CERT_STORE_SAVE_TO_FILENAME_A
struct _CRYPT_KEY_PROV_PARAM CRYPT_KEY_PROV_PARAM
#define CERT_DATE_STAMP_PROP_ID
#define CERT_STORE_SAVE_TO_FILENAME_W
#define CRYPT_E_FILE_ERROR
#define ERROR_END_OF_MEDIA