Those X.509 functions which require you to pass the filename of an X.509 certificate
will accept a base64 string representation of the certificate instead.
This is the base64 string that can be obtained using the
X509_ReadStringFromFile
function.
The first character in such a string should always be an "M".
You can also pass a string containing the certificate in PEM format. See PEM string alternative below for more details.
The example below shows how each of the filename, the base64 string, or the PEM-format string can be used in a typical X.509 function.
Dim nRet As Long Dim strCertFileOrB64String As String Dim strHexHash As String ' Compute the SHA-1 `thumbprint' of an X.509 certificate in two forms strHexHash = String(PKI_SHA1_CHARS, " ") ' Refer to file itself... strCertFileOrB64String = "smallca.cer" nRet = X509_CertThumb(strCertFileOrB64String, strHexHash, Len(strHexHash), 0) Debug.Print "X509_CertThumb returns " & nRet & " for '" & strCertFileOrB64String & "'" Debug.Print "SHA-1 thumbprint=" & strHexHash ' Use base64 string representation directly... strCertFileOrB64String = _ "MIHgMIGaAgEBMA0GCSqGSIb3DQEBBQUAMAwxCjAIBgNVBAMTAUEwHhcNMDcwODAyMDIwMDAxWhc" _ & "NMTEwODAyMDIwMDAxWjAMMQowCAYDVQQDEwFBMEowDQYJKoZIhvcNAQEBBQADOQAwNgIxA1KS" _ & "JlPSmQAqQgDHUISaUsCrHbIZe249i6jFtfN3rA7czrP4CXS3mjvMFf0AsxV6BwIBAzANBgkqh" _ & "kiG9w0BAQUFAAMyAACeT7GtgmBRKUN20cIyNEGneEvmNxaliuBEVkg2npbyEBgeHXOH6jqj9Ase348UN/Q=" nRet = X509_CertThumb(strCertFileOrB64String, strHexHash, Len(strHexHash), 0) Debug.Print "X509_CertThumb returns " & nRet & " for '" & strCertFileOrB64String & "'" Debug.Print "SHA-1 thumbprint=" & strHexHash ' Again using a PEM-style string... strCertFileOrB64String = _ "-----BEGIN CERTIFICATE-----" & vbCrLf _ & "MIHgMIGaAgEBMA0GCSqGSIb3DQEBBQUAMAwxCjAIBgNVBAMTAUEwHhcNMDcwODAyMDIwMDAxWhc" & vbCrLf _ & "NMTEwODAyMDIwMDAxWjAMMQowCAYDVQQDEwFBMEowDQYJKoZIhvcNAQEBBQADOQAwNgIxA1KS" & vbCrLf _ & "JlPSmQAqQgDHUISaUsCrHbIZe249i6jFtfN3rA7czrP4CXS3mjvMFf0AsxV6BwIBAzANBgkqh" & vbCrLf _ & "kiG9w0BAQUFAAMyAACeT7GtgmBRKUN20cIyNEGneEvmNxaliuBEVkg2npbyEBgeHXOH6jqj9Ase348UN/Q=" & vbCrLf _ & "-----END CERTIFICATE-----" nRet = X509_CertThumb(strCertFileOrB64String, strHexHash, Len(strHexHash), 0) Debug.Print "X509_CertThumb returns " & nRet & " for '" & strCertFileOrB64String & "'" Debug.Print "SHA-1 thumbprint=" & strHexHash
[As of v3.5, the vbCrLf
CRLF characters are no longer required in the PEM-style string]
X509_CertThumb returns 40 for 'smallca.cer' SHA-1 thumbprint=a36b1bfa0af41a2785066b2d5135b67011ac3b7f X509_CertThumb returns 40 for 'MIHgMIGaAgEBMA0GCSq...(snip)...HXOH6jqj9Ase348UN/Q=' SHA-1 thumbprint=a36b1bfa0af41a2785066b2d5135b67011ac3b7f X509_CertThumb returns 40 for '-----BEGIN CERTIFICATE----- MIHgMIGaAgEBMA...(snip)...BgeHXOH6jqj9Ase348UN/Q= -----END CERTIFICATE-----' SHA-1 thumbprint=a36b1bfa0af41a2785066b2d5135b67011ac3b7f