AutoIt
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
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)