ReactOS  0.4.14-dev-77-gd9e7c48
crl.c File Reference
#include <assert.h>
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "wincrypt.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "crypt32_private.h"
Include dependency graph for crl.c:

Go to the source code of this file.

Macros

#define NONAMELESSUNION
 

Typedefs

typedef BOOL(* CrlCompareFunc) (PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (crypt)
 
static void CRL_free (context_t *context)
 
static context_tCRL_clone (context_t *context, WINECRYPT_CERTSTORE *store, BOOL use_link)
 
PCCRL_CONTEXT WINAPI CertCreateCRLContext (DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded)
 
BOOL WINAPI CertAddEncodedCRLToStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded, DWORD dwAddDisposition, PCCRL_CONTEXT *ppCrlContext)
 
static BOOL compare_crl_any (PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
 
static BOOL compare_crl_issued_by (PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
 
static BOOL compare_crl_existing (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)
 
PCCRL_CONTEXT WINAPI CertFindCRLInStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCRL_CONTEXT pPrevCrlContext)
 
PCCRL_CONTEXT WINAPI CertGetCRLFromStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pIssuerContext, PCCRL_CONTEXT pPrevCrlContext, DWORD *pdwFlags)
 
PCCRL_CONTEXT WINAPI CertDuplicateCRLContext (PCCRL_CONTEXT pCrlContext)
 
BOOL WINAPI CertFreeCRLContext (PCCRL_CONTEXT pCrlContext)
 
DWORD WINAPI CertEnumCRLContextProperties (PCCRL_CONTEXT pCRLContext, DWORD dwPropId)
 
static BOOL CRLContext_SetProperty (crl_t *crl, 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)
 
static BOOL CRLContext_GetProperty (crl_t *crl, DWORD dwPropId, void *pvData, DWORD *pcbData)
 
BOOL WINAPI CertGetCRLContextProperty (PCCRL_CONTEXT pCRLContext, DWORD dwPropId, void *pvData, DWORD *pcbData)
 
BOOL WINAPI CertSetCRLContextProperty (PCCRL_CONTEXT pCRLContext, DWORD dwPropId, DWORD dwFlags, const void *pvData)
 
static BOOL compare_dist_point_name (const CRL_DIST_POINT_NAME *name1, const CRL_DIST_POINT_NAME *name2)
 
static BOOL match_dist_point_with_issuing_dist_point (const CRL_DIST_POINT *distPoint, const CRL_ISSUING_DIST_POINT *idp)
 
BOOL WINAPI CertIsValidCRLForCertificate (PCCERT_CONTEXT pCert, PCCRL_CONTEXT pCrl, DWORD dwFlags, void *pvReserved)
 
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 CertVerifyCRLRevocation (DWORD dwCertEncodingType, PCERT_INFO pCertId, DWORD cCrlInfo, PCRL_INFO rgpCrlInfo[])
 
LONG WINAPI CertVerifyCRLTimeValidity (LPFILETIME pTimeToVerify, PCRL_INFO pCrlInfo)
 

Variables

static const context_vtbl_t crl_vtbl
 

Macro Definition Documentation

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 22 of file crl.c.

Typedef Documentation

◆ CrlCompareFunc

typedef BOOL(* CrlCompareFunc) (PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)

Definition at line 151 of file crl.c.

Function Documentation

◆ CertAddEncodedCRLToStore()

BOOL WINAPI CertAddEncodedCRLToStore ( HCERTSTORE  hCertStore,
DWORD  dwCertEncodingType,
const BYTE pbCrlEncoded,
DWORD  cbCrlEncoded,
DWORD  dwAddDisposition,
PCCRL_CONTEXT ppCrlContext 
)

Definition at line 129 of file crl.c.

132 {
134  pbCrlEncoded, cbCrlEncoded);
135  BOOL ret;
136 
137  TRACE("(%p, %08x, %p, %d, %08x, %p)\n", hCertStore, dwCertEncodingType,
138  pbCrlEncoded, cbCrlEncoded, dwAddDisposition, ppCrlContext);
139 
140  if (crl)
141  {
143  ppCrlContext);
145  }
146  else
147  ret = FALSE;
148  return ret;
149 }
static const BYTE crl[]
Definition: message.c:864
_In_ PCCERT_CONTEXT _In_ DWORD dwAddDisposition
Definition: wincrypt.h:4987
unsigned int BOOL
Definition: ntddk_ex.h:94
_In_ DWORD _In_ DWORD cbCrlEncoded
Definition: wincrypt.h:5071
#define TRACE(s)
Definition: solgame.cpp:4
PCCRL_CONTEXT WINAPI CertCreateCRLContext(DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded)
Definition: crl.c:85
int ret
_In_ DWORD dwCertEncodingType
Definition: wincrypt.h:5041
BOOL WINAPI CertAddCRLContextToStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT *ppStoreContext)
Definition: store.c:960
_In_ DWORD _In_ DWORD _In_ DWORD _Outptr_opt_ PCCRL_CONTEXT * ppCrlContext
Definition: wincrypt.h:5071
BOOL WINAPI CertFreeCRLContext(PCCRL_CONTEXT pCrlContext)
Definition: crl.c:386

Referenced by CRYPT_MsgOpenStore(), test_crypt_ui_wiz_import(), test_I_UpdateStore(), test_verifyRevocation(), testAddCRL(), testCloseStore(), testFileNameStore(), testFileStore(), testFindCRL(), testGetCRLFromStore(), testIsValidCRLForCert(), and testVerifyRevocation().

◆ CertCreateCRLContext()

PCCRL_CONTEXT WINAPI CertCreateCRLContext ( DWORD  dwCertEncodingType,
const BYTE pbCrlEncoded,
DWORD  cbCrlEncoded 
)

Definition at line 85 of file crl.c.

