![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Tcl) Sign PDF using ARSS (Aruba Remote Signing Service)See more Signing in the Cloud Examples
Demonstrates how to digitally sign a PDF using the Aruba Remote Signing Service (ARSS).
The example loads a local PDF and certificate, configures the ARSS cloud signer credentials,
specifies the OTP authentication type with Note: This example requires Chilkat v11.5.0 or greater.
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 pdf [new_CkPdf] # Load the PDF that will be digitally signed. set success [CkPdf_LoadFile $pdf "qa_data/pdf/hello.pdf"] if {$success == 0} then { puts [CkPdf_lastErrorText $pdf] delete_CkPdf $pdf exit } # Signing options are specified in a JSON object. set json [new_CkJsonObject] # Enable LTV (Long-Term Validation). # When ltvOcsp is true, OCSP validation information is embedded in the PDF # so that signature validation can continue to succeed in the future, # even if the original OCSP responder is no longer available. CkJsonObject_UpdateBool $json "ltvOcsp" 1 # Specify the visual appearance of the signature on the PDF page. CkJsonObject_UpdateInt $json "page" 1 CkJsonObject_UpdateString $json "appearance.y" "top" CkJsonObject_UpdateString $json "appearance.x" "left" CkJsonObject_UpdateString $json "appearance.fontScale" "10.0" # Text lines displayed in the visible signature appearance. # Special values such as "cert_cn" and "current_dt" are replaced # with the certificate common name and current date/time. CkJsonObject_UpdateString $json "appearance.text[0]" "Digitally signed by: cert_cn" CkJsonObject_UpdateString $json "appearance.text[1]" "current_dt" CkJsonObject_UpdateString $json "appearance.text[2]" "This is an LTV-enabled signature." # Load the signing certificate. # # The private key is NOT stored locally. Instead, the private key is # stored and protected on the Aruba Remote Signing Service (ARSS). # # Even though the signing operation will occur remotely, Chilkat still # needs the corresponding public certificate locally so that it can # construct the CMS/PAdES signature and embed the certificate chain # in the signed PDF. set cert [new_CkCert] set success [CkCert_LoadFromFile $cert "qa_data/certs/myCert.cer"] if {$success == 0} then { puts [CkCert_lastErrorText $cert] delete_CkPdf $pdf delete_CkJsonObject $json delete_CkCert $cert exit } # Configure Aruba Remote Signing Service (ARSS) credentials. # # When SetCloudSigner is called, Chilkat is instructed to perform # cryptographic signing operations through the ARSS web service. # The PDF is assembled locally, but the actual RSA signature operation # is performed remotely using the private key held by Aruba. set jsonArss [new_CkJsonObject] # Required. Indicates that the cloud signing provider is ARSS. CkJsonObject_UpdateString $jsonArss "service" "ARSS" # The ARSS certificate identifier (for example, "AS0"). # This identifies which remote certificate/private key pair should be used. # The remote certificate should correspond to the certificate loaded above. CkJsonObject_UpdateString $jsonArss "certID" "YOUR_ARSS_CERT_ID" # OTP password associated with the Aruba remote-signing account. # Depending on the ARSS configuration, an OTP may be required to # authorize each signing operation. CkJsonObject_UpdateString $jsonArss "otpPwd" "YOUR_OTP_PWD" # Specifies the OTP authentication environment. # # Common values are: # "demoprod" - Demo/Test environment # "prod" - Production environment # # This value is sent to the ARSS service and determines how the OTP # authentication is validated. The correct value depends on the type # of Aruba account and environment that has been provisioned. # # If signing fails with an authentication-related error, verify that # the typeOtpAuth value matches the environment associated with the # ARSS account credentials being used. CkJsonObject_UpdateString $jsonArss "typeOtpAuth" "demoprod" # ARSS account username. CkJsonObject_UpdateString $jsonArss "user" "YOUR_ARSS_USERNAME" # ARSS account password. CkJsonObject_UpdateString $jsonArss "userPWD" "YOUR_ARSS_PASSWORD" # Beginning with Chilkat v11.5.0, the ARSS endpoint can be explicitly # specified. This allows the application to target a particular # Aruba signing service endpoint when required. CkJsonObject_UpdateString $jsonArss "endpoint" "https://app1.firma-remota.it/ArubaSignerService/webresources/signerservice" set success [CkCert_SetCloudSigner $cert $jsonArss] if {$success == 0} then { puts [CkCert_lastErrorText $cert] delete_CkPdf $pdf delete_CkJsonObject $json delete_CkCert $cert delete_CkJsonObject $jsonArss exit } # Associate the certificate with the PDF object. # All subsequent signing operations will use this certificate. set success [CkPdf_SetSigningCert $pdf $cert] if {$success == 0} then { puts [CkPdf_lastErrorText $pdf] delete_CkPdf $pdf delete_CkJsonObject $json delete_CkCert $cert delete_CkJsonObject $jsonArss exit } # Create the signed PDF. # # Chilkat performs all PDF processing locally. When the time comes # to generate the cryptographic signature value, Chilkat sends the # hash to ARSS, which signs it using the remote private key and returns # the signature. The private key never leaves the Aruba service. set success [CkPdf_SignPdf $pdf $json "qa_output/hello_ltv_signed.pdf"] if {$success == 0} then { puts [CkPdf_lastErrorText $pdf] delete_CkPdf $pdf delete_CkJsonObject $json delete_CkCert $cert delete_CkJsonObject $jsonArss exit } puts "The PDF has been successfully cryptographically signed with long-term validation." delete_CkPdf $pdf delete_CkJsonObject $json delete_CkCert $cert delete_CkJsonObject $jsonArss |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.