95 {
96 CertificatePal certificatePal = (CertificatePal)cert;
101 int numOids;
102 using SafeHandle safeHandle = applicationPolicy.ToLpstrArray(out numOids);
103 if (!safeHandle.IsInvalid)
104 {
106 pChainPara.RequestedUsage.Usage.cUsageIdentifier = numOids;
107 pChainPara.RequestedUsage.Usage.rgpszUsageIdentifier = safeHandle.DangerousGetHandle();
108 }
109 int numOids2;
110 using SafeHandle safeHandle2 = certificatePolicy.ToLpstrArray(out numOids2);
111 if (!safeHandle2.IsInvalid)
112 {
114 pChainPara.RequestedIssuancePolicy.Usage.cUsageIdentifier = numOids2;
115 pChainPara.RequestedIssuancePolicy.Usage.rgpszUsageIdentifier = safeHandle2.DangerousGetHandle();
116 }
117 pChainPara.dwUrlRetrievalTimeout = (int)
Math.
Floor(
timeout.TotalMilliseconds);
120 if (!global::Interop.crypt32.CertGetCertificateChain(safeChainEngineHandle.DangerousGetHandle(), certificatePal.CertContext, &fILETIME, hStore, ref pChainPara, dwFlags,
IntPtr.
Zero, out var ppChainContext))
121 {
122 return null;
123 }
124 return new ChainPal(ppChainContext);
125 }
static SafeChainEngineHandle GetChainEngine(X509ChainTrustMode trustMode, X509Certificate2Collection customTrustStore, bool useMachineContext)
ChainPal(SafeX509ChainHandle chain)
static CertChainFlags MapRevocationFlags(X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, bool disableAia)
static SafeCertStoreHandle ConvertStoreToSafeHandle(X509Certificate2Collection extraStore, bool returnEmptyHandle=false)
static double Floor(double d)
static int SizeOf(object structure)
static FILETIME FromDateTime(DateTime dt)
static readonly IntPtr Zero