87 {
88  crl_t *crl = NULL;
89  BOOL ret;
90  PCRL_INFO crlInfo = NULL;
91  BYTE *data = NULL;
92  DWORD size = 0;
93 
94  TRACE("(%08x, %p, %d)\n", dwCertEncodingType, pbCrlEncoded,
95  cbCrlEncoded);
96 
98  {
100  return NULL;
101  }
103  pbCrlEncoded, cbCrlEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL,
104  &crlInfo, &size);
105  if (!ret)
106  return NULL;
107 
109  if (!crl)
110  return NULL;
111 
113  if (!data)
114  {
115  Context_Release(&crl->base);
116  return NULL;
117  }
118 
119  memcpy(data, pbCrlEncoded, cbCrlEncoded);
120  crl->ctx.dwCertEncodingType = dwCertEncodingType;
121  crl->ctx.pbCrlEncoded = data;
122  crl->ctx.cbCrlEncoded = cbCrlEncoded;
123  crl->ctx.pCrlInfo = crlInfo;
124  crl->ctx.hCertStore = &empty_store;
125 
126  return &crl->ctx;
127 }
WINECRYPT_CERTSTORE empty_store
Definition: store.c:1509
static const BYTE crl[]
Definition: message.c:864
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo)
Definition: decode.c:6286
#define CERT_ENCODING_TYPE_MASK
Definition: wincrypt.h:2290
void Context_Release(context_t *context)
Definition: context.c:106
context_t * Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl, WINECRYPT_CERTSTORE *store)
Definition: context.c:28
#define X509_ASN_ENCODING
Definition: wincrypt.h:2297
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
Definition: main.c:131
unsigned int BOOL
Definition: ntddk_ex.h:94
_In_ DWORD _In_ DWORD cbCrlEncoded
Definition: wincrypt.h:5071
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define X509_CERT_CRL_TO_BE_SIGNED
Definition: wincrypt.h:3367
#define TRACE(s)
Definition: solgame.cpp:4
GLsizeiptr size
Definition: glext.h:5919
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:409
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
int ret
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
unsigned char BYTE
Definition: mem.h:68
_In_ DWORD dwCertEncodingType
Definition: wincrypt.h:5041
static const context_vtbl_t crl_vtbl
Definition: crl.c:40
#define CRYPT_DECODE_ALLOC_FLAG
Definition: wincrypt.h:3454

Referenced by CertAddEncodedCRLToStore(), CertCreateContext(), test_crypt_ui_wiz_import(), test_sign_message(), testAddCRL(), testCreateCRL(), testCRLProperties(), testDupCRL(), testEmptyStore(), testFindCertInCRL(), testIsValidCRLForCert(), and testVerifyCRLRevocation().

◆ CertDuplicateCRLContext()

PCCRL_CONTEXT WINAPI CertDuplicateCRLContext ( PCCRL_CONTEXT  pCrlContext)

Definition at line 378 of file crl.c.

379 {
380  TRACE("(%p)\n", pCrlContext);
381  if (pCrlContext)
383  return pCrlContext;
384 }
static crl_t * crl_from_ptr(const CRL_CONTEXT *ptr)
void Context_AddRef(context_t *context)
Definition: context.c:78
#define TRACE(s)
Definition: solgame.cpp:4
_In_ PCCRL_CONTEXT pCrlContext
Definition: wincrypt.h:4996

Referenced by CertAddCRLContextToStore(), and testDupCRL().

◆ CertEnumCRLContextProperties()

DWORD WINAPI CertEnumCRLContextProperties ( PCCRL_CONTEXT  pCRLContext,
DWORD  dwPropId 
)

Definition at line 395 of file crl.c.

397 {
398  TRACE("(%p, %d)\n", pCRLContext, dwPropId);
399 
400  return ContextPropertyList_EnumPropIDs(crl_from_ptr(pCRLContext)->base.properties, dwPropId);
401 }
static crl_t * crl_from_ptr(const CRL_CONTEXT *ptr)
#define TRACE(s)
Definition: solgame.cpp:4
_In_ DWORD dwPropId
Definition: wincrypt.h:4952
DWORD ContextPropertyList_EnumPropIDs(CONTEXT_PROPERTY_LIST *list, DWORD id) DECLSPEC_HIDDEN
Definition: proplist.c:170

Referenced by testCRLProperties().

◆ CertFindCertificateInCRL()

BOOL WINAPI CertFindCertificateInCRL ( PCCERT_CONTEXT  pCert,
PCCRL_CONTEXT  pCrlContext,
DWORD  dwFlags,
void pvReserved,
PCRL_ENTRY ppCrlEntry 
)

Definition at line 750 of file crl.c.

