Tcl
Tcl
Sign a File to Create a .p7s (Detached Signature)
See more Encryption Examples
_LANGUAGE_ example to create a detached signature file (.p7s) for any type file. The signature can be verified by calling VerifyP7S and passing the original filename and the .p7s filename.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 .p7s as output:
set inFile "/Users/chilkat/testData/pdf/sample.pdf"
set sigFile "/Users/chilkat/testData/p7s/sample.p7s"
set success [CkCrypt2_CreateP7S $crypt $inFile $sigFile]
if {$success == 0} then {
puts [CkCrypt2_lastErrorText $crypt]
delete_CkCrypt2 $crypt
delete_CkCertStore $certStore
delete_CkJsonObject $jsonCN
delete_CkCert $cert
exit
}
set success [CkCrypt2_VerifyP7S $crypt $inFile $sigFile]
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