Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual Basic 6.0) Verify a CAdES-BES Signature and Examine Signature ContentsDemonstrates how to validate a .p7m (.p7s) signature and examine the contents of the signature.
' 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. Dim success As Long 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 ChilkatJsonObject Set json = crypt.LastJsonData() If (crypt.LastMethodSuccess = 0) Then ' This should never be the case... Debug.Print "No information available." Exit Sub End If 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 |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.