753 {
754  TRACE("(%p, %p, %08x, %p, %p)\n", pCert, pCrlContext, dwFlags, pvReserved,
755  ppCrlEntry);
756 
757  *ppCrlEntry = CRYPT_FindCertificateInCRL(pCert->pCertInfo,
759  return TRUE;
760 }
#define TRUE
Definition: types.h:120
PCRL_INFO pCrlInfo
Definition: wincrypt.h:622
#define TRACE(s)
Definition: solgame.cpp:4
PCERT_INFO pCertInfo
Definition: wincrypt.h:482
static LPCSTR DWORD void * pvReserved
Definition: str.c:196
static PCRL_ENTRY CRYPT_FindCertificateInCRL(PCERT_INFO cert, const CRL_INFO *crl)
Definition: crl.c:738
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
_In_ PCCRL_CONTEXT pCrlContext
Definition: wincrypt.h:4996

Referenced by verify_cert_revocation_with_crl_offline(), and verify_cert_revocation_with_crl_online().

◆ CertFindCRLInStore()

PCCRL_CONTEXT WINAPI CertFindCRLInStore ( HCERTSTORE  hCertStore,
DWORD  dwCertEncodingType,
DWORD  dwFindFlags,
DWORD  dwFindType,
const void pvFindPara,
PCCRL_CONTEXT  pPrevCrlContext 
)

Definition at line 287 of file crl.c.

290 {
293 
294  TRACE("(%p, %d, %d, %d, %p, %p)\n", hCertStore, dwCertEncodingType,
295  dwFindFlags, dwFindType, pvFindPara, pPrevCrlContext);
296 
297  switch (dwFindType)
298  {
299  case CRL_FIND_ANY:
301  break;
302  case CRL_FIND_ISSUED_BY:
304  break;
305  case CRL_FIND_EXISTING:
307  break;
308  case CRL_FIND_ISSUED_FOR:
310  break;
311  default:
312  FIXME("find type %08x unimplemented\n", dwFindType);
313  compare = NULL;
314  }
315 
316  if (compare)
317  {
318  BOOL matches = FALSE;
319 
321  do {
322  ret = CertEnumCRLsInStore(hCertStore, ret);
323  if (ret)
324  matches = compare(ret, dwFindType, dwFindFlags, pvFindPara);
325  } while (ret != NULL && !matches);
326  if (!ret)
328  }
329  else
330  {
332  ret = NULL;
333  }
334  return ret;
335 }
Definition: bug.cpp:7
#define matches(FN)
Definition: match.h:70
#define CRYPT_E_NOT_FOUND
Definition: winerror.h:3007
PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pPrev)
Definition: store.c:1101
static BOOL compare_crl_any(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
Definition: crl.c:154
static BOOL compare_crl_issued_by(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
Definition: crl.c:160
unsigned int BOOL
Definition: ntddk_ex.h:94
#define FIXME(fmt,...)
Definition: debug.h:110
#define CRL_FIND_ANY
Definition: wincrypt.h:2927
smooth NULL
Definition: ftsmooth.c:416
BOOL(* CrlCompareFunc)(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
Definition: crl.c:151
#define TRACE(s)
Definition: solgame.cpp:4
#define SetLastError(x)
Definition: compat.h:409
static BOOL compare_crl_issued_for(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
Definition: crl.c:276
int ret
#define CRL_FIND_EXISTING
Definition: wincrypt.h:2929
_In_ DWORD dwCertEncodingType
Definition: wincrypt.h:5041
static BOOL compare_crl_existing(PCCRL_CONTEXT pCrlContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
Definition: crl.c:259
#define CRL_FIND_ISSUED_BY
Definition: wincrypt.h:2928
_In_ PCCERT_STORE_PROV_FIND_INFO _In_ PCCRL_CONTEXT pPrevCrlContext
Definition: wincrypt.h:1306
#define compare
#define CRL_FIND_ISSUED_FOR
Definition: wincrypt.h:2930

Referenced by CertAddCRLContextToStore(), CertGetCRLFromStore(), and verify_cert_revocation().

◆ CertFreeCRLContext()

◆ CertGetCRLContextProperty()

BOOL WINAPI CertGetCRLContextProperty ( PCCRL_CONTEXT  pCRLContext,
DWORD  dwPropId,
void pvData,
DWORD pcbData 
)

Definition at line 472 of file crl.c.

474 {
475  BOOL ret;
476 
477  TRACE("(%p, %d, %p, %p)\n", pCRLContext, dwPropId, pvData, pcbData);
478 
479  switch (dwPropId)
480  {
481  case 0:
482  case CERT_CERT_PROP_ID:
483  case CERT_CRL_PROP_ID:
484  case CERT_CTL_PROP_ID:
486  ret = FALSE;
487  break;
489  if (!pvData)
490  {
491  *pcbData = sizeof(DWORD);
492  ret = TRUE;
493  }
494  else if (*pcbData < sizeof(DWORD))
495  {
497  *pcbData = sizeof(DWORD);
498  ret = FALSE;
499  }
500  else
501  {
503  }
504  break;
505  default:
507  }
508  return ret;
509 }
#define TRUE
Definition: types.h:120
BOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, void *pvData, DWORD *pcbData)
Definition: store.c:1172
#define CERT_CERT_PROP_ID
static crl_t * crl_from_ptr(const CRL_CONTEXT *ptr)
#define CERT_CTL_PROP_ID
#define CERT_ACCESS_STATE_PROP_ID
Definition: wincrypt.h:2700
unsigned int BOOL
Definition: ntddk_ex.h:94
#define E_INVALIDARG
Definition: ddrawi.h:101
_In_ ULONG _In_opt_ PVOID pvData
Definition: winddi.h:3748
HCERTSTORE hCertStore
Definition: wincrypt.h:623
static DWORD
Definition: crl.c:80
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:409
int ret
#define ERROR_MORE_DATA
Definition: dderror.h:13
_In_ DWORD dwPropId
Definition: wincrypt.h:4952
static BOOL CRLContext_GetProperty(crl_t *crl, DWORD dwPropId, void *pvData, DWORD *pcbData)
Definition: crl.c:421
#define CERT_CRL_PROP_ID
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
Definition: wincrypt.h:4953

Referenced by checkCRLHash(), and testCRLProperties().

◆ CertGetCRLFromStore()

PCCRL_CONTEXT WINAPI CertGetCRLFromStore ( HCERTSTORE  hCertStore,
PCCERT_CONTEXT  pIssuerContext,
PCCRL_CONTEXT  pPrevCrlContext,
DWORD pdwFlags 
)

Definition at line 337 of file crl.c.

339 {
340  static const DWORD supportedFlags = CERT_STORE_SIGNATURE_FLAG |
344 
345  TRACE("(%p, %p, %p, %08x)\n", hCertStore, pIssuerContext, pPrevCrlContext,
346  *pdwFlags);
347 
348  if (*pdwFlags & ~supportedFlags)
349  {
351  return NULL;
352  }
353  if (pIssuerContext)
354  ret = CertFindCRLInStore(hCertStore, pIssuerContext->dwCertEncodingType,
355  0, CRL_FIND_ISSUED_BY, pIssuerContext, pPrevCrlContext);
356  else
357  ret = CertFindCRLInStore(hCertStore, 0, 0, CRL_FIND_ANY, NULL,
359  if (ret)
360  {
361  if (*pdwFlags & CERT_STORE_TIME_VALIDITY_FLAG)
362  {
363  if (0 == CertVerifyCRLTimeValidity(NULL, ret->pCrlInfo))
364  *pdwFlags &= ~CERT_STORE_TIME_VALIDITY_FLAG;
365  }
366  if (*pdwFlags & CERT_STORE_SIGNATURE_FLAG)
367  {
368  if (CryptVerifyCertificateSignatureEx(0, ret->dwCertEncodingType,
370  CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT, (void *)pIssuerContext, 0,
371  NULL))
372  *pdwFlags &= ~CERT_STORE_SIGNATURE_FLAG;
373  }
374  }
375  return ret;
376 }
#define CERT_STORE_SIGNATURE_FLAG
Definition: wincrypt.h:3458
DWORD dwCertEncodingType
Definition: wincrypt.h:479
#define CERT_STORE_TIME_VALIDITY_FLAG
Definition: wincrypt.h:3459
#define CRL_FIND_ANY
Definition: wincrypt.h:2927
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL
Definition: wincrypt.h:3470
#define SetLastError(x)
Definition: compat.h:409
BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, DWORD dwSubjectType, void *pvSubject, DWORD dwIssuerType, void *pvIssuer, DWORD dwFlags, void *pvReserved)
Definition: cert.c:2717
int ret
#define CERT_STORE_BASE_CRL_FLAG
Definition: wincrypt.h:3464
LONG WINAPI CertVerifyCRLTimeValidity(LPFILETIME pTimeToVerify, PCRL_INFO pCrlInfo)
Definition: crl.c:776
#define CERT_STORE_DELTA_CRL_FLAG
Definition: wincrypt.h:3465
#define CRL_FIND_ISSUED_BY
Definition: wincrypt.h:2928
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT
Definition: wincrypt.h:3474
_In_ PCCERT_STORE_PROV_FIND_INFO _In_ PCCRL_CONTEXT pPrevCrlContext
Definition: wincrypt.h:1306
PCCRL_CONTEXT WINAPI CertFindCRLInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCRL_CONTEXT pPrevCrlContext)
Definition: crl.c:287

Referenced by CertVerifySubjectCertificateContext(), and testGetCRLFromStore().

◆ CertIsValidCRLForCertificate()

BOOL WINAPI CertIsValidCRLForCertificate ( PCCERT_CONTEXT  pCert,
PCCRL_CONTEXT  pCrl,
DWORD  dwFlags,
void pvReserved 
)

Definition at line 681 of file crl.c.

683 {
685  BOOL ret;
686 
687  TRACE("(%p, %p, %08x, %p)\n", pCert, pCrl, dwFlags, pvReserved);
688 
689  if (!pCert)
690  return TRUE;
691 
693  pCrl->pCrlInfo->cExtension, pCrl->pCrlInfo->rgExtension)))
694  {
696  DWORD size;
697 
699  X509_ISSUING_DIST_POINT, ext->Value.pbData, ext->Value.cbData,
700  CRYPT_DECODE_ALLOC_FLAG, NULL, &idp, &size)))
701  {
703  pCert->pCertInfo->cExtension, pCert->pCertInfo->rgExtension)))
704  {
705  CRL_DIST_POINTS_INFO *distPoints;
706 
708  X509_CRL_DIST_POINTS, ext->Value.pbData, ext->Value.cbData,
709  CRYPT_DECODE_ALLOC_FLAG, NULL, &distPoints, &size)))
710  {
711  DWORD i;
712 
713  ret = FALSE;
714  for (i = 0; !ret && i < distPoints->cDistPoint; i++)
716  &distPoints->rgDistPoint[i], idp);
717  if (!ret)
719  LocalFree(distPoints);
720  }
721  }
722  else
723  {
724  /* no CRL dist points extension in cert, can't match the CRL
725  * (which has an issuing dist point extension)
726  */
727  ret = FALSE;
729  }
730  LocalFree(idp);
731  }
732  }
733  else
734  ret = TRUE;
735  return ret;
736 }
PCRL_DIST_POINT rgDistPoint
Definition: wincrypt.h:533
#define TRUE
Definition: types.h:120
PCRL_INFO pCrlInfo
Definition: wincrypt.h:622
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo)
Definition: decode.c:6286
static BOOL match_dist_point_with_issuing_dist_point(const CRL_DIST_POINT *distPoint, const CRL_ISSUING_DIST_POINT *idp)
Definition: crl.c:646
DWORD dwCertEncodingType
Definition: wincrypt.h:479
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
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
DWORD cExtension
Definition: wincrypt.h:502
PCERT_EXTENSION rgExtension
Definition: wincrypt.h:252
smooth NULL
Definition: ftsmooth.c:416
char ext[3]
Definition: mkdosfs.c:358
#define szOID_CRL_DIST_POINTS
Definition: wincrypt.h:3196
#define TRACE(s)
Definition: solgame.cpp:4
PCERT_INFO pCertInfo
Definition: wincrypt.h:482
GLsizeiptr size
Definition: glext.h:5919
DWORD dwCertEncodingType
Definition: wincrypt.h:619
static LPCSTR DWORD void * pvReserved
Definition: str.c:196
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:409
PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR pszObjId, DWORD cExtensions, CERT_EXTENSION rgExtensions[])
Definition: cert.c:2028
int ret
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define X509_ISSUING_DIST_POINT
Definition: wincrypt.h:3424
#define CRYPT_E_NO_MATCH
Definition: winerror.h:3012
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
DWORD cExtension
Definition: wincrypt.h:251
#define szOID_ISSUING_DIST_POINT
Definition: wincrypt.h:3194
#define CRYPT_DECODE_ALLOC_FLAG
Definition: wincrypt.h:3454
#define X509_CRL_DIST_POINTS
Definition: wincrypt.h:3402
PCERT_EXTENSION rgExtension
Definition: wincrypt.h:503

