Sample code for 30+ languages & platforms
Visual Basic 6.0

Verify a CAdES-BES Signature and Examine Signature Contents

See more Digital Signatures Examples

Demonstrates how to validate a .p7m (.p7s) signature and examine the contents of the signature.

Chilkat Visual Basic 6.0 Downloads

Visual Basic 6.0
Dim success As Long
success = 0

' This example requires the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.

Dim crypt As New ChilkatCrypt2

Dim outputFile As String
outputFile = "qa_output/original.xml"
Dim inFile As String
inFile = "qa_data/p7m/fattura_signature.xml.p7m"

' Verify the signature and extract the contained file, which in this case is XML.
success = crypt.VerifyP7M(inFile,outputFile)
If (success = 0) Then
    Debug.Print crypt.LastErrorText
    Exit Sub
End If

Debug.Print "Signature validated."

' Now let's examine the information about the signature.
Dim json As New ChilkatJsonObject
crypt.GetLastJsonData json

json.EmitCompact = 0
Debug.Print json.Emit()

' Here's an example of the information about the signature:
' {
'   "pkcs7": {
'     "verify": {
'       "certs": [
'         {
'           "issuerCN": "Xyz EU Qualified Certificates CA G1",
'           "serial": "99A28A51AC389999"
'         }
'       ],
'       "useConstructedOctets": true,
'       "digestAlgorithms": [
'         "sha256"
'       ],
'       "signerInfo": [
'         {
'           "cert": {
'             "subjectKeyIdentifier": "5VM4x8AWnXf07yzbXuLtbb0U3yY=",
'             "digestAlgOid": "2.16.840.1.101.3.4.2.1",
'             "digestAlgName": "SHA256"
'           },
'           "signingAlgOid": "1.2.840.113549.1.1.11",
'           "signingAlgName": "RSA-SHA256-PKCSV-1_5",
'           "authAttr": {
'             "1.2.840.113549.1.9.3": {
'               "name": "contentType",
'               "oid": "1.2.840.113549.1.7.1"
'             },
'             "1.2.840.113549.1.9.5": {
'               "name": "signingTime",
'               "utctime": "190901152340Z"
'             },
'             "1.2.840.113549.1.9.4": {
'               "name": "messageDigest",
'               "digest": "y+gd/zAQK33A//HInhaZba7w1fUJleV9AHbP1Ntx6U0="
'             },
'             "1.2.840.113549.1.9.16.2.47": {
'               "name": "signingCertificateV2",
'               "der": "MIH4MI..w4vv0="
'             }
'           }
'         }
'       ]
'     }
'   }
' }

' Use this online tool to generate parsing code from sample JSON: 
' Generate Parsing Code from JSON

Dim authAttrSigningTimeUtctime As New DtObj
Dim issuerCN As String
Dim serial As String
Dim strVal As String
Dim certSubjectKeyIdentifier As String
Dim certDigestAlgOid As String
Dim certDigestAlgName As String
Dim signingAlgOid As String
Dim signingAlgName As String
Dim authAttrContentTypeName As String
Dim authAttrContentTypeOid As String
Dim authAttrSigningTimeName As String
Dim authAttrMessageDigestName As String
Dim authAttrMessageDigestDigest As String
Dim authAttrSigningCertificateV2Name As String
Dim authAttrSigningCertificateV2Der As String

Dim i As Long
i = 0
Dim count_i As Long
count_i = json.SizeOfArray("pkcs7.verify.certs")
Do While i < count_i
    json.I = i
    issuerCN = json.StringOf("pkcs7.verify.certs[i].issuerCN")
    serial = json.StringOf("pkcs7.verify.certs[i].serial")
    i = i + 1
Loop
i = 0
count_i = json.SizeOfArray("pkcs7.verify.digestAlgorithms")
Do While i < count_i
    json.I = i
    strVal = json.StringOf("pkcs7.verify.digestAlgorithms[i]")
    i = i + 1
Loop
i = 0
count_i = json.SizeOfArray("pkcs7.verify.signerInfo")
Do While i < count_i
    json.I = i
    certSubjectKeyIdentifier = json.StringOf("pkcs7.verify.signerInfo[i].cert.subjectKeyIdentifier")
    certDigestAlgOid = json.StringOf("pkcs7.verify.signerInfo[i].cert.digestAlgOid")
    certDigestAlgName = json.StringOf("pkcs7.verify.signerInfo[i].cert.digestAlgName")
    signingAlgOid = json.StringOf("pkcs7.verify.signerInfo[i].signingAlgOid")
    signingAlgName = json.StringOf("pkcs7.verify.signerInfo[i].signingAlgName")
    authAttrContentTypeName = json.StringOf("pkcs7.verify.signerInfo[i].authAttr.""1.2.840.113549.1.9.3"".name")
    authAttrContentTypeOid = json.StringOf("pkcs7.verify.signerInfo[i].authAttr.""1.2.840.113549.1.9.3"".oid")
    authAttrSigningTimeName = json.StringOf("pkcs7.verify.signerInfo[i].authAttr.""1.2.840.113549.1.9.5"".name")
    success = json.DtOf("pkcs7.verify.signerInfo[i].authAttr.""1.2.840.113549.1.9.5"".utctime",0,authAttrSigningTimeUtctime)
    authAttrMessageDigestName = json.StringOf("pkcs7.verify.signerInfo[i].authAttr.""1.2.840.113549.1.9.4"".name")
    authAttrMessageDigestDigest = json.StringOf("pkcs7.verify.signerInfo[i].authAttr.""1.2.840.113549.1.9.4"".digest")
    authAttrSigningCertificateV2Name = json.StringOf("pkcs7.verify.signerInfo[i].authAttr.""1.2.840.113549.1.9.16.2.47"".name")
    authAttrSigningCertificateV2Der = json.StringOf("pkcs7.verify.signerInfo[i].authAttr.""1.2.840.113549.1.9.16.2.47"".der")
    i = i + 1
Loop