documenso/packages/signing/transports/local.ts
Lucas Smith 9035240b4d
refactor: replace pdf-sign with libpdf/core for PDF operations (#2403)
Migrate from @documenso/pdf-sign and @cantoo/pdf-lib to @libpdf/core
for all PDF manipulation and signing operations. This includes:

- New signing transports for Google Cloud KMS and local certificates
- Consolidated PDF operations using libpdf API
- Added TSA (timestamp authority) helper for digital signatures
- Removed deprecated flatten and insert utilities
- Updated tests to use new PDF library
2026-01-21 15:16:23 +11:00

32 lines
814 B
TypeScript

import { P12Signer } from '@libpdf/core';
import * as fs from 'node:fs';
import { env } from '@documenso/lib/utils/env';
const loadP12 = (): Uint8Array => {
const localFileContents = env('NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS');
if (localFileContents) {
return Buffer.from(localFileContents, 'base64');
}
const localFilePath = env('NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH');
if (localFilePath) {
return fs.readFileSync(localFilePath);
}
if (env('NODE_ENV') !== 'production') {
return fs.readFileSync('./example/cert.p12');
}
throw new Error('No certificate found for local signing');
};
export const createLocalSigner = async () => {
const p12 = loadP12();
return await P12Signer.create(p12, env('NEXT_PRIVATE_SIGNING_PASSPHRASE') || '', {
buildChain: true,
});
};