public static IChainPal BuildChain( bool useMachineContext, ICertificatePal cert, X509Certificate2Collection?extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, X509Certificate2Collection customTrustStore, X509ChainTrustMode trustMode, DateTime verificationTime, TimeSpan timeout) { // If the time was given in Universal, it will stay Universal. // If the time was given in Local, it will be converted. // If the time was given in Unspecified, it will be assumed local, and converted. // // This matches the "assume Local unless explicitly Universal" implicit contract. verificationTime = verificationTime.ToUniversalTime(); // The Windows (and other-Unix-PAL) behavior is to allow network until network operations // have exceeded the specified timeout. For Apple it's either on (and AIA fetching works), // or off (and AIA fetching doesn't work). And once an SSL policy is used, or revocation is // being checked, the value is on anyways. const bool allowNetwork = true; SecTrustChainPal chainPal = new SecTrustChainPal(); try { chainPal.OpenTrustHandle( cert, extraStore, revocationMode, customTrustStore, trustMode); chainPal.Execute( verificationTime, allowNetwork, applicationPolicy, certificatePolicy, revocationFlag); } catch { chainPal.Dispose(); throw; } return(chainPal); }
public static IChainPal BuildChain( bool useMachineContext, ICertificatePal cert, X509Certificate2Collection?extraStore, OidCollection applicationPolicy, OidCollection certificatePolicy, X509RevocationMode revocationMode, X509RevocationFlag revocationFlag, X509Certificate2Collection customTrustStore, X509ChainTrustMode trustMode, DateTime verificationTime, TimeSpan timeout, bool disableAia) { // If the time was given in Universal, it will stay Universal. // If the time was given in Local, it will be converted. // If the time was given in Unspecified, it will be assumed local, and converted. // // This matches the "assume Local unless explicitly Universal" implicit contract. verificationTime = verificationTime.ToUniversalTime(); SecTrustChainPal chainPal = new SecTrustChainPal(); try { chainPal.OpenTrustHandle( cert, extraStore, revocationMode, customTrustStore, trustMode); chainPal.Execute( verificationTime, !disableAia, applicationPolicy, certificatePolicy, revocationFlag); } catch { chainPal.Dispose(); throw; } return(chainPal); }