public static void displayChain(uint pChainContext) { Certificate cert; IChainContext iChain; CAPICOM.Chain oChain; IEnumerator eEnum; int i = 0; //API bridging oChain = new ChainClass(); iChain = (IChainContext)oChain; iChain.ChainContext = (int)pChainContext; //get the number of certificates in chain eEnum = oChain.Certificates.GetEnumerator(); Console.WriteLine(); Console.WriteLine("Chain: "); //display properties of each certificate in the chain while (eEnum.MoveNext() == true) { i++; cert = (Certificate)eEnum.Current; Console.WriteLine("Certificate: " + i); Console.WriteLine("Subject: " + cert.SubjectName); Console.WriteLine("Issuer: " + cert.IssuerName); Console.WriteLine("Hash: " + cert.Thumbprint); Console.WriteLine("Valid From: " + cert.ValidFromDate); Console.WriteLine("Valid To: " + cert.ValidToDate); Console.WriteLine(); } }
public static void checkValidity(uint pChainContext) { IChainContext iChain; CAPICOM.Chain oChain; int status; //API bridging oChain = new ChainClass(); iChain = (IChainContext)oChain; iChain.ChainContext = (int)pChainContext; //get status of the entire chain status = oChain.get_Status(0); if (status == 0) { Console.Write("The chain appears trustworthy."); Console.WriteLine(); return; } Console.WriteLine("The chain is invalid."); // display specific chain status // note: for simplicity, only SOME possible status // values are presented below if ((status & Constants.CAPICOM_TRUST_IS_NOT_TIME_VALID) == Constants.CAPICOM_TRUST_IS_NOT_TIME_VALID) Console.WriteLine("Chain status: not time valid"); if ((status & Constants.CAPICOM_TRUST_IS_NOT_TIME_NESTED) == Constants.CAPICOM_TRUST_IS_NOT_TIME_NESTED) Console.WriteLine("Chain status: time nested."); if ((status & Constants.CAPICOM_TRUST_IS_REVOKED) == Constants.CAPICOM_TRUST_IS_REVOKED) Console.WriteLine("Chain status: is revoked"); if ((status & Constants.CAPICOM_TRUST_IS_NOT_SIGNATURE_VALID) == Constants.CAPICOM_TRUST_IS_REVOKED) Console.WriteLine("Chain status: invalid signature"); if ((status & Constants.CAPICOM_TRUST_IS_UNTRUSTED_ROOT) == Constants.CAPICOM_TRUST_IS_UNTRUSTED_ROOT) Console.WriteLine("Chain status: untrusted root"); if ((status & Constants.CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN) == Constants.CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN) Console.WriteLine("Chain status: revocation status unknown"); if ((status & Constants.CAPICOM_TRUST_INVALID_EXTENSION) == Constants.CAPICOM_TRUST_INVALID_EXTENSION) Console.WriteLine("Chain status: invalid extension"); if ((status & Constants.CAPICOM_TRUST_INVALID_POLICY_CONSTRAINTS) == Constants.CAPICOM_TRUST_INVALID_POLICY_CONSTRAINTS) Console.WriteLine("Chain status: invalid policy constraints"); if ((status & Constants.CAPICOM_TRUST_INVALID_BASIC_CONSTRAINTS) == Constants.CAPICOM_TRUST_INVALID_BASIC_CONSTRAINTS) Console.WriteLine("Chain status: invalid basic constraints"); if ((status & Constants.CAPICOM_TRUST_INVALID_NAME_CONSTRAINTS) == Constants.CAPICOM_TRUST_INVALID_NAME_CONSTRAINTS) Console.WriteLine("Chain status: invalid name constraints"); if ((status & Constants.CAPICOM_TRUST_IS_OFFLINE_REVOCATION) == Constants.CAPICOM_TRUST_IS_OFFLINE_REVOCATION) Console.WriteLine("Chain status: offline revocation"); if ((status & Constants.CAPICOM_TRUST_IS_PARTIAL_CHAIN) == Constants.CAPICOM_TRUST_IS_PARTIAL_CHAIN) Console.WriteLine("Chain status: partial chain"); Console.WriteLine(); }
public static void checkValidity(uint pChainContext) { IChainContext iChain; CAPICOM.Chain oChain; int status; //API bridging oChain = new ChainClass(); iChain = (IChainContext)oChain; iChain.ChainContext = (int)pChainContext; //get status of the entire chain status = oChain.get_Status(0); if (status == 0) { Console.Write("The chain appears trustworthy."); Console.WriteLine(); return; } Console.WriteLine("The chain is invalid."); // display specific chain status // note: for simplicity, only SOME possible status // values are presented below if ((status & Constants.CAPICOM_TRUST_IS_NOT_TIME_VALID) == Constants.CAPICOM_TRUST_IS_NOT_TIME_VALID) { Console.WriteLine("Chain status: not time valid"); } if ((status & Constants.CAPICOM_TRUST_IS_NOT_TIME_NESTED) == Constants.CAPICOM_TRUST_IS_NOT_TIME_NESTED) { Console.WriteLine("Chain status: time nested."); } if ((status & Constants.CAPICOM_TRUST_IS_REVOKED) == Constants.CAPICOM_TRUST_IS_REVOKED) { Console.WriteLine("Chain status: is revoked"); } if ((status & Constants.CAPICOM_TRUST_IS_NOT_SIGNATURE_VALID) == Constants.CAPICOM_TRUST_IS_REVOKED) { Console.WriteLine("Chain status: invalid signature"); } if ((status & Constants.CAPICOM_TRUST_IS_UNTRUSTED_ROOT) == Constants.CAPICOM_TRUST_IS_UNTRUSTED_ROOT) { Console.WriteLine("Chain status: untrusted root"); } if ((status & Constants.CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN) == Constants.CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN) { Console.WriteLine("Chain status: revocation status unknown"); } if ((status & Constants.CAPICOM_TRUST_INVALID_EXTENSION) == Constants.CAPICOM_TRUST_INVALID_EXTENSION) { Console.WriteLine("Chain status: invalid extension"); } if ((status & Constants.CAPICOM_TRUST_INVALID_POLICY_CONSTRAINTS) == Constants.CAPICOM_TRUST_INVALID_POLICY_CONSTRAINTS) { Console.WriteLine("Chain status: invalid policy constraints"); } if ((status & Constants.CAPICOM_TRUST_INVALID_BASIC_CONSTRAINTS) == Constants.CAPICOM_TRUST_INVALID_BASIC_CONSTRAINTS) { Console.WriteLine("Chain status: invalid basic constraints"); } if ((status & Constants.CAPICOM_TRUST_INVALID_NAME_CONSTRAINTS) == Constants.CAPICOM_TRUST_INVALID_NAME_CONSTRAINTS) { Console.WriteLine("Chain status: invalid name constraints"); } if ((status & Constants.CAPICOM_TRUST_IS_OFFLINE_REVOCATION) == Constants.CAPICOM_TRUST_IS_OFFLINE_REVOCATION) { Console.WriteLine("Chain status: offline revocation"); } if ((status & Constants.CAPICOM_TRUST_IS_PARTIAL_CHAIN) == Constants.CAPICOM_TRUST_IS_PARTIAL_CHAIN) { Console.WriteLine("Chain status: partial chain"); } Console.WriteLine(); }
public static void displayChain(uint pChainContext) { Certificate cert; IChainContext iChain; CAPICOM.Chain oChain; IEnumerator eEnum; int i = 0; //API bridging oChain = new ChainClass(); iChain = (IChainContext)oChain; iChain.ChainContext = (int)pChainContext; //get the number of certificates in chain eEnum = oChain.Certificates.GetEnumerator(); Console.WriteLine(); Console.WriteLine("Chain: "); //display properties of each certificate in the chain while (eEnum.MoveNext() == true) { i++; cert = (Certificate) eEnum.Current; Console.WriteLine("Certificate: " + i); Console.WriteLine("Subject: " + cert.SubjectName); Console.WriteLine("Issuer: " + cert.IssuerName); Console.WriteLine("Hash: " + cert.Thumbprint); Console.WriteLine("Valid From: " + cert.ValidFromDate); Console.WriteLine("Valid To: " + cert.ValidToDate); Console.WriteLine(); } }