Enabling LTV Using Second Revision
This guide showcases how to digitally sign a PDF file using a PKCS12 (.p12/.pfx) file and LTV enable the signature by adding a second revision to the document, containing the validation data.
Before you begin
You should get your API key from your UniCloud account.
If this is your first time using UniPDF SDK, follow this guide to set up a local development environment.
Project setup
Clone the project repository
In your terminal, clone examples repository using the following command: It contains the Go code we will be using for this guide.
git clone https://github.com/unidoc/unipdf-examples.git
Then navigate to the signatures folder in the unipdf-examples directory.
cd unipdf-examples/signatures
Configure environment variables
Configure your license key using the following command: Replace the UNIDOC_LICENSE_API_KEY with your API credentials from your UniCloud account.
Linux/Mac
export UNIDOC_LICENSE_API_KEY=PUT_YOUR_API_KEY_HERE
Windows
set UNIDOC_LICENSE_API_KEY=PUT_YOUR_API_KEY_HERE
How it works
The import section imports the necessary packages and other Go libraries.
The init function authenticates your request by setting metered license key from your system environment.
The main function defined in lines 43-101, signs the input file using private key and certificate. The signing key pair is loaded and decoded from PKCS12 file provided in the command line arguments in lines 55-86. At line 89, the document is signed using signedBytes, err := signFile(inputPath, priv.(*rsa.PrivateKey), cert). The LTV is enabled, and the document is written to file using ltvEnable(bytes.NewReader(signedBytes), outputPath, certChain) at file 95.
The signFile function in lines 103-165, signs the file. It creates a signature handler, a PdfSignature object and then PdfFieldSignature in lines 129-136 and 139-152 respectively. Finally, it signs the document using appender.Sign(1, field) at line 154. The field argument here is a PdfFieldSignature type.
The ltvEnable function is used to LTV enable the certificate chain using ltv.EnableAll(certChain) at line 186. The document is then written to file using appender.WriteToFile(outputPath) at line 191.
Run the code
Use the following commands to run the code:
go run pdf_sign_ltv_extra_revision.go <FILE.p12> <P12_PASS> <INPUT_PDF_PATH> <OUTPUT_PDF_PATH> [<EXTRA_CERTS.pem>]