61 dst->fCritical =
src->fCritical;
72 if (
src->SignatureAlgorithm.pszObjId)
74 size +=
src->SignatureAlgorithm.Parameters.cbData;
76 for (
i = 0;
i <
src->cCRLEntry; ++
i)
82 for (
j = 0;
j <
entry->cExtension; ++
j)
92 for (
j = 0;
j <
src->cExtension; ++
j)
103 p = (
char *)(
dst + 1);
105 dst->dwVersion =
src->dwVersion;
106 if (
src->SignatureAlgorithm.pszObjId)
108 p =
copy_blob(
p, &
dst->SignatureAlgorithm.Parameters, &
src->SignatureAlgorithm.Parameters);
110 dst->ThisUpdate =
src->ThisUpdate;
111 dst->NextUpdate =
src->NextUpdate;
113 dst->cCRLEntry =
src->cCRLEntry;
117 dst->cExtension =
src->cExtension;
121 for (
i = 0;
i <
src->cCRLEntry; ++
i)
136 for (
j = 0;
j <
src->cExtension; ++
j)
158 dst->ctx.dwCertEncodingType =
src->ctx.dwCertEncodingType;
160 memcpy(
dst->ctx.pbCrlEncoded,
src->ctx.pbCrlEncoded,
src->ctx.cbCrlEncoded);
161 dst->ctx.cbCrlEncoded =
src->ctx.cbCrlEncoded;
170 dst->ctx.hCertStore = store;
180 const BYTE* pbCrlEncoded,
DWORD cbCrlEncoded)
188 TRACE(
"(%08lx, %p, %ld)\n", dwCertEncodingType, pbCrlEncoded,
214 crl->ctx.dwCertEncodingType = dwCertEncodingType;
216 crl->ctx.cbCrlEncoded = cbCrlEncoded;
217 crl->ctx.pCrlInfo = crlInfo;
224 DWORD dwCertEncodingType,
const BYTE *pbCrlEncoded,
DWORD cbCrlEncoded,
228 pbCrlEncoded, cbCrlEncoded);
231 TRACE(
"(%p, %08lx, %p, %ld, %08lx, %p)\n", hCertStore, dwCertEncodingType,
232 pbCrlEncoded, cbCrlEncoded, dwAddDisposition, ppCrlContext);
267 issuer->dwCertEncodingType,
274 pCrlContext->pCrlInfo->rgExtension);
285 if (
info->AuthorityCertIssuer.cAltEntry &&
286 info->AuthorityCertSerialNumber.cbData)
291 for (
i = 0; !directoryName &&
292 i <
info->AuthorityCertIssuer.cAltEntry;
i++)
293 if (
info->AuthorityCertIssuer.rgAltEntry[
i].
296 &
info->AuthorityCertIssuer.rgAltEntry[
i];
300 issuer->dwCertEncodingType,
301 &
issuer->pCertInfo->Subject,
305 &
issuer->pCertInfo->SerialNumber,
306 &
info->AuthorityCertSerialNumber);
310 FIXME(
"no supported name type in authority key id2\n");
314 else if (
info->KeyId.cbData)
339 FIXME(
"unsupported value for AKI extension\n");
388 TRACE(
"(%p, %ld, %ld, %ld, %p, %p)\n", hCertStore, dwCertEncodingType,
389 dwFindFlags, dwFindType, pvFindPara, pPrevCrlContext);
406 FIXME(
"find type %08lx unimplemented\n", dwFindType);
414 ret = pPrevCrlContext;
439 TRACE(
"(%p, %p, %p, %08lx)\n", hCertStore, pIssuerContext, pPrevCrlContext,
442 if (*pdwFlags & ~supportedFlags)
458 *pdwFlags &= ~CERT_STORE_TIME_VALIDITY_FLAG;
466 *pdwFlags &= ~CERT_STORE_SIGNATURE_FLAG;
474 TRACE(
"(%p)\n", pCrlContext);
482 TRACE(
"(%p)\n", pCrlContext);
492 TRACE(
"(%p, %ld)\n", pCRLContext, dwPropId);
523 if (
crl->base.properties)
612 if (!
crl->base.properties)
652 FIXME(
"%ld: stub\n", dwPropId);
690 if (
name1->dwDistPointNameChoice ==
name2->dwDistPointNameChoice)
695 if (
name1->FullName.cAltEntry ==
name2->FullName.cAltEntry)
702 &
name1->FullName.rgAltEntry[
i];
704 &
name2->FullName.rgAltEntry[
i];
722 FIXME(
"unimplemented for type %ld\n",
839 &
cert->SerialNumber))
862 TRACE(
"(%08lx, %p, %ld, %p)\n", dwCertEncodingType, pCertId, cCrlInfo,
865 for (
i = 0; !
entry &&
i < cCrlInfo;
i++)
879 pTimeToVerify = &fileTime;
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo)
DWORD ContextPropertyList_EnumPropIDs(CONTEXT_PROPERTY_LIST *list, DWORD id)
static crl_t * crl_from_ptr(const CRL_CONTEXT *ptr)
#define CERT_CERT_PROP_ID
BOOL ContextPropertyList_FindProperty(CONTEXT_PROPERTY_LIST *list, DWORD id, PCRYPT_DATA_BLOB blob)
void ContextPropertyList_RemoveProperty(CONTEXT_PROPERTY_LIST *list, DWORD id)
WINECRYPT_CERTSTORE empty_store
BOOL ContextPropertyList_SetProperty(CONTEXT_PROPERTY_LIST *list, DWORD id, const BYTE *pbData, size_t cbData)
BOOL WINAPI CertCompareCertificateName(DWORD dwCertEncodingType, PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2)
BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, DWORD dwSubjectType, void *pvSubject, DWORD dwIssuerType, void *pvIssuer, DWORD dwFlags, void *pvReserved)
PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR pszObjId, DWORD cExtensions, CERT_EXTENSION rgExtensions[])
BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, DWORD dwPropId, void *pvData, DWORD *pcbData)
BOOL WINAPI CryptHashCertificate(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, DWORD dwFlags, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash)
BOOL WINAPI CertCompareIntegerBlob(PCRYPT_INTEGER_BLOB pInt1, PCRYPT_INTEGER_BLOB pInt2)
void Context_AddRef(context_t *context)
void Context_Release(context_t *context)
context_t * Context_CreateLinkContext(unsigned int contextSize, context_t *linked, WINECRYPT_CERTSTORE *store)
context_t * Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl, WINECRYPT_CERTSTORE *store)
void Context_CopyProperties(const void *to, const void *from)
BOOL WINAPI CertGetCRLContextProperty(PCCRL_CONTEXT pCRLContext, DWORD dwPropId, void *pvData, DWORD *pcbData)
DWORD WINAPI CertEnumCRLContextProperties(PCCRL_CONTEXT pCRLContext, DWORD dwPropId)
static BOOL CRLContext_SetProperty(crl_t *crl, DWORD dwPropId, DWORD dwFlags, const void *pvData)
BOOL WINAPI CertIsValidCRLForCertificate(PCCERT_CONTEXT pCert, PCCRL_CONTEXT pCrl, DWORD dwFlags, void *pvReserved)
static char * copy_extension(char *p, CERT_EXTENSION *dst, const CERT_EXTENSION *src)
BOOL WINAPI CertFreeCRLContext(PCCRL_CONTEXT pCrlContext)
static char * copy_blob(char *p, DATA_BLOB *dst, const DATA_BLOB *src)
static BOOL compare_crl_issued_by(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
static CRL_INFO * clone_crl_info(const CRL_INFO *src)
static PCRL_ENTRY CRYPT_FindCertificateInCRL(PCERT_INFO cert, const CRL_INFO *crl)
BOOL WINAPI CertFindCertificateInCRL(PCCERT_CONTEXT pCert, PCCRL_CONTEXT pCrlContext, DWORD dwFlags, void *pvReserved, PCRL_ENTRY *ppCrlEntry)
BOOL WINAPI CertSetCRLContextProperty(PCCRL_CONTEXT pCRLContext, DWORD dwPropId, DWORD dwFlags, const void *pvData)
static BOOL CRLContext_GetHashProp(crl_t *crl, DWORD dwPropId, ALG_ID algID, const BYTE *toHash, DWORD toHashLen, void *pvData, DWORD *pcbData)
PCCRL_CONTEXT WINAPI CertDuplicateCRLContext(PCCRL_CONTEXT pCrlContext)
PCCRL_CONTEXT WINAPI CertFindCRLInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCRL_CONTEXT pPrevCrlContext)
static const context_vtbl_t crl_vtbl
BOOL(* CrlCompareFunc)(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
static BOOL compare_crl_issued_for(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
static BOOL compare_crl_any(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
PCCRL_CONTEXT WINAPI CertGetCRLFromStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pIssuerContext, PCCRL_CONTEXT pPrevCrlContext, DWORD *pdwFlags)
static BOOL match_dist_point_with_issuing_dist_point(const CRL_DIST_POINT *distPoint, const CRL_ISSUING_DIST_POINT *idp)
BOOL WINAPI CertAddEncodedCRLToStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded, DWORD dwAddDisposition, PCCRL_CONTEXT *ppCrlContext)
static context_t * CRL_clone(context_t *context, WINECRYPT_CERTSTORE *store, BOOL use_link)
static BOOL CRLContext_GetProperty(crl_t *crl, DWORD dwPropId, void *pvData, DWORD *pcbData)
static BOOL compare_crl_existing(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
LONG WINAPI CertVerifyCRLTimeValidity(LPFILETIME pTimeToVerify, PCRL_INFO pCrlInfo)
static void CRL_free(context_t *context)
PCCRL_CONTEXT WINAPI CertCreateCRLContext(DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded)
static BOOL compare_dist_point_name(const CRL_DIST_POINT_NAME *name1, const CRL_DIST_POINT_NAME *name2)
BOOL WINAPI CertVerifyCRLRevocation(DWORD dwCertEncodingType, PCERT_INFO pCertId, DWORD cCrlInfo, PCRL_INFO rgpCrlInfo[])
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
VOID WINAPI CryptMemFree(LPVOID pv)
static WCHAR issuer[MAX_STRING_RESOURCE_LEN]
BOOL WINAPI CertAddCRLContextToStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT *ppStoreContext)
PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pPrev)
BOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, void *pvData, DWORD *pcbData)
static const WCHAR *const ext[]
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
LONG WINAPI CompareFileTime(IN CONST FILETIME *lpFileTime1, IN CONST FILETIME *lpFileTime2)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP size_t __cdecl strlen(const char *)
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
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 GLint GLint j
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
#define memcpy(s1, s2, n)
static LPCWSTR LPVOID pvReserved
#define copy_string(dst, src)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
_In_ _Out_writes_opt_ pcchValueName _Inout_opt_ LPDWORD _Out_opt_ _Out_writes_bytes_to_opt_ pcbData _Inout_opt_ LPDWORD pcbData
CERT_NAME_BLOB DirectoryName
PCERT_EXTENSION rgExtension
PCRL_DIST_POINT rgDistPoint
CRYPT_BIT_BLOB ReasonFlags
CRL_DIST_POINT_NAME DistPointName
PCERT_EXTENSION rgExtension
CRYPT_INTEGER_BLOB SerialNumber
PCCERT_CONTEXT pIssuerCert
PCERT_EXTENSION rgExtension
CRL_DIST_POINT_NAME DistPointName
CRYPT_BIT_BLOB OnlySomeReasonFlags
#define CERT_PVK_FILE_PROP_ID
#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID
#define CERT_ENROLLMENT_PROP_ID
#define X509_ISSUING_DIST_POINT
#define X509_AUTHORITY_KEY_ID2
#define CERT_MD5_HASH_PROP_ID
#define CERT_STORE_BASE_CRL_FLAG
#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID
#define CERT_ENCODING_TYPE_MASK
#define CRL_FIND_ISSUED_BY_AKI_FLAG
#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
#define CERT_KEY_IDENTIFIER_PROP_ID
struct _CRL_INFO CRL_INFO
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL
struct _CRL_ENTRY CRL_ENTRY
#define CERT_ALT_NAME_URL
#define szOID_CRL_DIST_POINTS
struct _CERT_EXTENSION CERT_EXTENSION
#define CERT_ALT_NAME_DIRECTORY_NAME
#define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG
#define CERT_DESCRIPTION_PROP_ID
struct _CRYPTOAPI_BLOB * PCRYPT_DATA_BLOB
#define CERT_NEXT_UPDATE_LOCATION_PROP_ID
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT
#define CRL_FIND_ISSUED_FOR
#define X509_ASN_ENCODING
#define CRYPT_DECODE_ALLOC_FLAG
#define CERT_PUBKEY_ALG_PARA_PROP_ID
#define CRL_DIST_POINT_FULL_NAME
#define CERT_AUTO_ENROLL_PROP_ID
#define CERT_FRIENDLY_NAME_PROP_ID
#define CERT_CTL_USAGE_PROP_ID
#define CERT_ACCESS_STATE_PROP_ID
#define CERT_STORE_SIGNATURE_FLAG
#define CERT_HASH_PROP_ID
#define CERT_RENEWAL_PROP_ID
#define CERT_SHA1_HASH_PROP_ID
#define CERT_SIGNATURE_HASH_PROP_ID
#define szOID_AUTHORITY_KEY_IDENTIFIER2
#define szOID_ISSUING_DIST_POINT
#define X509_CRL_DIST_POINTS
#define X509_CERT_CRL_TO_BE_SIGNED
#define CERT_STORE_TIME_VALIDITY_FLAG
#define CERT_STORE_DELTA_CRL_FLAG
#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
#define CERT_DATE_STAMP_PROP_ID
#define CRL_FIND_ISSUED_BY
#define CRL_FIND_EXISTING
#define CRYPT_E_NOT_FOUND