◆ CertSetCRLContextProperty()

BOOL WINAPI CertSetCRLContextProperty ( PCCRL_CONTEXT  pCRLContext,
DWORD  dwPropId,
DWORD  dwFlags,
const void pvData 
)

Definition at line 566 of file crl.c.

568 {
569  BOOL ret;
570 
571  TRACE("(%p, %d, %08x, %p)\n", pCRLContext, dwPropId, dwFlags, pvData);
572 
573  /* Handle special cases for "read-only"/invalid prop IDs. Windows just
574  * crashes on most of these, I'll be safer.
575  */
576  switch (dwPropId)
577  {
578  case 0:
580  case CERT_CERT_PROP_ID:
581  case CERT_CRL_PROP_ID:
582  case CERT_CTL_PROP_ID:
584  return FALSE;
585  }
587  TRACE("returning %d\n", ret);
588  return ret;
589 }
#define CERT_CERT_PROP_ID
static crl_t * crl_from_ptr(const CRL_CONTEXT *ptr)
#define CERT_CTL_PROP_ID
#define CERT_ACCESS_STATE_PROP_ID
Definition: wincrypt.h:2700
unsigned int BOOL
Definition: ntddk_ex.h:94
#define E_INVALIDARG
Definition: ddrawi.h:101
_In_ ULONG _In_opt_ PVOID pvData
Definition: winddi.h:3748
#define TRACE(s)
Definition: solgame.cpp:4
#define SetLastError(x)
Definition: compat.h:409
int ret
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
_In_ DWORD dwPropId
Definition: wincrypt.h:4952
static BOOL CRLContext_SetProperty(crl_t *crl, DWORD dwPropId, DWORD dwFlags, const void *pvData)
Definition: crl.c:511
#define CERT_CRL_PROP_ID

Referenced by testCRLProperties().

◆ CertVerifyCRLRevocation()

BOOL WINAPI CertVerifyCRLRevocation ( DWORD  dwCertEncodingType,
PCERT_INFO  pCertId,
DWORD  cCrlInfo,
PCRL_INFO  rgpCrlInfo[] 
)

Definition at line 762 of file crl.c.

764 {
765  DWORD i;
767 
768  TRACE("(%08x, %p, %d, %p)\n", dwCertEncodingType, pCertId, cCrlInfo,
769  rgpCrlInfo);
770 
771  for (i = 0; !entry && i < cCrlInfo; i++)
772  entry = CRYPT_FindCertificateInCRL(pCertId, rgpCrlInfo[i]);
773  return entry == NULL;
774 }
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
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
static PCRL_ENTRY CRYPT_FindCertificateInCRL(PCERT_INFO cert, const CRL_INFO *crl)
Definition: crl.c:738
uint32_t entry
Definition: isohybrid.c:63
_In_ DWORD dwCertEncodingType
Definition: wincrypt.h:5041
Definition: wincrypt.h:487

Referenced by CertVerifySubjectCertificateContext(), and testVerifyCRLRevocation().

◆ CertVerifyCRLTimeValidity()

LONG WINAPI CertVerifyCRLTimeValidity ( LPFILETIME  pTimeToVerify,
PCRL_INFO  pCrlInfo 
)

Definition at line 776 of file crl.c.

