Sample code for 30+ languages & platforms
Tcl

Example: Crypt2.GetSignedAttributes method

Demonstrates how to call the GetSignedAttributes method.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set crypt [new_CkCrypt2]

set bdPkcs7 [new_CkBinData]

set success [CkBinData_LoadFile $bdPkcs7 "qa_data/cades/CAdES-T/Signature-C-T-1.p7m"]
if {$success == 0} then {
    puts [CkBinData_lastErrorText $bdPkcs7]
    delete_CkCrypt2 $crypt
    delete_CkBinData $bdPkcs7
    exit
}

set json [new_CkJsonObject]

CkJsonObject_put_EmitCompact $json 0

set sbJson [new_CkStringBuilder]

set i 0
set tryNext 1
while {$tryNext} {
    if {[CkCrypt2_GetSignedAttributes $crypt $i $bdPkcs7 $sbJson] == 1} then {
        CkJsonObject_LoadSb $json $sbJson
        puts "$i: "
        puts [CkJsonObject_emit $json]
    }     else {
        set tryNext 0
    }

    set i [expr $i + 1]
}

# Sample output:

# 0: 
# {
#   "signedAttributes": [
#     {
#       "oid": "1.2.840.113549.1.9.3",
#       "name": "Content Type"
#     },
#     {
#       "oid": "1.2.840.113549.1.9.5",
#       "name": "Signing Time"
#     },
#     {
#       "oid": "1.2.840.113549.1.9.4",
#       "name": "Message Digest"
#     },
#     {
#       "oid": "1.2.840.113549.1.9.16.2.47",
#       "name": "Signing Certificate V2"
#     }
#   ]
# }

delete_CkCrypt2 $crypt
delete_CkBinData $bdPkcs7
delete_CkJsonObject $json
delete_CkStringBuilder $sbJson