Sample code for 30+ languages & platforms
Classic ASP

Verify a .p7m and get Algorithm Information

See more Digital Signatures Examples

Demonstrates how to verify a .p7m and then examine the algorithms used by the signature.

Chilkat Classic ASP Downloads

Classic ASP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
success = 0

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

set crypt = Server.CreateObject("Chilkat.Crypt2")

inFile = "qa_data/p7m/brainpoolP256r1.p7m"
outFile = "qa_output/something.dat"

' Verify and extract the signed data.
success = crypt.VerifyP7M(inFile,outFile)
If (success = 0) Then
    Response.Write "<pre>" & Server.HTMLEncode( crypt.LastErrorText) & "</pre>"
    Response.End
End If

' Examine details about the signature(s)
set json = Server.CreateObject("Chilkat.JsonObject")
crypt.GetLastJsonData json
json.EmitCompact = 0
Response.Write "<pre>" & Server.HTMLEncode( json.Emit()) & "</pre>"

' Sample output

' {
'   "pkcs7": {
'     "verify": {
'       "digestAlgorithms": [
'         "sha256"
'       ],
'       "signerInfo": [
'         {
'           "cert": {
'             "serialNumber": "FFFFE552B302FFFFFF1E34C3ACEB2FFFF",
'             "issuerCN": "The common name of the cert...",
'             "issuerDN": "",
'             "digestAlgOid": "2.16.840.1.101.3.4.2.1",
'             "digestAlgName": "SHA256"
'           },
'           "contentType": "1.2.840.113549.1.7.1",
'           "signingTime": "190409140500Z",
'           "messageDigest": "lQe9If7vZKFf/NlSYu5Esmlw3phVK/RFsbbb1uH73t8=",
'           "signingAlgOid": "1.2.840.10045.4.3.2",
'           "signerDigest": "lQe9If7vZKFf/NlSYu5Esmlw3phVK/RFsbbb1uH73t8=",
'           "authAttr": [
'             {
'               "oid": "1.2.840.113549.1.9.3",
'               "oidName": "contentType"
'             },
'             {
'               "oid": "1.2.840.113549.1.9.5",
'               "oidName": "signingTime"
'             },
'             {
'               "oid": "1.2.840.113549.1.9.52",
'               "oidName": "1.2.840.113549.1.9.52",
'               "der": "MBs ... AwI="
'             },
'             {
'               "oid": "1.2.840.113549.1.9.4",
'               "oidName": "messageDigest"
'             },
'             {
'               "oid": "1.2.840.113549.1.9.16.2.47",
'               "oidName": "signingCertificateV2",
'               "der": "MCYw .. 7PlQ=="
'             },
'             {
'               "oid": "1.2.840.113549.1.9.20",
'               "oidName": "1.2.840.113549.1.9.20"
'             }
'           ]
'         }
'       ]
'     }
'   }
' }

' Code for parsing the above JSON...

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
    certSerialNumber = json.StringOf("pkcs7.verify.signerInfo[i].cert.serialNumber")
    certIssuerCN = json.StringOf("pkcs7.verify.signerInfo[i].cert.issuerCN")
    certIssuerDN = json.StringOf("pkcs7.verify.signerInfo[i].cert.issuerDN")
    certDigestAlgOid = json.StringOf("pkcs7.verify.signerInfo[i].cert.digestAlgOid")
    certDigestAlgName = json.StringOf("pkcs7.verify.signerInfo[i].cert.digestAlgName")
    contentType = json.StringOf("pkcs7.verify.signerInfo[i].contentType")
    signingTime = json.StringOf("pkcs7.verify.signerInfo[i].signingTime")
    messageDigest = json.StringOf("pkcs7.verify.signerInfo[i].messageDigest")
    signingAlgOid = json.StringOf("pkcs7.verify.signerInfo[i].signingAlgOid")
    signerDigest = json.StringOf("pkcs7.verify.signerInfo[i].signerDigest")
    j = 0
    count_j = json.SizeOfArray("pkcs7.verify.signerInfo[i].authAttr")
    Do While j < count_j
        json.J = j
        oid = json.StringOf("pkcs7.verify.signerInfo[i].authAttr[j].oid")
        oidName = json.StringOf("pkcs7.verify.signerInfo[i].authAttr[j].oidName")
        der = json.StringOf("pkcs7.verify.signerInfo[i].authAttr[j].der")
        j = j + 1
    Loop
    i = i + 1
Loop

Response.Write "<pre>" & Server.HTMLEncode( "Success!") & "</pre>"

%>
</body>
</html>