778 {
780  LONG ret;
781 
782  if (!pTimeToVerify)
783  {
785  pTimeToVerify = &fileTime;
786  }
787  if ((ret = CompareFileTime(pTimeToVerify, &pCrlInfo->ThisUpdate)) >= 0)
788  {
789  ret = CompareFileTime(pTimeToVerify, &pCrlInfo->NextUpdate);
790  if (ret < 0)
791  ret = 0;
792  }
793  return ret;
794 }
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
Definition: time.c:128
SYSTEMTIME fileTime
Definition: main.cpp:57
FILETIME NextUpdate
Definition: wincrypt.h:499
long LONG
Definition: pedump.c:60
LONG WINAPI CompareFileTime(IN CONST FILETIME *lpFileTime1, IN CONST FILETIME *lpFileTime2)
Definition: time.c:106
int ret
FILETIME ThisUpdate
Definition: wincrypt.h:498

Referenced by CertGetCRLFromStore().

◆ compare_crl_any()

static BOOL compare_crl_any ( PCCRL_CONTEXT  pCrlContext,
DWORD  dwType,
DWORD  dwFlags,
const void pvPara 
)
static

Definition at line 154 of file crl.c.

156 {
157  return TRUE;
158 }
#define TRUE
Definition: types.h:120

Referenced by CertFindCRLInStore().

◆ compare_crl_existing()

static BOOL compare_crl_existing ( PCCRL_CONTEXT  pCrlContext,
DWORD  dwType,
DWORD  dwFlags,
const void pvPara 
)
static

Definition at line 259 of file crl.c.

261 {
262  BOOL ret;
263 
264  if (pvPara)
265  {
267 
269  &pCrlContext->pCrlInfo->Issuer, &crl->pCrlInfo->Issuer);
270  }
271  else
272  ret = TRUE;
273  return ret;
274 }
#define TRUE
Definition: types.h:120
PCRL_INFO pCrlInfo
Definition: wincrypt.h:622
static const BYTE crl[]
Definition: message.c:864
BOOL WINAPI CertCompareCertificateName(DWORD dwCertEncodingType, PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2)
Definition: cert.c:1180
unsigned int BOOL
Definition: ntddk_ex.h:94
DWORD dwCertEncodingType
Definition: wincrypt.h:619
int ret
CERT_NAME_BLOB Issuer
Definition: wincrypt.h:497
_In_ PCCRL_CONTEXT pCrlContext
Definition: wincrypt.h:4996
_In_ void * pvPara
Definition: wincrypt.h:6081

Referenced by CertFindCRLInStore().

◆ compare_crl_issued_by()

static BOOL compare_crl_issued_by ( PCCRL_CONTEXT  pCrlContext,
DWORD  dwType,
DWORD  dwFlags,
const void pvPara 
)
static

Definition at line 160 of file crl.c.

