Sample code for 30+ languages & platforms
VB.NET

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 VB.NET Downloads

VB.NET
Dim success As Boolean = False

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

Dim crypt As New Chilkat.Crypt2

Dim outputFile As String = "qa_output/original.xml"
Dim inFile As String = "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 = False) Then
    Debug.WriteLine(crypt.LastErrorText)
    Exit Sub
End If


Debug.WriteLine("Signature validated.")

' Now let's examine the information about the signature.
Dim json As New Chilkat.JsonObject
crypt.GetLastJsonData(json)

json.EmitCompact = False
Debug.WriteLine(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 Chilkat.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 Integer = 0
Dim count_i As Integer = json.SizeOfArray("pkcs7.verify.certs")
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
End While
i = 0
count_i = json.SizeOfArray("pkcs7.verify.digestAlgorithms")
While i < count_i
    json.I = i
    strVal = json.StringOf("pkcs7.verify.digestAlgorithms[i]")
    i = i + 1
End While
i = 0
count_i = json.SizeOfArray("pkcs7.verify.signerInfo")
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")
    json.DtOf("pkcs7.verify.signerInfo[i].authAttr.""1.2.840.113549.1.9.5"".utctime",False,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
End While