v9.5.0.38 Micro Update: TrustedRoots Object/Class Added, and other various fixes

This new version includes the following updates/fixes:

  • Added the TrustedRoots class to allow for programss to globally specify a specific set of trusted root CA certificates for PKCS7 certificate signature verification and for SSL/TLS server certificate trust.
  • Added the RequireSslCertVerify property to Http, IMAP, Socket, and MHT.
  • Added the CrcFile and CrcBytes methods to the Crypt2 API.
  • Added a new DnsCacheClear method to Http and Socket. This method clears the Chilkat-wide (in-memory) DNS cache.
  • Fixed a minor issue with writing AES encrypted Zips — the CRC written to the local file header and central directory record within the zip format was the correct CRC, but it is preferred to write a 0. This caused no actual problem, but it now conforms to what is preferred for AES encrypted zip archives.
  • Fixed a problem with the HTTP SyncrhonousRequest method where the request body of the HttpRequest object was being sent when the HttpRequest.HttpVerb equals GET or HEAD. Normally, one would not set the HttpRequest body, but this was discovered when an HttpRequest object instance was re-used after a previous POST request.

Getting the Root CA Certificate SHA1 Thumbprint

Question:

(In VB6) One thing we would like to do is to read out the SHA1
fingerprint of the root ca. For example, the programm should read the user
certificate. The user certificate has a certification path. Is it possible
to read out the fingerprint of the top-level root certificate?

Answer:

Here is a sample program. The user certificate is loaded from the current-user registry-based certificate store by common name. Once you have the cert object, you can build the chain of authority and step through it. The root cert is the last in the list.

    Dim cert As New ChilkatCert

    success = cert.LoadByCommonName("Chilkat Software, Inc.")

    Dim certChain As New ChilkatCertChain

    ' Leave the certCollection object empty..
    Dim certCollection As New ChilkatCertColl

    success = certChain.BuildChain(cert, certCollection)

    NumCerts = certChain.NumCerts
    Dim certN As ChilkatCert
    For i = 0 To NumCerts - 1
        Set certN = certChain.GetCert(i)
        MsgBox certN.SubjectDN
    Next

    ' The certificate at index NumCerts - 1 is the root.
    ' get the fingerprint:
    MsgBox "Root Thumbprint: " & certChain.GetCert(NumCerts - 1).Sha1Thumbprint