162 {
163  BOOL ret;
164 
165  if (pvPara)
166  {
168 
169  ret = CertCompareCertificateName(issuer->dwCertEncodingType,
170  &issuer->pCertInfo->Subject, &pCrlContext->pCrlInfo->Issuer);
173  issuer->dwCertEncodingType,
177  {
181 
182  if (ext)
183  {
185  DWORD size;
186 
188  X509_AUTHORITY_KEY_ID2, ext->Value.pbData, ext->Value.cbData,
190  {
191  if (info->AuthorityCertIssuer.cAltEntry &&
192  info->AuthorityCertSerialNumber.cbData)
193  {
194  PCERT_ALT_NAME_ENTRY directoryName = NULL;
195  DWORD i;
196 
197  for (i = 0; !directoryName &&
198  i < info->AuthorityCertIssuer.cAltEntry; i++)
199  if (info->AuthorityCertIssuer.rgAltEntry[i].
200  dwAltNameChoice == CERT_ALT_NAME_DIRECTORY_NAME)
201  directoryName =
202  &info->AuthorityCertIssuer.rgAltEntry[i];
203  if (directoryName)
204  {
206  issuer->dwCertEncodingType,
207  &issuer->pCertInfo->Subject,
208  &directoryName->u.DirectoryName);
209  if (ret)
211  &issuer->pCertInfo->SerialNumber,
212  &info->AuthorityCertSerialNumber);
213  }
214  else
215  {
216  FIXME("no supported name type in authority key id2\n");
217  ret = FALSE;
218  }
219  }
220  else if (info->KeyId.cbData)
221  {
222  DWORD size;
223 
226  if (ret && size == info->KeyId.cbData)
227  {
229 
230  if (buf)
231  {
234  ret = !memcmp(buf, info->KeyId.pbData, size);
235  CryptMemFree(buf);
236  }
237  else
238  ret = FALSE;
239  }
240  else
241  ret = FALSE;
242  }
243  else
244  {
245  FIXME("unsupported value for AKI extension\n");
246  ret = FALSE;
247  }
248  LocalFree(info);
249  }
250  }
251  /* else: a CRL without an AKI matches any cert */
252  }
253  }
254  else
255  ret = TRUE;
256  return ret;
257 }
#define TRUE
Definition: types.h:120
#define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG
Definition: wincrypt.h:2933
PCRL_INFO pCrlInfo
Definition: wincrypt.h:622
CERT_NAME_BLOB DirectoryName
Definition: wincrypt.h:338
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo)
Definition: decode.c:6286
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define CERT_ALT_NAME_DIRECTORY_NAME
Definition: wincrypt.h:349
Definition: wincrypt.h:332
#define CRL_FIND_ISSUED_BY_AKI_FLAG
Definition: wincrypt.h:2932
BOOL WINAPI CertCompareCertificateName(DWORD dwCertEncodingType, PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2)
Definition: cert.c:1180
struct _test_info info[]
Definition: SetCursorPos.c:19
#define CERT_KEY_IDENTIFIER_PROP_ID
Definition: wincrypt.h:2706
#define X509_ASN_ENCODING
Definition: wincrypt.h:2297
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
Definition: glfuncs.h:248
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
Definition: main.c:131
BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, DWORD dwPropId, void *pvData, DWORD *pcbData)
Definition: cert.c:551
unsigned char * LPBYTE
Definition: typedefs.h:52
unsigned int BOOL
Definition: ntddk_ex.h:94
DWORD cExtension
Definition: wincrypt.h:502
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
char ext[3]
Definition: mkdosfs.c:358
BOOL WINAPI CertCompareIntegerBlob(PCRYPT_INTEGER_BLOB pInt1, PCRYPT_INTEGER_BLOB pInt2)
Definition: cert.c:1221
GLsizeiptr size
Definition: glext.h:5919
unsigned long DWORD
Definition: ntddk_ex.h:95
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL
Definition: wincrypt.h:3470
PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR pszObjId, DWORD cExtensions, CERT_EXTENSION rgExtensions[])
Definition: cert.c:2028
BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, DWORD dwSubjectType, void *pvSubject, DWORD dwIssuerType, void *pvIssuer, DWORD dwFlags, void *pvReserved)
Definition: cert.c:2717
int ret
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
CERT_NAME_BLOB Issuer
Definition: wincrypt.h:497
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT
Definition: wincrypt.h:3474
#define szOID_AUTHORITY_KEY_IDENTIFIER2
Definition: wincrypt.h:3200
#define X509_AUTHORITY_KEY_ID2
Definition: wincrypt.h:3398
VOID WINAPI CryptMemFree(LPVOID pv)
Definition: main.c:141
_In_ PCCRL_CONTEXT pCrlContext
Definition: wincrypt.h:4996
#define CRYPT_DECODE_ALLOC_FLAG
Definition: wincrypt.h:3454
_In_ void * pvPara
Definition: wincrypt.h:6081
static WCHAR issuer[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1905
PCERT_EXTENSION rgExtension
Definition: wincrypt.h:503

Referenced by CertFindCRLInStore().

◆ compare_crl_issued_for()

static BOOL compare_crl_issued_for ( PCCRL_CONTEXT  pCrlContext,
DWORD  dwType,
DWORD  dwFlags,
const void pvPara 
)
static

Definition at line 276 of file crl.c.

278 {
279  const CRL_FIND_ISSUED_FOR_PARA *para = pvPara;
280  BOOL ret;
281 
284  return ret;
285 }
PCRL_INFO pCrlInfo
Definition: wincrypt.h:622
DWORD dwCertEncodingType
Definition: wincrypt.h:479
BOOL WINAPI CertCompareCertificateName(DWORD dwCertEncodingType, PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2)
Definition: cert.c:1180
unsigned int BOOL
Definition: ntddk_ex.h:94
CERT_NAME_BLOB Issuer
Definition: wincrypt.h:244
PCCERT_CONTEXT pIssuerCert
Definition: wincrypt.h:2940
PCERT_INFO pCertInfo
Definition: wincrypt.h:482
int ret
CERT_NAME_BLOB Issuer
Definition: wincrypt.h:497
_In_ PCCRL_CONTEXT pCrlContext
Definition: wincrypt.h:4996
_In_ void * pvPara
Definition: wincrypt.h:6081

Referenced by CertFindCRLInStore().

◆ compare_dist_point_name()

static BOOL compare_dist_point_name ( const CRL_DIST_POINT_NAME name1,
const CRL_DIST_POINT_NAME name2 
)
static

Definition at line 591 of file crl.c.

593 {
594  BOOL match;
595 
596  if (name1->dwDistPointNameChoice == name2->dwDistPointNameChoice)
597  {
598  match = TRUE;
599  if (name1->dwDistPointNameChoice == CRL_DIST_POINT_FULL_NAME)
600  {
601  if (name1->u.FullName.cAltEntry == name2->u.FullName.cAltEntry)
602  {
603  DWORD i;
604 
605  for (i = 0; match && i < name1->u.FullName.cAltEntry; i++)
606  {
607  const CERT_ALT_NAME_ENTRY *entry1 =
608  &name1->u.FullName.rgAltEntry[i];
609  const CERT_ALT_NAME_ENTRY *entry2 =
610  &name2->u.FullName.rgAltEntry[i];
611 
612  if (entry1->dwAltNameChoice == entry2->dwAltNameChoice)
613  {
614  switch (entry1->dwAltNameChoice)
615  {
616  case CERT_ALT_NAME_URL:
617  match = !strcmpiW(entry1->u.pwszURL,
618  entry2->u.pwszURL);
619  break;
621  match = (entry1->u.DirectoryName.cbData ==
622  entry2->u.DirectoryName.cbData) &&
623  !memcmp(entry1->u.DirectoryName.pbData,
624  entry2->u.DirectoryName.pbData,
625  entry1->u.DirectoryName.cbData);
626  break;
627  default:
628  FIXME("unimplemented for type %d\n",
629  entry1->dwAltNameChoice);
630  match = FALSE;
631  }
632  }
633  else
634  match = FALSE;
635  }
636  }
637  else
638  match = FALSE;
639  }
640  }
641  else
642  match = FALSE;
643  return match;
644 }
DWORD dwAltNameChoice
Definition: wincrypt.h:333
#define TRUE
Definition: types.h:120
CERT_NAME_BLOB DirectoryName
Definition: wincrypt.h:338
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
Definition: match.c:28
#define CERT_ALT_NAME_DIRECTORY_NAME
Definition: wincrypt.h:349
#define CERT_ALT_NAME_URL
Definition: wincrypt.h:351
Definition: wincrypt.h:332
static WCHAR name1[]
Definition: record.c:34
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
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
#define FIXME(fmt,...)
Definition: debug.h:110
struct match match
Definition: match.c:33
#define CRL_DIST_POINT_FULL_NAME
Definition: wincrypt.h:514
unsigned long DWORD
Definition: ntddk_ex.h:95
BYTE * pbData
Definition: wincrypt.h:103
#define strcmpiW(s1, s2)
Definition: unicode.h:39
LPWSTR pwszURL
Definition: wincrypt.h:339
static WCHAR name2[]
Definition: record.c:35

Referenced by match_dist_point_with_issuing_dist_point().

◆ CRL_clone()

static context_t* CRL_clone ( context_t context,
WINECRYPT_CERTSTORE store,
BOOL  use_link 
)
static

Definition at line 42 of file crl.c.

43 {
44  crl_t *crl;
45 
46  if(use_link) {
48  if(!crl)
49  return NULL;
50  }else {
51  const crl_t *cloned = (const crl_t*)context;
52  DWORD size = 0;
53  BOOL res;
54 
56  if(!crl)
57  return NULL;
58 
59  Context_CopyProperties(&crl->ctx, &cloned->ctx);
60 
61  crl->ctx.dwCertEncodingType = cloned->ctx.dwCertEncodingType;
62  crl->ctx.pbCrlEncoded = CryptMemAlloc(cloned->ctx.cbCrlEncoded);
63  memcpy(crl->ctx.pbCrlEncoded, cloned->ctx.pbCrlEncoded, cloned->ctx.cbCrlEncoded);
64  crl->ctx.cbCrlEncoded = cloned->ctx.cbCrlEncoded;
65 
66  /* FIXME: We don't need to decode the object here, we could just clone crl info. */
67  res = CryptDecodeObjectEx(crl->ctx.dwCertEncodingType, X509_CERT_CRL_TO_BE_SIGNED,
68  crl->ctx.pbCrlEncoded, crl->ctx.cbCrlEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL,
69  &crl->ctx.pCrlInfo, &size);
70  if(!res) {
71  CertFreeCRLContext(&crl->ctx);
72  return NULL;
73  }
74  }
75 
76  crl->ctx.hCertStore = store;
77  return &crl->base;
78 }
void Context_CopyProperties(const void *to, const void *from)
Definition: context.c:123
static const BYTE crl[]
Definition: message.c:864
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo)
Definition: decode.c:6286
Definition: http.c:6587
context_t * Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl, WINECRYPT_CERTSTORE *store)
Definition: context.c:28
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
Definition: main.c:131
unsigned int BOOL
Definition: ntddk_ex.h:94
BYTE * pbCrlEncoded
Definition: wincrypt.h:620
smooth NULL
Definition: ftsmooth.c:416
DWORD cbCrlEncoded
Definition: wincrypt.h:621
#define X509_CERT_CRL_TO_BE_SIGNED
Definition: wincrypt.h:3367
GLsizeiptr size
Definition: glext.h:5919
DWORD dwCertEncodingType
Definition: wincrypt.h:619
unsigned long DWORD
Definition: ntddk_ex.h:95
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static const context_vtbl_t crl_vtbl
Definition: crl.c:40
GLuint res
Definition: glext.h:9613
#define CRYPT_DECODE_ALLOC_FLAG
Definition: wincrypt.h:3454
context_t * Context_CreateLinkContext(unsigned int contextSize, context_t *linked, WINECRYPT_CERTSTORE *store)
Definition: context.c:54
BOOL WINAPI CertFreeCRLContext(PCCRL_CONTEXT pCrlContext)
Definition: crl.c:386
CRL_CONTEXT ctx

