Tcl
Tcl
Sign a File to Create a .p7m File (using a PFX)
See more Encryption Examples
_LANGUAGE_ example to sign a file creating a .p7m file as output. The .p7m contains the signed contents of the original file. It can be verified and restored by calling VerifyP7M.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
set crypt [new_CkCrypt2]
# Use a digital certificate and private key from a PFX file (.pfx or .p12).
set signingCertSubject "Acme Inc"
set pfxFilename "/Users/chilkat/testData/pfx/acme.pfx"
set pfxPassword "test123"
set certStore [new_CkCertStore]
set success [CkCertStore_LoadPfxFile $certStore $pfxFilename $pfxPassword]
if {$success != 1} then {
puts [CkCertStore_lastErrorText $certStore]
delete_CkCrypt2 $crypt
delete_CkCertStore $certStore
exit
}
set jsonCN [new_CkJsonObject]
CkJsonObject_UpdateString $jsonCN "CN" $signingCertSubject
set cert [new_CkCert]
set success [CkCertStore_FindCert $certStore $jsonCN $cert]
if {$success == 0} then {
puts "Failed to find certificate by subject common name."
delete_CkCrypt2 $crypt
delete_CkCertStore $certStore
delete_CkJsonObject $jsonCN
delete_CkCert $cert
exit
}
# Tell the crypt component to use this cert.
set success [CkCrypt2_SetSigningCert $crypt $cert]
# We can sign any type of file, creating a .p7m as output:
set inFile "/Users/chilkat/testData/pdf/sample.pdf"
set outputFile "/Users/chilkat/testData/p7m/sample.pdf.p7m"
set success [CkCrypt2_CreateP7M $crypt $inFile $outputFile]
if {$success == 0} then {
puts [CkCrypt2_lastErrorText $crypt]
delete_CkCrypt2 $crypt
delete_CkCertStore $certStore
delete_CkJsonObject $jsonCN
delete_CkCert $cert
exit
}
# Verify and restore the original file:
set success [CkCrypt2_SetVerifyCert $crypt $cert]
set inFile $outputFile
set outputFile "/Users/chilkat/testData/pdf/restored.pdf"
set success [CkCrypt2_VerifyP7M $crypt $inFile $outputFile]
if {$success == 0} then {
puts [CkCrypt2_lastErrorText $crypt]
delete_CkCrypt2 $crypt
delete_CkCertStore $certStore
delete_CkJsonObject $jsonCN
delete_CkCert $cert
exit
}
puts "Success!"
delete_CkCrypt2 $crypt
delete_CkCertStore $certStore
delete_CkJsonObject $jsonCN
delete_CkCert $cert