Visual Basic 6.0
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
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