◆ CRL_free()

static void CRL_free ( context_t context)
static

Definition at line 32 of file crl.c.

33 {
34  crl_t *crl = (crl_t*)context;
35 
36  CryptMemFree(crl->ctx.pbCrlEncoded);
37  LocalFree(crl->ctx.pCrlInfo);
38 }
static const BYTE crl[]
Definition: message.c:864
Definition: http.c:6587
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
VOID WINAPI CryptMemFree(LPVOID pv)
Definition: main.c:141

◆ CRLContext_GetHashProp()

static BOOL CRLContext_GetHashProp ( crl_t crl,
DWORD  dwPropId,
ALG_ID  algID,
const BYTE toHash,
DWORD  toHashLen,
void pvData,
DWORD pcbData 
)
static

Definition at line 406 of file crl.c.

409 {
410  BOOL ret = CryptHashCertificate(0, algID, 0, toHash, toHashLen, pvData,
411  pcbData);
412  if (ret && pvData)
413  {
415 
417  }
418  return ret;
419 }
static const BYTE crl[]
Definition: message.c:864
Definition: image.c:133
unsigned int BOOL
Definition: ntddk_ex.h:94
_In_ ULONG _In_opt_ PVOID pvData
Definition: winddi.h:3748
int ret
_In_ DWORD dwPropId
Definition: wincrypt.h:4952
static BOOL CRLContext_SetProperty(crl_t *crl, DWORD dwPropId, DWORD dwFlags, const void *pvData)
Definition: crl.c:511
BOOL WINAPI CryptHashCertificate(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, DWORD dwFlags, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash)
Definition: cert.c:2187
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
Definition: wincrypt.h:4953

Referenced by CRLContext_GetProperty().

◆ CRLContext_GetProperty()

static BOOL CRLContext_GetProperty ( crl_t crl,
DWORD  dwPropId,
void pvData,
DWORD pcbData 
)
static

Definition at line 421 of file crl.c.

423 {
424  BOOL ret;
426 
427  TRACE("(%p, %d, %p, %p)\n", crl, dwPropId, pvData, pcbData);
428 
429  if (crl->base.properties)
430  ret = ContextPropertyList_FindProperty(crl->base.properties, dwPropId, &blob);
431  else
432  ret = FALSE;
433  if (ret)
434  {
435  if (!pvData)
436  *pcbData = blob.cbData;
437  else if (*pcbData < blob.cbData)
438  {
440  *pcbData = blob.cbData;
441  ret = FALSE;
442  }
443  else
444  {
445  memcpy(pvData, blob.pbData, blob.cbData);
446  *pcbData = blob.cbData;
447  }
448  }
449  else
450  {
451  /* Implicit properties */
452  switch (dwPropId)
453  {
456  crl->ctx.pbCrlEncoded, crl->ctx.cbCrlEncoded, pvData,
457  pcbData);
458  break;
461  crl->ctx.pbCrlEncoded, crl->ctx.cbCrlEncoded, pvData,
462  pcbData);
463  break;
464  default:
466  }
467  }
468  TRACE("returning %d\n", ret);
469  return ret;
470 }
static const BYTE crl[]
Definition: message.c:864
#define CRYPT_E_NOT_FOUND
Definition: winerror.h:3007
Definition: image.c:133
BOOL ContextPropertyList_FindProperty(CONTEXT_PROPERTY_LIST *list, DWORD id, PCRYPT_DATA_BLOB blob) DECLSPEC_HIDDEN
Definition: proplist.c:72
unsigned int BOOL
Definition: ntddk_ex.h:94
_In_ ULONG _In_opt_ PVOID pvData
Definition: winddi.h:3748
#define TRACE(s)
Definition: solgame.cpp:4
#define CERT_MD5_HASH_PROP_ID
Definition: wincrypt.h:2689
#define SetLastError(x)
Definition: compat.h:409
int ret
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define CALG_MD5
Definition: wincrypt.h:1805
#define ERROR_MORE_DATA
Definition: dderror.h:13
#define CALG_SHA1
Definition: wincrypt.h:1807
_In_ DWORD dwPropId
Definition: wincrypt.h:4952
#define CERT_SHA1_HASH_PROP_ID
Definition: wincrypt.h:2687
static BOOL CRLContext_GetHashProp(crl_t *crl, DWORD dwPropId, ALG_ID algID, const BYTE *toHash, DWORD toHashLen, void *pvData, DWORD *pcbData)
Definition: crl.c:406
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
Definition: wincrypt.h:4953

Referenced by CertGetCRLContextProperty().

◆ CRLContext_SetProperty()

static BOOL CRLContext_SetProperty ( crl_t crl,
DWORD  dwPropId,
DWORD  dwFlags,
const void pvData 
)
static

Definition at line 511 of file crl.c.

