Sample code for 30+ languages & platforms
AutoIt

Sign JSON (or any Text) to Create a Detached PKCS7 Signature

Demonstrates how to sign JSON or any string using a certificate + private key from a .p12/.pfx to create a detached PKCS7 signature. (A detached signature is one that does not embed the original signed data.)

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

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

$oCrypt = ObjCreate("Chilkat.Crypt2")

$oCert = ObjCreate("Chilkat.Cert")
$bSuccess = $oCert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
If ($bSuccess <> True) Then
    ConsoleWrite($oCert.LastErrorText & @CRLF)
    Exit
EndIf

;  Tell the crypt component to use this cert.
$bSuccess = $oCrypt.SetSigningCert($oCert)
If ($bSuccess <> True) Then
    ConsoleWrite($oCrypt.LastErrorText & @CRLF)
    Exit
EndIf

$oCrypt.HashAlgorithm = "sha256"

;  By default, all the certs in the chain of authentication are included in the signature.
;  If desired, we can choose to only include the signing certificate:
$oCrypt.IncludeCertChain = False

;  Create the detached signature, which does NOT contain the original data.
;  To create a PKCS7 signature that contains the original data, see CAdES Sign JSON
$oCrypt.Charset = "utf-8"
Local $oDetachedSig
Local $stringToSign = "{ ""abc"": 123}"
$oDetachedSig = $oCrypt.SignString($stringToSign)
If ($oCrypt.LastMethodSuccess = False) Then
    ConsoleWrite($oCrypt.LastErrorText & @CRLF)
    Exit
EndIf

;  Verify the signature against the original data.
Local $bVerified = $oCrypt.VerifyString($stringToSign,$oDetachedSig)
If ($bVerified = False) Then
    ConsoleWrite($oCrypt.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("Success!" & @CRLF)