513 {
514  BOOL ret;
515 
516  TRACE("(%p, %d, %08x, %p)\n", crl, dwPropId, dwFlags, pvData);
517 
518  if (!crl->base.properties)
519  ret = FALSE;
520  else if (!pvData)
521  {
523  ret = TRUE;
524  }
525  else
526  {
527  switch (dwPropId)
528  {
530  case CERT_CTL_USAGE_PROP_ID: /* same as CERT_ENHKEY_USAGE_PROP_ID */
533  case CERT_HASH_PROP_ID:
546  {
548 
549  ret = ContextPropertyList_SetProperty(crl->base.properties, dwPropId,
550  blob->pbData, blob->cbData);
551  break;
552  }
554  ret = ContextPropertyList_SetProperty(crl->base.properties, dwPropId,
555  pvData, sizeof(FILETIME));
556  break;
557  default:
558  FIXME("%d: stub\n", dwPropId);
559  ret = FALSE;
560  }
561  }
562  TRACE("returning %d\n", ret);
563  return ret;
564 }
void ContextPropertyList_RemoveProperty(CONTEXT_PROPERTY_LIST *list, DWORD id) DECLSPEC_HIDDEN
Definition: proplist.c:149
#define CERT_ENROLLMENT_PROP_ID
Definition: wincrypt.h:2712
#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
Definition: wincrypt.h:2711
#define TRUE
Definition: types.h:120
static const BYTE crl[]
Definition: message.c:864
Definition: image.c:133
BOOL ContextPropertyList_SetProperty(CONTEXT_PROPERTY_LIST *list, DWORD id, const BYTE *pbData, size_t cbData) DECLSPEC_HIDDEN
Definition: proplist.c:95
#define CERT_DATE_STAMP_PROP_ID
Definition: wincrypt.h:2713
#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID
Definition: wincrypt.h:2710
#define CERT_AUTO_ENROLL_PROP_ID
Definition: wincrypt.h:2707
struct _CRYPTOAPI_BLOB * PCRYPT_DATA_BLOB
#define CERT_KEY_IDENTIFIER_PROP_ID
Definition: wincrypt.h:2706
unsigned int BOOL
Definition: ntddk_ex.h:94
#define FIXME(fmt,...)
Definition: debug.h:110
_In_ ULONG _In_opt_ PVOID pvData
Definition: winddi.h:3748
#define CERT_PVK_FILE_PROP_ID
Definition: wincrypt.h:2698
#define CERT_FRIENDLY_NAME_PROP_ID
Definition: wincrypt.h:2697
#define TRACE(s)
Definition: solgame.cpp:4
#define CERT_MD5_HASH_PROP_ID
Definition: wincrypt.h:2689
#define CERT_SIGNATURE_HASH_PROP_ID
Definition: wincrypt.h:2701
#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID
Definition: wincrypt.h:2709
#define CERT_HASH_PROP_ID
Definition: wincrypt.h:2688
int ret
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define CERT_NEXT_UPDATE_LOCATION_PROP_ID
Definition: wincrypt.h:2696
#define CERT_RENEWAL_PROP_ID
Definition: wincrypt.h:2724
_In_ DWORD dwPropId
Definition: wincrypt.h:4952
#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
Definition: wincrypt.h:2715
#define CERT_DESCRIPTION_PROP_ID
Definition: wincrypt.h:2699
#define CERT_CTL_USAGE_PROP_ID
Definition: wincrypt.h:2695
#define CERT_PUBKEY_ALG_PARA_PROP_ID
Definition: wincrypt.h:2708

Referenced by CertSetCRLContextProperty(), and CRLContext_GetHashProp().

◆ CRYPT_FindCertificateInCRL()

static PCRL_ENTRY CRYPT_FindCertificateInCRL ( PCERT_INFO  cert,
const CRL_INFO crl 
)
static

Definition at line 738 of file crl.c.

739 {
740  DWORD i;
742 
743  for (i = 0; !entry && i < crl->cCRLEntry; i++)
744  if (CertCompareIntegerBlob(&crl->rgCRLEntry[i].SerialNumber,
745  &cert->SerialNumber))
746  entry = &crl->rgCRLEntry[i];
747  return entry;
748 }
static const BYTE crl[]
Definition: message.c:864
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
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
static BYTE cert[]
Definition: msg.c:1437
BOOL WINAPI CertCompareIntegerBlob(PCRYPT_INTEGER_BLOB pInt1, PCRYPT_INTEGER_BLOB pInt2)
Definition: cert.c:1221
unsigned long DWORD
Definition: ntddk_ex.h:95
uint32_t entry
Definition: isohybrid.c:63
Definition: wincrypt.h:487

Referenced by CertFindCertificateInCRL(), and CertVerifyCRLRevocation().

◆ match_dist_point_with_issuing_dist_point()

static BOOL match_dist_point_with_issuing_dist_point ( const CRL_DIST_POINT distPoint,
const CRL_ISSUING_DIST_POINT idp 
)
static

Definition at line 646 of file crl.c.

648 {
649  BOOL match;
650 
651  /* While RFC 5280, section 4.2.1.13 recommends against segmenting
652  * CRL distribution points by reasons, it doesn't preclude doing so.
653  * "This profile RECOMMENDS against segmenting CRLs by reason code."
654  * If the issuing distribution point for this CRL is only valid for
655  * some reasons, only match if the reasons covered also match the
656  * reasons in the CRL distribution point.
657  */
658  if (idp->OnlySomeReasonFlags.cbData)
659  {
660  if (idp->OnlySomeReasonFlags.cbData == distPoint->ReasonFlags.cbData)
661  {
662  DWORD i;
663 
664  match = TRUE;
665  for (i = 0; match && i < distPoint->ReasonFlags.cbData; i++)
666  if (idp->OnlySomeReasonFlags.pbData[i] !=
667  distPoint->ReasonFlags.pbData[i])
668  match = FALSE;
669  }
670  else
671  match = FALSE;
672  }
673  else
674  match = TRUE;
675  if (match)
677  &distPoint->DistPointName);
678  return match;
679 }
CRL_DIST_POINT_NAME DistPointName
Definition: wincrypt.h:518
#define TRUE
Definition: types.h:120
CRL_DIST_POINT_NAME DistPointName
Definition: wincrypt.h:563
static BOOL compare_dist_point_name(const CRL_DIST_POINT_NAME *name1, const CRL_DIST_POINT_NAME *name2)
Definition: crl.c:591
Definition: match.c:28
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
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
struct match match
Definition: match.c:33
CRYPT_BIT_BLOB OnlySomeReasonFlags
Definition: wincrypt.h:566
unsigned long DWORD
Definition: ntddk_ex.h:95
CRYPT_BIT_BLOB ReasonFlags
Definition: wincrypt.h:519
BYTE * pbData
Definition: wincrypt.h:197

Referenced by CertIsValidCRLForCertificate().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( crypt  )

Variable Documentation

◆ crl_vtbl

static const context_vtbl_t crl_vtbl
static
Initial value:
= {
}
static context_t * CRL_clone(context_t *context, WINECRYPT_CERTSTORE *store, BOOL use_link)
Definition: crl.c:42
static void CRL_free(context_t *context)
Definition: crl.c:32

Definition at line 40 of file crl.c.

Referenced by CertCreateCRLContext(), and CRL_clone().