pdf-lite 1.0.1-alpha.2 → 1.0.1-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/decoder.d.ts +39 -0
- package/dist/core/decoder.js +367 -0
- package/dist/core/generators.d.ts +37 -0
- package/{packages/pdf-lite/src/core/generators.ts → dist/core/generators.js} +36 -67
- package/dist/core/incremental-parser.d.ts +103 -0
- package/{packages/pdf-lite/src/core/incremental-parser.ts → dist/core/incremental-parser.js} +63 -100
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +2 -0
- package/dist/core/objects/pdf-array.d.ts +12 -0
- package/dist/core/objects/pdf-array.js +42 -0
- package/dist/core/objects/pdf-boolean.d.ts +8 -0
- package/dist/core/objects/pdf-boolean.js +15 -0
- package/dist/core/objects/pdf-comment.d.ts +18 -0
- package/dist/core/objects/pdf-comment.js +39 -0
- package/dist/core/objects/pdf-date.d.ts +5 -0
- package/dist/core/objects/pdf-date.js +40 -0
- package/dist/core/objects/pdf-dictionary.d.ts +22 -0
- package/dist/core/objects/pdf-dictionary.js +136 -0
- package/dist/core/objects/pdf-hexadecimal.d.ts +17 -0
- package/dist/core/objects/pdf-hexadecimal.js +42 -0
- package/dist/core/objects/pdf-indirect-object.d.ts +27 -0
- package/dist/core/objects/pdf-indirect-object.js +100 -0
- package/dist/core/objects/pdf-name.d.ts +8 -0
- package/dist/core/objects/pdf-name.js +15 -0
- package/dist/core/objects/pdf-null.d.ts +7 -0
- package/dist/core/objects/pdf-null.js +11 -0
- package/dist/core/objects/pdf-number.d.ts +25 -0
- package/dist/core/objects/pdf-number.js +77 -0
- package/dist/core/objects/pdf-object-reference.d.ts +9 -0
- package/dist/core/objects/pdf-object-reference.js +19 -0
- package/dist/core/objects/pdf-object.d.ts +30 -0
- package/dist/core/objects/pdf-object.js +77 -0
- package/dist/core/objects/pdf-start-xref.d.ts +10 -0
- package/dist/core/objects/pdf-start-xref.js +32 -0
- package/dist/core/objects/pdf-stream.d.ts +100 -0
- package/dist/core/objects/pdf-stream.js +521 -0
- package/dist/core/objects/pdf-string.d.ts +15 -0
- package/dist/core/objects/pdf-string.js +30 -0
- package/dist/core/objects/pdf-trailer.d.ts +26 -0
- package/dist/core/objects/pdf-trailer.js +33 -0
- package/dist/core/objects/pdf-xref-table.d.ts +48 -0
- package/dist/core/objects/pdf-xref-table.js +183 -0
- package/{packages/pdf-lite/src/core/parser.ts → dist/core/parser.d.ts} +3 -4
- package/dist/core/parser.js +9 -0
- package/dist/core/ref.d.ts +59 -0
- package/{packages/pdf-lite/src/core/ref.ts → dist/core/ref.js} +23 -41
- package/dist/core/serializer.d.ts +36 -0
- package/{packages/pdf-lite/src/core/serializer.ts → dist/core/serializer.js} +20 -30
- package/dist/core/streams/object-stream.d.ts +6 -0
- package/dist/core/streams/object-stream.js +15 -0
- package/dist/core/tokeniser.d.ts +98 -0
- package/dist/core/tokeniser.js +552 -0
- package/dist/core/tokens/boolean-token.d.ts +8 -0
- package/dist/core/tokens/boolean-token.js +15 -0
- package/dist/core/tokens/byte-offset-token.d.ts +8 -0
- package/dist/core/tokens/byte-offset-token.js +15 -0
- package/dist/core/tokens/comment-token.d.ts +10 -0
- package/dist/core/tokens/comment-token.js +26 -0
- package/dist/core/tokens/end-array-token.d.ts +4 -0
- package/dist/core/tokens/end-array-token.js +8 -0
- package/dist/core/tokens/end-dictionary-token.d.ts +4 -0
- package/dist/core/tokens/end-dictionary-token.js +8 -0
- package/dist/core/tokens/end-object-token.d.ts +4 -0
- package/dist/core/tokens/end-object-token.js +8 -0
- package/dist/core/tokens/end-stream-token.d.ts +5 -0
- package/dist/core/tokens/end-stream-token.js +8 -0
- package/dist/core/tokens/hexadecimal-token.d.ts +7 -0
- package/dist/core/tokens/hexadecimal-token.js +16 -0
- package/dist/core/tokens/name-token.d.ts +6 -0
- package/dist/core/tokens/name-token.js +15 -0
- package/dist/core/tokens/null-token.d.ts +4 -0
- package/dist/core/tokens/null-token.js +8 -0
- package/dist/core/tokens/number-token.d.ts +24 -0
- package/dist/core/tokens/number-token.js +104 -0
- package/dist/core/tokens/object-reference-token.d.ts +7 -0
- package/dist/core/tokens/object-reference-token.js +17 -0
- package/dist/core/tokens/start-array-token.d.ts +4 -0
- package/dist/core/tokens/start-array-token.js +8 -0
- package/dist/core/tokens/start-dictionary-token.d.ts +4 -0
- package/dist/core/tokens/start-dictionary-token.js +8 -0
- package/dist/core/tokens/start-object-token.d.ts +8 -0
- package/dist/core/tokens/start-object-token.js +17 -0
- package/dist/core/tokens/start-stream-token.d.ts +8 -0
- package/dist/core/tokens/start-stream-token.js +38 -0
- package/dist/core/tokens/start-xref-token.d.ts +4 -0
- package/dist/core/tokens/start-xref-token.js +8 -0
- package/dist/core/tokens/stream-chunk-token.d.ts +5 -0
- package/dist/core/tokens/stream-chunk-token.js +6 -0
- package/dist/core/tokens/string-token.d.ts +7 -0
- package/dist/core/tokens/string-token.js +13 -0
- package/dist/core/tokens/token.d.ts +10 -0
- package/dist/core/tokens/token.js +32 -0
- package/dist/core/tokens/trailer-token.d.ts +5 -0
- package/dist/core/tokens/trailer-token.js +10 -0
- package/dist/core/tokens/whitespace-token.d.ts +11 -0
- package/dist/core/tokens/whitespace-token.js +36 -0
- package/dist/core/tokens/xref-table-entry-token.d.ts +13 -0
- package/dist/core/tokens/xref-table-entry-token.js +40 -0
- package/dist/core/tokens/xref-table-section-start-token.d.ts +8 -0
- package/dist/core/tokens/xref-table-section-start-token.js +21 -0
- package/dist/core/tokens/xref-table-start-token.d.ts +5 -0
- package/dist/core/tokens/xref-table-start-token.js +10 -0
- package/dist/crypto/ciphers/aes128.d.ts +19 -0
- package/{packages/pdf-lite/src/crypto/ciphers/aes128.ts → dist/crypto/ciphers/aes128.js} +17 -27
- package/dist/crypto/ciphers/aes256.d.ts +18 -0
- package/{packages/pdf-lite/src/crypto/ciphers/aes256.ts → dist/crypto/ciphers/aes256.js} +14 -17
- package/dist/crypto/ciphers/rc4.d.ts +18 -0
- package/{packages/pdf-lite/src/crypto/ciphers/rc4.ts → dist/crypto/ciphers/rc4.js} +25 -30
- package/dist/crypto/constants.d.ts +6 -0
- package/{packages/pdf-lite/src/crypto/constants.ts → dist/crypto/constants.js} +1 -1
- package/dist/crypto/key-derivation/key-derivation-aes256.d.ts +56 -0
- package/dist/crypto/key-derivation/key-derivation-aes256.js +156 -0
- package/dist/crypto/key-derivation/key-derivation.d.ts +42 -0
- package/{packages/pdf-lite/src/crypto/key-derivation/key-derivation.ts → dist/crypto/key-derivation/key-derivation.js} +35 -66
- package/dist/crypto/key-gen/key-gen-aes256.d.ts +36 -0
- package/{packages/pdf-lite/src/crypto/key-gen/key-gen-aes256.ts → dist/crypto/key-gen/key-gen-aes256.js} +25 -50
- package/dist/crypto/key-gen/key-gen-rc4-128.d.ts +47 -0
- package/{packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-128.ts → dist/crypto/key-gen/key-gen-rc4-128.js} +45 -106
- package/dist/crypto/key-gen/key-gen-rc4-40.d.ts +60 -0
- package/{packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-40.ts → dist/crypto/key-gen/key-gen-rc4-40.js} +26 -62
- package/dist/crypto/types.d.ts +5 -0
- package/dist/crypto/types.js +1 -0
- package/dist/crypto/utils.d.ts +40 -0
- package/{packages/pdf-lite/src/crypto/utils.ts → dist/crypto/utils.js} +27 -36
- package/dist/filters/ascii85.d.ts +16 -0
- package/{packages/pdf-lite/src/filters/ascii85.ts → dist/filters/ascii85.js} +41 -65
- package/dist/filters/asciihex.d.ts +16 -0
- package/{packages/pdf-lite/src/filters/asciihex.ts → dist/filters/asciihex.js} +18 -19
- package/dist/filters/flate.d.ts +15 -0
- package/{packages/pdf-lite/src/filters/flate.ts → dist/filters/flate.js} +7 -10
- package/dist/filters/lzw.d.ts +16 -0
- package/dist/filters/lzw.js +150 -0
- package/dist/filters/pass-through.d.ts +14 -0
- package/{packages/pdf-lite/src/filters/pass-through.ts → dist/filters/pass-through.js} +6 -9
- package/dist/filters/runlength.d.ts +16 -0
- package/{packages/pdf-lite/src/filters/runlength.ts → dist/filters/runlength.js} +36 -40
- package/dist/filters/types.d.ts +18 -0
- package/{packages/pdf-lite/src/filters/types.ts → dist/filters/types.js} +1 -10
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/pdf/errors.d.ts +6 -0
- package/{packages/pdf-lite/src/pdf/errors.ts → dist/pdf/errors.js} +2 -1
- package/dist/pdf/index.d.ts +4 -0
- package/dist/pdf/index.js +4 -0
- package/dist/pdf/pdf-document.d.ts +277 -0
- package/{packages/pdf-lite/src/pdf/pdf-document.ts → dist/pdf/pdf-document.js} +305 -541
- package/dist/pdf/pdf-reader.d.ts +37 -0
- package/{packages/pdf-lite/src/pdf/pdf-reader.ts → dist/pdf/pdf-reader.js} +12 -22
- package/dist/pdf/pdf-revision.d.ts +101 -0
- package/{packages/pdf-lite/src/pdf/pdf-revision.ts → dist/pdf/pdf-revision.js} +70 -105
- package/dist/pdf/pdf-xref-lookup.d.ts +149 -0
- package/dist/pdf/pdf-xref-lookup.js +402 -0
- package/dist/security/crypt-filters/aesv2.d.ts +35 -0
- package/{packages/pdf-lite/src/security/crypt-filters/aesv2.ts → dist/security/crypt-filters/aesv2.js} +9 -26
- package/dist/security/crypt-filters/aesv3.d.ts +36 -0
- package/{packages/pdf-lite/src/security/crypt-filters/aesv3.ts → dist/security/crypt-filters/aesv3.js} +9 -23
- package/{packages/pdf-lite/src/security/crypt-filters/base.ts → dist/security/crypt-filters/base.d.ts} +21 -73
- package/dist/security/crypt-filters/base.js +93 -0
- package/dist/security/crypt-filters/identity.d.ts +28 -0
- package/{packages/pdf-lite/src/security/crypt-filters/identity.ts → dist/security/crypt-filters/identity.js} +9 -13
- package/dist/security/crypt-filters/v2.d.ts +37 -0
- package/{packages/pdf-lite/src/security/crypt-filters/v2.ts → dist/security/crypt-filters/v2.js} +9 -26
- package/dist/security/handlers/base.d.ts +304 -0
- package/dist/security/handlers/base.js +359 -0
- package/dist/security/handlers/pubSec.d.ts +164 -0
- package/dist/security/handlers/pubSec.js +299 -0
- package/dist/security/handlers/utils.d.ts +77 -0
- package/dist/security/handlers/utils.js +244 -0
- package/dist/security/handlers/v1.d.ts +81 -0
- package/dist/security/handlers/v1.js +135 -0
- package/dist/security/handlers/v2.d.ts +63 -0
- package/{packages/pdf-lite/src/security/handlers/v2.ts → dist/security/handlers/v2.js} +25 -62
- package/dist/security/handlers/v4.d.ts +121 -0
- package/dist/security/handlers/v4.js +257 -0
- package/dist/security/handlers/v5.d.ts +112 -0
- package/dist/security/handlers/v5.js +210 -0
- package/{packages/pdf-lite/src/security/types.ts → dist/security/types.d.ts} +72 -94
- package/dist/security/types.js +1 -0
- package/dist/signing/document-security-store.d.ts +108 -0
- package/dist/signing/document-security-store.js +156 -0
- package/dist/signing/index.d.ts +3 -0
- package/dist/signing/index.js +3 -0
- package/dist/signing/signatures/adbe-pkcs7-detached.d.ts +57 -0
- package/dist/signing/signatures/adbe-pkcs7-detached.js +117 -0
- package/dist/signing/signatures/adbe-pkcs7-sha1.d.ts +55 -0
- package/dist/signing/signatures/adbe-pkcs7-sha1.js +121 -0
- package/dist/signing/signatures/adbe-x509-rsa-sha1.d.ts +49 -0
- package/dist/signing/signatures/adbe-x509-rsa-sha1.js +81 -0
- package/dist/signing/signatures/base.d.ts +107 -0
- package/dist/signing/signatures/base.js +145 -0
- package/dist/signing/signatures/etsi-cades-detached.d.ts +64 -0
- package/dist/signing/signatures/etsi-cades-detached.js +159 -0
- package/dist/signing/signatures/etsi-rfc3161.d.ts +37 -0
- package/{packages/pdf-lite/src/signing/signatures/etsi-rfc3161.ts → dist/signing/signatures/etsi-rfc3161.js} +21 -43
- package/dist/signing/signatures/index.d.ts +6 -0
- package/dist/signing/signatures/index.js +6 -0
- package/dist/signing/signer.d.ts +23 -0
- package/dist/signing/signer.js +92 -0
- package/{packages/pdf-lite/src/signing/types.ts → dist/signing/types.d.ts} +40 -48
- package/dist/signing/types.js +1 -0
- package/dist/signing/utils.d.ts +32 -0
- package/{packages/pdf-lite/src/signing/utils.ts → dist/signing/utils.js} +12 -31
- package/dist/types.d.ts +23 -0
- package/dist/types.js +11 -0
- package/dist/utils/IterableReadableStream.d.ts +24 -0
- package/{packages/pdf-lite/src/utils/IterableReadableStream.ts → dist/utils/IterableReadableStream.js} +6 -6
- package/dist/utils/algos.d.ts +242 -0
- package/{packages/pdf-lite/src/utils/algos.ts → dist/utils/algos.js} +63 -136
- package/dist/utils/assert.d.ts +28 -0
- package/{packages/pdf-lite/src/utils/assert.ts → dist/utils/assert.js} +5 -10
- package/dist/utils/bytesToHex.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/bytesToHex.ts → dist/utils/bytesToHex.js} +4 -6
- package/dist/utils/bytesToHexBytes.d.ts +14 -0
- package/{packages/pdf-lite/src/utils/bytesToHexBytes.ts → dist/utils/bytesToHexBytes.js} +7 -12
- package/dist/utils/bytesToString.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/bytesToString.ts → dist/utils/bytesToString.js} +3 -5
- package/dist/utils/concatUint8Arrays.d.ts +16 -0
- package/{packages/pdf-lite/src/utils/concatUint8Arrays.ts → dist/utils/concatUint8Arrays.js} +7 -9
- package/dist/utils/escapeString.d.ts +14 -0
- package/dist/utils/escapeString.js +43 -0
- package/dist/utils/hexBytesToBytes.d.ts +15 -0
- package/{packages/pdf-lite/src/utils/hexBytesToBytes.ts → dist/utils/hexBytesToBytes.js} +4 -6
- package/dist/utils/hexBytesToString.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/hexBytesToString.ts → dist/utils/hexBytesToString.js} +5 -7
- package/dist/utils/hexToBytes.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/hexToBytes.ts → dist/utils/hexToBytes.js} +4 -6
- package/dist/utils/padBytes.d.ts +15 -0
- package/{packages/pdf-lite/src/utils/padBytes.ts → dist/utils/padBytes.js} +5 -9
- package/dist/utils/predictors.d.ts +113 -0
- package/{packages/pdf-lite/src/utils/predictors.ts → dist/utils/predictors.js} +103 -156
- package/dist/utils/replaceInBuffer.d.ts +22 -0
- package/{packages/pdf-lite/src/utils/replaceInBuffer.ts → dist/utils/replaceInBuffer.js} +18 -27
- package/dist/utils/stringToBytes.d.ts +14 -0
- package/{packages/pdf-lite/src/utils/stringToBytes.ts → dist/utils/stringToBytes.js} +6 -7
- package/dist/utils/stringToHexBytes.d.ts +15 -0
- package/{packages/pdf-lite/src/utils/stringToHexBytes.ts → dist/utils/stringToHexBytes.js} +5 -7
- package/dist/utils/unescapeString.d.ts +16 -0
- package/dist/utils/unescapeString.js +114 -0
- package/package.json +37 -34
- package/.commitlintrc.cjs +0 -25
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
- package/.github/workflows/docs.yaml +0 -95
- package/.github/workflows/prepare-release.yaml +0 -79
- package/.github/workflows/release.yaml +0 -80
- package/.github/workflows/test.yaml +0 -35
- package/.husky/commit-msg +0 -1
- package/.husky/pre-commit +0 -1
- package/.prettierignore +0 -4
- package/.prettierrc +0 -4
- package/CONTRIBUTING.md +0 -109
- package/EXAMPLES.md +0 -1512
- package/docs/README.md +0 -127
- package/docs/core/README.md +0 -43
- package/docs/core/decoder/README.md +0 -11
- package/docs/core/decoder/classes/PdfDecoder.md +0 -362
- package/docs/core/generators/README.md +0 -14
- package/docs/core/generators/functions/bytesToPdfObjects.md +0 -26
- package/docs/core/generators/functions/pdfDecoder.md +0 -36
- package/docs/core/generators/functions/pdfDecoderAsync.md +0 -26
- package/docs/core/generators/functions/stringToPdfObjects.md +0 -25
- package/docs/core/incremental-parser/README.md +0 -13
- package/docs/core/incremental-parser/classes/EofReachedError.md +0 -55
- package/docs/core/incremental-parser/classes/IncrementalParser.md +0 -299
- package/docs/core/incremental-parser/classes/NoMoreTokensError.md +0 -55
- package/docs/core/objects/pdf-array/README.md +0 -11
- package/docs/core/objects/pdf-array/classes/PdfArray.md +0 -305
- package/docs/core/objects/pdf-boolean/README.md +0 -11
- package/docs/core/objects/pdf-boolean/classes/PdfBoolean.md +0 -265
- package/docs/core/objects/pdf-comment/README.md +0 -11
- package/docs/core/objects/pdf-comment/classes/PdfComment.md +0 -329
- package/docs/core/objects/pdf-date/README.md +0 -11
- package/docs/core/objects/pdf-date/classes/PdfDate.md +0 -317
- package/docs/core/objects/pdf-dictionary/README.md +0 -17
- package/docs/core/objects/pdf-dictionary/classes/PdfDictionary.md +0 -396
- package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryEntries.md +0 -9
- package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryEntry.md +0 -9
- package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryMap.md +0 -9
- package/docs/core/objects/pdf-hexadecimal/README.md +0 -11
- package/docs/core/objects/pdf-hexadecimal/classes/PdfHexadecimal.md +0 -320
- package/docs/core/objects/pdf-indirect-object/README.md +0 -11
- package/docs/core/objects/pdf-indirect-object/classes/PdfIndirectObject.md +0 -411
- package/docs/core/objects/pdf-name/README.md +0 -11
- package/docs/core/objects/pdf-name/classes/PdfName.md +0 -271
- package/docs/core/objects/pdf-null/README.md +0 -11
- package/docs/core/objects/pdf-null/classes/PdfNull.md +0 -259
- package/docs/core/objects/pdf-number/README.md +0 -12
- package/docs/core/objects/pdf-number/classes/PdfByteOffsetNumber.md +0 -369
- package/docs/core/objects/pdf-number/classes/PdfNumber.md +0 -345
- package/docs/core/objects/pdf-object/README.md +0 -11
- package/docs/core/objects/pdf-object/classes/PdfObject.md +0 -214
- package/docs/core/objects/pdf-object-reference/README.md +0 -11
- package/docs/core/objects/pdf-object-reference/classes/PdfObjectReference.md +0 -279
- package/docs/core/objects/pdf-start-xref/README.md +0 -11
- package/docs/core/objects/pdf-start-xref/classes/PdfStartXRef.md +0 -265
- package/docs/core/objects/pdf-stream/README.md +0 -23
- package/docs/core/objects/pdf-stream/classes/PdfObjStream.md +0 -699
- package/docs/core/objects/pdf-stream/classes/PdfStream.md +0 -570
- package/docs/core/objects/pdf-stream/classes/PdfXRefStream.md +0 -723
- package/docs/core/objects/pdf-stream/classes/PdfXRefStreamCompressedEntry.md +0 -51
- package/docs/core/objects/pdf-stream/type-aliases/PdfXRefStreamEntry.md +0 -9
- package/docs/core/objects/pdf-stream/type-aliases/PdfXRefStreamStandardEntry.md +0 -9
- package/docs/core/objects/pdf-stream/variables/PdfXRefStreamStandardEntry.md +0 -9
- package/docs/core/objects/pdf-string/README.md +0 -11
- package/docs/core/objects/pdf-string/classes/PdfString.md +0 -301
- package/docs/core/objects/pdf-trailer/README.md +0 -16
- package/docs/core/objects/pdf-trailer/classes/PdfTrailer.md +0 -271
- package/docs/core/objects/pdf-trailer/type-aliases/PdfTrailerDictionary.md +0 -9
- package/docs/core/objects/pdf-trailer/type-aliases/PdfTrailerEntries.md +0 -51
- package/docs/core/objects/pdf-xref-table/README.md +0 -13
- package/docs/core/objects/pdf-xref-table/classes/PdfXRefTable.md +0 -331
- package/docs/core/objects/pdf-xref-table/classes/PdfXRefTableEntry.md +0 -297
- package/docs/core/objects/pdf-xref-table/classes/PdfXRefTableSectionHeader.md +0 -277
- package/docs/core/parser/README.md +0 -11
- package/docs/core/parser/classes/Parser.md +0 -74
- package/docs/core/ref/README.md +0 -15
- package/docs/core/ref/classes/Ref.md +0 -149
- package/docs/core/ref/type-aliases/RefUpdateCallback.md +0 -33
- package/docs/core/serializer/README.md +0 -11
- package/docs/core/serializer/classes/PdfTokenSerializer.md +0 -106
- package/docs/core/streams/object-stream/README.md +0 -11
- package/docs/core/streams/object-stream/classes/PdfObjectStream.md +0 -69
- package/docs/core/tokeniser/README.md +0 -21
- package/docs/core/tokeniser/classes/PdfByteStreamTokeniser.md +0 -366
- package/docs/core/tokeniser/classes/PdfObjectTokeniser.md +0 -69
- package/docs/core/tokeniser/functions/objectToTokens.md +0 -25
- package/docs/core/tokeniser/functions/pdfObjectStreamTokeniser.md +0 -27
- package/docs/core/tokeniser/type-aliases/PdfTokeniser.md +0 -11
- package/docs/core/tokens/boolean-token/README.md +0 -11
- package/docs/core/tokens/boolean-token/classes/PdfBooleanToken.md +0 -139
- package/docs/core/tokens/byte-offset-token/README.md +0 -11
- package/docs/core/tokens/byte-offset-token/classes/PdfByteOffsetToken.md +0 -153
- package/docs/core/tokens/comment-token/README.md +0 -11
- package/docs/core/tokens/comment-token/classes/PdfCommentToken.md +0 -161
- package/docs/core/tokens/end-array-token/README.md +0 -11
- package/docs/core/tokens/end-array-token/classes/PdfEndArrayToken.md +0 -115
- package/docs/core/tokens/end-dictionary-token/README.md +0 -11
- package/docs/core/tokens/end-dictionary-token/classes/PdfEndDictionaryToken.md +0 -115
- package/docs/core/tokens/end-object-token/README.md +0 -11
- package/docs/core/tokens/end-object-token/classes/PdfEndObjectToken.md +0 -115
- package/docs/core/tokens/end-stream-token/README.md +0 -11
- package/docs/core/tokens/end-stream-token/classes/PdfEndStreamToken.md +0 -121
- package/docs/core/tokens/hexadecimal-token/README.md +0 -11
- package/docs/core/tokens/hexadecimal-token/classes/PdfHexadecimalToken.md +0 -127
- package/docs/core/tokens/name-token/README.md +0 -11
- package/docs/core/tokens/name-token/classes/PdfNameToken.md +0 -127
- package/docs/core/tokens/null-token/README.md +0 -11
- package/docs/core/tokens/null-token/classes/PdfNullToken.md +0 -115
- package/docs/core/tokens/number-token/README.md +0 -11
- package/docs/core/tokens/number-token/classes/PdfNumberToken.md +0 -271
- package/docs/core/tokens/object-reference-token/README.md +0 -11
- package/docs/core/tokens/object-reference-token/classes/PdfObjectReferenceToken.md +0 -137
- package/docs/core/tokens/start-array-token/README.md +0 -11
- package/docs/core/tokens/start-array-token/classes/PdfStartArrayToken.md +0 -115
- package/docs/core/tokens/start-dictionary-token/README.md +0 -11
- package/docs/core/tokens/start-dictionary-token/classes/PdfStartDictionaryToken.md +0 -115
- package/docs/core/tokens/start-object-token/README.md +0 -11
- package/docs/core/tokens/start-object-token/classes/PdfStartObjectToken.md +0 -147
- package/docs/core/tokens/start-stream-token/README.md +0 -11
- package/docs/core/tokens/start-stream-token/classes/PdfStartStreamToken.md +0 -147
- package/docs/core/tokens/start-xref-token/README.md +0 -11
- package/docs/core/tokens/start-xref-token/classes/PdfStartXRefToken.md +0 -115
- package/docs/core/tokens/stream-chunk-token/README.md +0 -11
- package/docs/core/tokens/stream-chunk-token/classes/PdfStreamChunkToken.md +0 -121
- package/docs/core/tokens/string-token/README.md +0 -11
- package/docs/core/tokens/string-token/classes/PdfStringToken.md +0 -127
- package/docs/core/tokens/token/README.md +0 -11
- package/docs/core/tokens/token/classes/PdfToken.md +0 -116
- package/docs/core/tokens/trailer-token/README.md +0 -11
- package/docs/core/tokens/trailer-token/classes/PdfTrailerToken.md +0 -127
- package/docs/core/tokens/whitespace-token/README.md +0 -11
- package/docs/core/tokens/whitespace-token/classes/PdfWhitespaceToken.md +0 -161
- package/docs/core/tokens/xref-table-entry-token/README.md +0 -11
- package/docs/core/tokens/xref-table-entry-token/classes/PdfXRefTableEntryToken.md +0 -157
- package/docs/core/tokens/xref-table-section-start-token/README.md +0 -11
- package/docs/core/tokens/xref-table-section-start-token/classes/PdfXRefTableSectionStartToken.md +0 -137
- package/docs/core/tokens/xref-table-start-token/README.md +0 -11
- package/docs/core/tokens/xref-table-start-token/classes/PdfXRefTableStartToken.md +0 -127
- package/docs/crypto/ciphers/aes128/README.md +0 -11
- package/docs/crypto/ciphers/aes128/functions/aes128.md +0 -39
- package/docs/crypto/ciphers/aes256/README.md +0 -11
- package/docs/crypto/ciphers/aes256/functions/aes256.md +0 -35
- package/docs/crypto/ciphers/rc4/README.md +0 -11
- package/docs/crypto/ciphers/rc4/functions/rc4.md +0 -35
- package/docs/crypto/constants/README.md +0 -11
- package/docs/crypto/constants/variables/DEFAULT_PADDING.md +0 -13
- package/docs/crypto/key-derivation/key-derivation/README.md +0 -13
- package/docs/crypto/key-derivation/key-derivation/functions/computeMasterKey.md +0 -57
- package/docs/crypto/key-derivation/key-derivation/functions/deriveObjectKey.md +0 -50
- package/docs/crypto/key-derivation/key-derivation/functions/padPassword.md +0 -33
- package/docs/crypto/key-derivation/key-derivation-aes256/README.md +0 -13
- package/docs/crypto/key-derivation/key-derivation-aes256/functions/computeAlgorithm2bHash.md +0 -45
- package/docs/crypto/key-derivation/key-derivation-aes256/functions/getFileKey.md +0 -66
- package/docs/crypto/key-derivation/key-derivation-aes256/functions/validatePasswordHash.md +0 -52
- package/docs/crypto/key-gen/key-gen-aes256/README.md +0 -12
- package/docs/crypto/key-gen/key-gen-aes256/functions/generateOandOe.md +0 -44
- package/docs/crypto/key-gen/key-gen-aes256/functions/generateUandUe.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-128/README.md +0 -13
- package/docs/crypto/key-gen/key-gen-rc4-128/functions/computeOValueRc4_128.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-128/functions/computeUValueRc4_128.md +0 -62
- package/docs/crypto/key-gen/key-gen-rc4-128/functions/decryptUserPasswordRc4_128.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-40/README.md +0 -14
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeEncryptionKeyRc4_40.md +0 -49
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeORc4_40.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeURc4_40.md +0 -50
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/decryptUserPasswordRc4_40.md +0 -38
- package/docs/crypto/types/README.md +0 -11
- package/docs/crypto/types/interfaces/Cipher.md +0 -39
- package/docs/crypto/utils/README.md +0 -13
- package/docs/crypto/utils/functions/int32ToLittleEndianBytes.md +0 -31
- package/docs/crypto/utils/functions/padPassword.md +0 -33
- package/docs/crypto/utils/functions/removePdfPasswordPadding.md +0 -32
- package/docs/filters/ascii85/README.md +0 -11
- package/docs/filters/ascii85/functions/ascii85.md +0 -27
- package/docs/filters/asciihex/README.md +0 -11
- package/docs/filters/asciihex/functions/asciiHex.md +0 -27
- package/docs/filters/flate/README.md +0 -11
- package/docs/filters/flate/functions/flate.md +0 -26
- package/docs/filters/lzw/README.md +0 -11
- package/docs/filters/lzw/functions/lzw.md +0 -27
- package/docs/filters/pass-through/README.md +0 -11
- package/docs/filters/pass-through/functions/passthroughFilter.md +0 -25
- package/docs/filters/runlength/README.md +0 -11
- package/docs/filters/runlength/functions/runLength.md +0 -27
- package/docs/filters/types/README.md +0 -19
- package/docs/filters/types/interfaces/PdfFilter.md +0 -39
- package/docs/filters/types/type-aliases/PdfStreamFilterType.md +0 -9
- package/docs/filters/types/variables/PDF_FILTER_TYPES.md +0 -51
- package/docs/index/README.md +0 -235
- package/docs/pdf/README.md +0 -31
- package/docs/pdf/errors/README.md +0 -11
- package/docs/pdf/errors/classes/FoundCompressedObjectError.md +0 -56
- package/docs/pdf/pdf-document/README.md +0 -11
- package/docs/pdf/pdf-document/classes/PdfDocument.md +0 -876
- package/docs/pdf/pdf-reader/README.md +0 -11
- package/docs/pdf/pdf-reader/classes/PdfReader.md +0 -82
- package/docs/pdf/pdf-revision/README.md +0 -11
- package/docs/pdf/pdf-revision/classes/PdfRevision.md +0 -508
- package/docs/pdf/pdf-xref-lookup/README.md +0 -11
- package/docs/pdf/pdf-xref-lookup/classes/PdfXrefLookup.md +0 -421
- package/docs/security/crypt-filters/aesv2/README.md +0 -11
- package/docs/security/crypt-filters/aesv2/classes/AesV2CryptFilter.md +0 -274
- package/docs/security/crypt-filters/aesv3/README.md +0 -11
- package/docs/security/crypt-filters/aesv3/classes/AesV3CryptFilter.md +0 -275
- package/docs/security/crypt-filters/base/README.md +0 -15
- package/docs/security/crypt-filters/base/classes/PdfCryptFilter.md +0 -221
- package/docs/security/crypt-filters/base/type-aliases/CryptFilterOptions.md +0 -43
- package/docs/security/crypt-filters/identity/README.md +0 -11
- package/docs/security/crypt-filters/identity/classes/IdentityCryptFilter.md +0 -249
- package/docs/security/crypt-filters/v2/README.md +0 -11
- package/docs/security/crypt-filters/v2/classes/V2CryptFilter.md +0 -279
- package/docs/security/handlers/base/README.md +0 -17
- package/docs/security/handlers/base/classes/PdfSecurityHandler.md +0 -384
- package/docs/security/handlers/base/classes/PdfStandardSecurityHandler.md +0 -694
- package/docs/security/handlers/base/type-aliases/PdfSecurityHandlerOptions.md +0 -27
- package/docs/security/handlers/base/type-aliases/PdfStandardSecurityHandlerOptions.md +0 -43
- package/docs/security/handlers/pubSec/README.md +0 -11
- package/docs/security/handlers/pubSec/classes/PdfPublicKeySecurityHandler.md +0 -503
- package/docs/security/handlers/utils/README.md +0 -14
- package/docs/security/handlers/utils/functions/createFromDictionary.md +0 -56
- package/docs/security/handlers/utils/functions/createFromEncryptionOptions.md +0 -40
- package/docs/security/handlers/utils/functions/createStandardSecurityHandlerFromDictionary.md +0 -55
- package/docs/security/handlers/utils/functions/getCryptFilter.md +0 -35
- package/docs/security/handlers/v1/README.md +0 -11
- package/docs/security/handlers/v1/classes/PdfV1SecurityHandler.md +0 -779
- package/docs/security/handlers/v2/README.md +0 -11
- package/docs/security/handlers/v2/classes/PdfV2SecurityHandler.md +0 -783
- package/docs/security/handlers/v4/README.md +0 -11
- package/docs/security/handlers/v4/classes/PdfV4SecurityHandler.md +0 -907
- package/docs/security/handlers/v5/README.md +0 -11
- package/docs/security/handlers/v5/classes/PdfV5SecurityHandler.md +0 -926
- package/docs/security/types/README.md +0 -19
- package/docs/security/types/type-aliases/CryptFilterType.md +0 -15
- package/docs/security/types/type-aliases/PdfCryptFilterDictionary.md +0 -12
- package/docs/security/types/type-aliases/PdfEncryptionAlgorithmOptions.md +0 -11
- package/docs/security/types/type-aliases/PdfEncryptionAlgorithmType.md +0 -17
- package/docs/security/types/type-aliases/PdfEncryptionDictionary.md +0 -13
- package/docs/security/types/type-aliases/PdfEncryptionDictionaryObject.md +0 -11
- package/docs/security/types/type-aliases/PdfEncryptionOptions.md +0 -90
- package/docs/security/types/type-aliases/PdfEncryptionRecipient.md +0 -24
- package/docs/security/types/type-aliases/PdfId.md +0 -13
- package/docs/signing/README.md +0 -127
- package/docs/signing/document-security-store/README.md +0 -19
- package/docs/signing/document-security-store/classes/PdfCertObject.md +0 -443
- package/docs/signing/document-security-store/classes/PdfCrlObject.md +0 -443
- package/docs/signing/document-security-store/classes/PdfDocumentSecurityStoreDictionary.md +0 -416
- package/docs/signing/document-security-store/classes/PdfDocumentSecurityStoreObject.md +0 -563
- package/docs/signing/document-security-store/classes/PdfOcspObject.md +0 -443
- package/docs/signing/document-security-store/type-aliases/PdfVriObject.md +0 -12
- package/docs/signing/signatures/README.md +0 -55
- package/docs/signing/signatures/adbe-pkcs7-detached/README.md +0 -11
- package/docs/signing/signatures/adbe-pkcs7-detached/classes/PdfAdbePkcs7DetachedSignatureObject.md +0 -669
- package/docs/signing/signatures/adbe-pkcs7-sha1/README.md +0 -11
- package/docs/signing/signatures/adbe-pkcs7-sha1/classes/PdfAdbePkcs7Sha1SignatureObject.md +0 -667
- package/docs/signing/signatures/adbe-x509-rsa-sha1/README.md +0 -11
- package/docs/signing/signatures/adbe-x509-rsa-sha1/classes/PdfAdbePkcsX509RsaSha1SignatureObject.md +0 -651
- package/docs/signing/signatures/base/README.md +0 -16
- package/docs/signing/signatures/base/classes/PdfSignatureDictionary.md +0 -420
- package/docs/signing/signatures/base/classes/PdfSignatureObject.md +0 -584
- package/docs/signing/signatures/base/type-aliases/PdfSignatureSignOptions.md +0 -51
- package/docs/signing/signatures/etsi-cades-detached/README.md +0 -11
- package/docs/signing/signatures/etsi-cades-detached/classes/PdfEtsiCadesDetachedSignatureObject.md +0 -693
- package/docs/signing/signatures/etsi-rfc3161/README.md +0 -11
- package/docs/signing/signatures/etsi-rfc3161/classes/PdfEtsiRfc3161SignatureObject.md +0 -614
- package/docs/signing/signer/README.md +0 -11
- package/docs/signing/signer/classes/PdfSigner.md +0 -58
- package/docs/signing/types/README.md +0 -16
- package/docs/signing/types/type-aliases/PdfSignatureDictionaryEntries.md +0 -95
- package/docs/signing/types/type-aliases/PdfSignatureSubType.md +0 -17
- package/docs/signing/types/type-aliases/PdfSignatureType.md +0 -14
- package/docs/signing/types/type-aliases/RevocationInfo.md +0 -43
- package/docs/signing/types/type-aliases/SignaturePolicyDocument.md +0 -35
- package/docs/signing/types/type-aliases/TimeStampAuthority.md +0 -35
- package/docs/signing/utils/README.md +0 -11
- package/docs/signing/utils/functions/fetchRevocationInfo.md +0 -70
- package/docs/types/README.md +0 -21
- package/docs/types/type-aliases/ByteArray.md +0 -9
- package/docs/types/type-aliases/ChangeType.md +0 -9
- package/docs/types/type-aliases/DecodeParms.md +0 -33
- package/docs/types/type-aliases/HashAlgorithm.md +0 -9
- package/docs/types/type-aliases/PdfEncryptionAlgorithm.md +0 -9
- package/docs/types/type-aliases/PdfPermissions.md +0 -63
- package/docs/types/type-aliases/PdfVersion.md +0 -9
- package/docs/types/variables/PERMISSION_FLAGS.md +0 -9
- package/docs/utils/IterableReadableStream/README.md +0 -11
- package/docs/utils/IterableReadableStream/classes/IterableReadableStream.md +0 -103
- package/docs/utils/algos/README.md +0 -28
- package/docs/utils/algos/functions/aes128CbcNoPaddingEncrypt.md +0 -43
- package/docs/utils/algos/functions/aes128cbcDecrypt.md +0 -47
- package/docs/utils/algos/functions/aes128cbcEncrypt.md +0 -47
- package/docs/utils/algos/functions/aes256CbcNoPaddingDecrypt.md +0 -43
- package/docs/utils/algos/functions/aes256CbcNoPaddingEncrypt.md +0 -43
- package/docs/utils/algos/functions/aes256cbcDecrypt.md +0 -43
- package/docs/utils/algos/functions/aes256cbcEncrypt.md +0 -43
- package/docs/utils/algos/functions/aes256ecbDecrypt.md +0 -41
- package/docs/utils/algos/functions/aes256ecbEncrypt.md +0 -41
- package/docs/utils/algos/functions/deflateData.md +0 -31
- package/docs/utils/algos/functions/getRandomBytes.md +0 -35
- package/docs/utils/algos/functions/hash.md +0 -41
- package/docs/utils/algos/functions/inflateData.md +0 -35
- package/docs/utils/algos/functions/md5.md +0 -31
- package/docs/utils/algos/functions/sha1.md +0 -31
- package/docs/utils/algos/functions/sha256.md +0 -31
- package/docs/utils/algos/functions/sha384.md +0 -31
- package/docs/utils/algos/functions/sha512.md +0 -31
- package/docs/utils/assert/README.md +0 -12
- package/docs/utils/assert/functions/assert.md +0 -39
- package/docs/utils/assert/functions/assertIfDefined.md +0 -46
- package/docs/utils/bytesToHex/README.md +0 -11
- package/docs/utils/bytesToHex/functions/bytesToHex.md +0 -31
- package/docs/utils/bytesToHexBytes/README.md +0 -11
- package/docs/utils/bytesToHexBytes/functions/bytesToHexBytes.md +0 -32
- package/docs/utils/bytesToString/README.md +0 -11
- package/docs/utils/bytesToString/functions/bytesToString.md +0 -31
- package/docs/utils/concatUint8Arrays/README.md +0 -11
- package/docs/utils/concatUint8Arrays/functions/concatUint8Arrays.md +0 -31
- package/docs/utils/escapeString/README.md +0 -11
- package/docs/utils/escapeString/functions/escapeString.md +0 -32
- package/docs/utils/hexBytesToBytes/README.md +0 -11
- package/docs/utils/hexBytesToBytes/functions/hexBytesToBytes.md +0 -33
- package/docs/utils/hexBytesToString/README.md +0 -11
- package/docs/utils/hexBytesToString/functions/hexBytesToString.md +0 -31
- package/docs/utils/hexToBytes/README.md +0 -11
- package/docs/utils/hexToBytes/functions/hexToBytes.md +0 -31
- package/docs/utils/padBytes/README.md +0 -11
- package/docs/utils/padBytes/functions/padBytes.md +0 -41
- package/docs/utils/predictors/README.md +0 -11
- package/docs/utils/predictors/classes/Predictor.md +0 -306
- package/docs/utils/replaceInBuffer/README.md +0 -11
- package/docs/utils/replaceInBuffer/functions/replaceInBuffer.md +0 -65
- package/docs/utils/stringToBytes/README.md +0 -11
- package/docs/utils/stringToBytes/functions/stringToBytes.md +0 -32
- package/docs/utils/stringToHexBytes/README.md +0 -11
- package/docs/utils/stringToHexBytes/functions/stringToHexBytes.md +0 -33
- package/docs/utils/unescapeString/README.md +0 -11
- package/docs/utils/unescapeString/functions/unescapeString.md +0 -34
- package/examples/001-create-pdf.ts +0 -112
- package/examples/002-create-encrypted-pdf.ts +0 -121
- package/examples/003-sign-pdf.ts +0 -347
- package/examples/004-incremental-update.ts +0 -206
- package/examples/005-modify-acroform.ts +0 -374
- package/examples/006-tokeniser-example.ts +0 -131
- package/examples/007-decoder-example.ts +0 -197
- package/packages/pdf-lite/README.md +0 -3
- package/packages/pdf-lite/node_modules/.bin/playwright +0 -16
- package/packages/pdf-lite/node_modules/.bin/tsc +0 -16
- package/packages/pdf-lite/node_modules/.bin/tsserver +0 -16
- package/packages/pdf-lite/node_modules/.bin/vitest +0 -16
- package/packages/pdf-lite/package.json +0 -68
- package/packages/pdf-lite/scripts/create-encryption-tests.sh +0 -41
- package/packages/pdf-lite/scripts/gen-signing-keys.sh +0 -290
- package/packages/pdf-lite/scripts/generate-all-signing-keys.sh +0 -70
- package/packages/pdf-lite/src/core/decoder.ts +0 -454
- package/packages/pdf-lite/src/core/index.ts +0 -2
- package/packages/pdf-lite/src/core/objects/pdf-array.ts +0 -54
- package/packages/pdf-lite/src/core/objects/pdf-boolean.ts +0 -19
- package/packages/pdf-lite/src/core/objects/pdf-comment.ts +0 -50
- package/packages/pdf-lite/src/core/objects/pdf-date.ts +0 -74
- package/packages/pdf-lite/src/core/objects/pdf-dictionary.ts +0 -171
- package/packages/pdf-lite/src/core/objects/pdf-hexadecimal.ts +0 -54
- package/packages/pdf-lite/src/core/objects/pdf-indirect-object.ts +0 -137
- package/packages/pdf-lite/src/core/objects/pdf-name.ts +0 -19
- package/packages/pdf-lite/src/core/objects/pdf-null.ts +0 -15
- package/packages/pdf-lite/src/core/objects/pdf-number.ts +0 -98
- package/packages/pdf-lite/src/core/objects/pdf-object-reference.ts +0 -30
- package/packages/pdf-lite/src/core/objects/pdf-object.ts +0 -107
- package/packages/pdf-lite/src/core/objects/pdf-start-xref.ts +0 -39
- package/packages/pdf-lite/src/core/objects/pdf-stream.ts +0 -687
- package/packages/pdf-lite/src/core/objects/pdf-string.ts +0 -38
- package/packages/pdf-lite/src/core/objects/pdf-trailer.ts +0 -57
- package/packages/pdf-lite/src/core/objects/pdf-xref-table.ts +0 -264
- package/packages/pdf-lite/src/core/streams/object-stream.ts +0 -20
- package/packages/pdf-lite/src/core/tokeniser.ts +0 -687
- package/packages/pdf-lite/src/core/tokens/boolean-token.ts +0 -20
- package/packages/pdf-lite/src/core/tokens/byte-offset-token.ts +0 -20
- package/packages/pdf-lite/src/core/tokens/comment-token.ts +0 -32
- package/packages/pdf-lite/src/core/tokens/end-array-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/end-dictionary-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/end-object-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/end-stream-token.ts +0 -11
- package/packages/pdf-lite/src/core/tokens/hexadecimal-token.ts +0 -22
- package/packages/pdf-lite/src/core/tokens/name-token.ts +0 -19
- package/packages/pdf-lite/src/core/tokens/null-token.ts +0 -9
- package/packages/pdf-lite/src/core/tokens/number-token.ts +0 -164
- package/packages/pdf-lite/src/core/tokens/object-reference-token.ts +0 -24
- package/packages/pdf-lite/src/core/tokens/start-array-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/start-dictionary-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/start-object-token.ts +0 -28
- package/packages/pdf-lite/src/core/tokens/start-stream-token.ts +0 -52
- package/packages/pdf-lite/src/core/tokens/start-xref-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/stream-chunk-token.ts +0 -8
- package/packages/pdf-lite/src/core/tokens/string-token.ts +0 -17
- package/packages/pdf-lite/src/core/tokens/token.ts +0 -43
- package/packages/pdf-lite/src/core/tokens/trailer-token.ts +0 -12
- package/packages/pdf-lite/src/core/tokens/whitespace-token.ts +0 -43
- package/packages/pdf-lite/src/core/tokens/xref-table-entry-token.ts +0 -65
- package/packages/pdf-lite/src/core/tokens/xref-table-section-start-token.ts +0 -31
- package/packages/pdf-lite/src/core/tokens/xref-table-start-token.ts +0 -13
- package/packages/pdf-lite/src/crypto/key-derivation/key-derivation-aes256.ts +0 -213
- package/packages/pdf-lite/src/crypto/types.ts +0 -6
- package/packages/pdf-lite/src/filters/lzw.ts +0 -144
- package/packages/pdf-lite/src/index.ts +0 -4
- package/packages/pdf-lite/src/pdf/index.ts +0 -4
- package/packages/pdf-lite/src/pdf/pdf-xref-lookup.ts +0 -527
- package/packages/pdf-lite/src/security/handlers/base.ts +0 -625
- package/packages/pdf-lite/src/security/handlers/pubSec.ts +0 -413
- package/packages/pdf-lite/src/security/handlers/utils.ts +0 -304
- package/packages/pdf-lite/src/security/handlers/v1.ts +0 -225
- package/packages/pdf-lite/src/security/handlers/v4.ts +0 -379
- package/packages/pdf-lite/src/security/handlers/v5.ts +0 -298
- package/packages/pdf-lite/src/signing/document-security-store.ts +0 -224
- package/packages/pdf-lite/src/signing/index.ts +0 -3
- package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-detached.ts +0 -154
- package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-sha1.ts +0 -161
- package/packages/pdf-lite/src/signing/signatures/adbe-x509-rsa-sha1.ts +0 -106
- package/packages/pdf-lite/src/signing/signatures/base.ts +0 -229
- package/packages/pdf-lite/src/signing/signatures/etsi-cades-detached.ts +0 -229
- package/packages/pdf-lite/src/signing/signatures/index.ts +0 -6
- package/packages/pdf-lite/src/signing/signer.ts +0 -120
- package/packages/pdf-lite/src/types.ts +0 -44
- package/packages/pdf-lite/src/utils/escapeString.ts +0 -49
- package/packages/pdf-lite/src/utils/unescapeString.ts +0 -123
- package/packages/pdf-lite/test/acceptance/__snapshots__/versions.node.test.ts.snap +0 -60766
- package/packages/pdf-lite/test/acceptance/fixtures/1.3/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-128.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-256.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-128.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-40.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.5/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.6/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.7/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-128.pdf +0 -43
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-256.pdf +0 -43
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-128.pdf +0 -43
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-40.pdf +0 -44
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic.pdf +0 -79
- package/packages/pdf-lite/test/acceptance/versions.node.test.ts +0 -41
- package/packages/pdf-lite/test/unit/__snapshots__/decoder.node.test.ts.snap +0 -86947
- package/packages/pdf-lite/test/unit/__snapshots__/tokeniser.node.test.ts.snap +0 -131829
- package/packages/pdf-lite/test/unit/ciphers.test.ts +0 -61
- package/packages/pdf-lite/test/unit/decoder.node.test.ts +0 -21
- package/packages/pdf-lite/test/unit/decoder.test.ts +0 -567
- package/packages/pdf-lite/test/unit/filters.test.ts +0 -67
- package/packages/pdf-lite/test/unit/fixtures/basic.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-128.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-256.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-128.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-40.pdf +0 -43
- package/packages/pdf-lite/test/unit/fixtures/protectedAdobeLivecycle.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/rsa-2048/index.ts +0 -187
- package/packages/pdf-lite/test/unit/fixtures/template.pdf +0 -0
- package/packages/pdf-lite/test/unit/incremental-update.test.ts +0 -0
- package/packages/pdf-lite/test/unit/objects.test.ts +0 -0
- package/packages/pdf-lite/test/unit/pdf-document-signing.test.ts +0 -0
- package/packages/pdf-lite/test/unit/pdf-revision.test.ts +0 -195
- package/packages/pdf-lite/test/unit/pdf.browser.test.ts +0 -0
- package/packages/pdf-lite/test/unit/predictors.test.ts +0 -226
- package/packages/pdf-lite/test/unit/ref.test.ts +0 -158
- package/packages/pdf-lite/test/unit/security-handlers.test.ts +0 -645
- package/packages/pdf-lite/test/unit/serializer.test.ts +0 -81
- package/packages/pdf-lite/test/unit/signature-objects.test.ts +0 -814
- package/packages/pdf-lite/test/unit/string-escaping.test.ts +0 -84
- package/packages/pdf-lite/test/unit/tokeniser.node.test.ts +0 -38
- package/packages/pdf-lite/test/unit/tokeniser.test.ts +0 -1213
- package/packages/pdf-lite/test/unit/utils.test.ts +0 -248
- package/packages/pdf-lite/test/unit/xref-lookup.test.ts +0 -72
- package/packages/pdf-lite/tsconfig.json +0 -4
- package/packages/pdf-lite/tsconfig.prod.json +0 -8
- package/packages/pdf-lite/typedoc.json +0 -14
- package/packages/pdf-lite/vitest.config.ts +0 -43
- package/pnpm-workspace.yaml +0 -2
- package/renovate.json +0 -34
- package/scripts/build-examples.ts +0 -30
- package/scripts/bump-version.sh +0 -56
- package/scripts/gen-html-docs.sh +0 -21
- package/scripts/gen-md-docs.sh +0 -15
- package/scripts/prepare-release.sh +0 -33
- package/tsconfig.json +0 -22
- package/tsconfig.prod.json +0 -12
- package/typedoc.json +0 -34
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { PdfDictionary } from '../../core/objects/pdf-dictionary';
|
|
2
|
+
import { PdfSignatureDictionaryEntries, PdfSignatureSubType, RevocationInfo } from '../types';
|
|
3
|
+
import { PdfHexadecimal } from '../../core/objects/pdf-hexadecimal';
|
|
4
|
+
import { PdfIndirectObject } from '../../core/objects/pdf-indirect-object';
|
|
5
|
+
import { ByteArray } from '../../types';
|
|
6
|
+
/**
|
|
7
|
+
* PDF signature dictionary containing all signature-related entries.
|
|
8
|
+
* Manages the ByteRange and Contents fields with appropriate placeholder sizing.
|
|
9
|
+
*/
|
|
10
|
+
export declare class PdfSignatureDictionary extends PdfDictionary<PdfSignatureDictionaryEntries> {
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new signature dictionary.
|
|
13
|
+
*
|
|
14
|
+
* @param entries - The signature dictionary entries, ByteRange and Contents are auto-populated if not provided.
|
|
15
|
+
*/
|
|
16
|
+
constructor(entries: Omit<PdfSignatureDictionaryEntries, 'ByteRange' | 'Contents'> & {
|
|
17
|
+
ByteRange?: PdfSignatureDictionaryEntries['ByteRange'];
|
|
18
|
+
Contents?: PdfSignatureDictionaryEntries['Contents'];
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Options for signature metadata.
|
|
23
|
+
*/
|
|
24
|
+
export type PdfSignatureSignOptions = {
|
|
25
|
+
/** Signing date. */
|
|
26
|
+
date?: Date;
|
|
27
|
+
/** Signer name. */
|
|
28
|
+
name?: string;
|
|
29
|
+
/** Reason for signing. */
|
|
30
|
+
reason?: string;
|
|
31
|
+
/** Contact information. */
|
|
32
|
+
contactInfo?: string;
|
|
33
|
+
/** Signing location. */
|
|
34
|
+
location?: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Abstract base class for PDF signature objects.
|
|
38
|
+
* Subclasses implement specific signature formats (PKCS#7, CAdES, etc.).
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const signature = new PdfAdbePkcs7DetachedSignatureObject({
|
|
43
|
+
* privateKey,
|
|
44
|
+
* certificate,
|
|
45
|
+
* reason: 'Approval'
|
|
46
|
+
* })
|
|
47
|
+
* document.add(signature)
|
|
48
|
+
* await document.commit()
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare abstract class PdfSignatureObject extends PdfIndirectObject<PdfSignatureDictionary> {
|
|
52
|
+
/**
|
|
53
|
+
* Creates a new signature object.
|
|
54
|
+
*
|
|
55
|
+
* @param content - Either a signature dictionary or options to create one.
|
|
56
|
+
*/
|
|
57
|
+
constructor(content: PdfSignatureDictionary | (PdfSignatureSignOptions & {
|
|
58
|
+
subfilter: PdfSignatureSubType;
|
|
59
|
+
certs?: ByteArray[];
|
|
60
|
+
}));
|
|
61
|
+
/**
|
|
62
|
+
* Signs the document bytes and returns the signature.
|
|
63
|
+
*
|
|
64
|
+
* @param options - Signing options including bytes to sign.
|
|
65
|
+
* @returns The signed bytes and optional revocation information.
|
|
66
|
+
*/
|
|
67
|
+
abstract sign(options: {
|
|
68
|
+
bytes: ByteArray;
|
|
69
|
+
embedRevocationInfo?: boolean;
|
|
70
|
+
}): Promise<{
|
|
71
|
+
signedBytes: ByteArray;
|
|
72
|
+
revocationInfo?: RevocationInfo;
|
|
73
|
+
}>;
|
|
74
|
+
/**
|
|
75
|
+
* Gets the signature hexadecimal content.
|
|
76
|
+
*
|
|
77
|
+
* @returns The Contents entry as hexadecimal.
|
|
78
|
+
* @throws Error if Contents entry is missing.
|
|
79
|
+
*/
|
|
80
|
+
get signedHexadecimal(): PdfHexadecimal;
|
|
81
|
+
/**
|
|
82
|
+
* Gets the raw signature bytes.
|
|
83
|
+
*
|
|
84
|
+
* @returns The signature bytes.
|
|
85
|
+
*/
|
|
86
|
+
get signedBytes(): ByteArray;
|
|
87
|
+
/**
|
|
88
|
+
* Sets the signed bytes in the signature dictionary.
|
|
89
|
+
*
|
|
90
|
+
* @param signedBytes - The signature bytes to set.
|
|
91
|
+
* @throws Error if Contents entry is missing.
|
|
92
|
+
*/
|
|
93
|
+
setSignedBytes(signedBytes: ByteArray): void;
|
|
94
|
+
/**
|
|
95
|
+
* Sets the byte range array for the signature.
|
|
96
|
+
*
|
|
97
|
+
* @param byteRange - Array of [offset1, length1, offset2, length2].
|
|
98
|
+
* @throws Error if ByteRange entry is missing.
|
|
99
|
+
*/
|
|
100
|
+
setByteRange(byteRange: number[]): void;
|
|
101
|
+
/**
|
|
102
|
+
* Gets the insertion order for this object in the PDF.
|
|
103
|
+
*
|
|
104
|
+
* @returns High order value to place signature near end of document.
|
|
105
|
+
*/
|
|
106
|
+
order(): number;
|
|
107
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { stringToBytes } from '../../utils/stringToBytes';
|
|
2
|
+
import { padBytes } from '../../utils/padBytes';
|
|
3
|
+
import { PdfDictionary } from '../../core/objects/pdf-dictionary';
|
|
4
|
+
import { bytesToHexBytes } from '../../utils/bytesToHexBytes';
|
|
5
|
+
import { PdfArray } from '../../core/objects/pdf-array';
|
|
6
|
+
import { PdfNumber } from '../../core/objects/pdf-number';
|
|
7
|
+
import { PdfHexadecimal } from '../../core/objects/pdf-hexadecimal';
|
|
8
|
+
import { PdfIndirectObject } from '../../core/objects/pdf-indirect-object';
|
|
9
|
+
import { PdfName } from '../../core/objects/pdf-name';
|
|
10
|
+
import { PdfString } from '../../core/objects/pdf-string';
|
|
11
|
+
import { PdfDate } from '../../core/objects/pdf-date';
|
|
12
|
+
const PLACEHOLDER_BYTES = stringToBytes('placeholder_signature_bytes');
|
|
13
|
+
const PADDING = 8192 * 4;
|
|
14
|
+
const OFFSET_PADDING = 12;
|
|
15
|
+
const PLACEHOLDER_HEX_BYTES = padBytes(bytesToHexBytes(PLACEHOLDER_BYTES), PADDING);
|
|
16
|
+
/**
|
|
17
|
+
* PDF signature dictionary containing all signature-related entries.
|
|
18
|
+
* Manages the ByteRange and Contents fields with appropriate placeholder sizing.
|
|
19
|
+
*/
|
|
20
|
+
export class PdfSignatureDictionary extends PdfDictionary {
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new signature dictionary.
|
|
23
|
+
*
|
|
24
|
+
* @param entries - The signature dictionary entries, ByteRange and Contents are auto-populated if not provided.
|
|
25
|
+
*/
|
|
26
|
+
constructor(entries) {
|
|
27
|
+
super({
|
|
28
|
+
...entries,
|
|
29
|
+
ByteRange: entries.ByteRange ??
|
|
30
|
+
new PdfArray([
|
|
31
|
+
new PdfNumber({ value: 0, padTo: OFFSET_PADDING }),
|
|
32
|
+
new PdfNumber({ value: 0, padTo: OFFSET_PADDING }),
|
|
33
|
+
new PdfNumber({ value: 0, padTo: OFFSET_PADDING }),
|
|
34
|
+
new PdfNumber({ value: 0, padTo: OFFSET_PADDING }),
|
|
35
|
+
]),
|
|
36
|
+
Contents: entries.Contents ?? new PdfHexadecimal(PLACEHOLDER_HEX_BYTES),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Abstract base class for PDF signature objects.
|
|
42
|
+
* Subclasses implement specific signature formats (PKCS#7, CAdES, etc.).
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const signature = new PdfAdbePkcs7DetachedSignatureObject({
|
|
47
|
+
* privateKey,
|
|
48
|
+
* certificate,
|
|
49
|
+
* reason: 'Approval'
|
|
50
|
+
* })
|
|
51
|
+
* document.add(signature)
|
|
52
|
+
* await document.commit()
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export class PdfSignatureObject extends PdfIndirectObject {
|
|
56
|
+
/**
|
|
57
|
+
* Creates a new signature object.
|
|
58
|
+
*
|
|
59
|
+
* @param content - Either a signature dictionary or options to create one.
|
|
60
|
+
*/
|
|
61
|
+
constructor(content) {
|
|
62
|
+
super(content instanceof PdfSignatureDictionary
|
|
63
|
+
? content
|
|
64
|
+
: new PdfSignatureDictionary({
|
|
65
|
+
Type: new PdfName('Sig'),
|
|
66
|
+
Filter: new PdfName('Adobe.PPKLite'),
|
|
67
|
+
SubFilter: new PdfName(content.subfilter),
|
|
68
|
+
Reason: content.reason
|
|
69
|
+
? new PdfString(content.reason)
|
|
70
|
+
: undefined,
|
|
71
|
+
ContactInfo: content.contactInfo
|
|
72
|
+
? new PdfString(content.contactInfo)
|
|
73
|
+
: undefined,
|
|
74
|
+
Location: content.location
|
|
75
|
+
? new PdfString(content.location)
|
|
76
|
+
: undefined,
|
|
77
|
+
M: content.date ? new PdfDate(content.date) : undefined,
|
|
78
|
+
Name: content.name
|
|
79
|
+
? new PdfString(content.name)
|
|
80
|
+
: undefined,
|
|
81
|
+
Cert: content.certs
|
|
82
|
+
? new PdfArray(content.certs.map((cert) => new PdfHexadecimal(cert, 'bytes')))
|
|
83
|
+
: undefined,
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Gets the signature hexadecimal content.
|
|
88
|
+
*
|
|
89
|
+
* @returns The Contents entry as hexadecimal.
|
|
90
|
+
* @throws Error if Contents entry is missing.
|
|
91
|
+
*/
|
|
92
|
+
get signedHexadecimal() {
|
|
93
|
+
const contents = this.content.get('Contents');
|
|
94
|
+
if (!contents) {
|
|
95
|
+
throw new Error('Signature dictionary is missing Contents entry');
|
|
96
|
+
}
|
|
97
|
+
return contents;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Gets the raw signature bytes.
|
|
101
|
+
*
|
|
102
|
+
* @returns The signature bytes.
|
|
103
|
+
*/
|
|
104
|
+
get signedBytes() {
|
|
105
|
+
return this.signedHexadecimal.bytes;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Sets the signed bytes in the signature dictionary.
|
|
109
|
+
*
|
|
110
|
+
* @param signedBytes - The signature bytes to set.
|
|
111
|
+
* @throws Error if Contents entry is missing.
|
|
112
|
+
*/
|
|
113
|
+
setSignedBytes(signedBytes) {
|
|
114
|
+
const contents = this.content.get('Contents');
|
|
115
|
+
if (!contents) {
|
|
116
|
+
throw new Error('Signature dictionary is missing Contents entry');
|
|
117
|
+
}
|
|
118
|
+
const newHexadecimal = PdfHexadecimal.toHexadecimal(padBytes(signedBytes, contents.bytes.length));
|
|
119
|
+
this.content.set('Contents', newHexadecimal);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Sets the byte range array for the signature.
|
|
123
|
+
*
|
|
124
|
+
* @param byteRange - Array of [offset1, length1, offset2, length2].
|
|
125
|
+
* @throws Error if ByteRange entry is missing.
|
|
126
|
+
*/
|
|
127
|
+
setByteRange(byteRange) {
|
|
128
|
+
const byteRangeEntry = this.content.get('ByteRange');
|
|
129
|
+
if (!byteRangeEntry) {
|
|
130
|
+
throw new Error('Signature dictionary is missing ByteRange entry');
|
|
131
|
+
}
|
|
132
|
+
this.content.set('ByteRange', new PdfArray(byteRange.map((x) => new PdfNumber({
|
|
133
|
+
value: x,
|
|
134
|
+
padTo: OFFSET_PADDING,
|
|
135
|
+
}))));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Gets the insertion order for this object in the PDF.
|
|
139
|
+
*
|
|
140
|
+
* @returns High order value to place signature near end of document.
|
|
141
|
+
*/
|
|
142
|
+
order() {
|
|
143
|
+
return PdfIndirectObject.MAX_ORDER_INDEX - 10;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { SignaturePolicyDocument, RevocationInfo, TimeStampAuthority } from '../types';
|
|
2
|
+
import { AsymmetricEncryptionAlgorithmParams } from 'pki-lite/core/index';
|
|
3
|
+
import { PdfSignatureObject, PdfSignatureSignOptions } from './base';
|
|
4
|
+
import { ByteArray } from '../../types';
|
|
5
|
+
/**
|
|
6
|
+
* ETSI CAdES detached signature object (ETSI.CAdES.detached).
|
|
7
|
+
* Creates CAdES-compliant signatures with enhanced attributes.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const signature = new PdfEtsiCadesDetachedSignatureObject({
|
|
12
|
+
* privateKey: keyBytes,
|
|
13
|
+
* certificate: certBytes,
|
|
14
|
+
* reason: 'Approval',
|
|
15
|
+
* timeStampAuthority: true
|
|
16
|
+
* })
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare class PdfEtsiCadesDetachedSignatureObject extends PdfSignatureObject {
|
|
20
|
+
/** Private key for signing. */
|
|
21
|
+
privateKey: ByteArray;
|
|
22
|
+
/** Signer certificate. */
|
|
23
|
+
certificate: ByteArray;
|
|
24
|
+
/** Additional certificates for chain building. */
|
|
25
|
+
additionalCertificates: ByteArray[];
|
|
26
|
+
/** Issuer certificate for OCSP requests. */
|
|
27
|
+
issuerCertificate?: ByteArray;
|
|
28
|
+
/** Signing date. */
|
|
29
|
+
date?: Date;
|
|
30
|
+
/** Reason for signing. */
|
|
31
|
+
reason?: string;
|
|
32
|
+
/** Signing location. */
|
|
33
|
+
location?: string;
|
|
34
|
+
/** Signature algorithm parameters. */
|
|
35
|
+
algorithm?: AsymmetricEncryptionAlgorithmParams;
|
|
36
|
+
/** Revocation information or 'fetch' to retrieve automatically. */
|
|
37
|
+
revocationInfo?: RevocationInfo | 'fetch';
|
|
38
|
+
/** Timestamp authority configuration. */
|
|
39
|
+
timeStampAuthority?: TimeStampAuthority;
|
|
40
|
+
/** Signature policy document reference. */
|
|
41
|
+
policyDocument?: SignaturePolicyDocument;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new CAdES detached signature object.
|
|
44
|
+
*
|
|
45
|
+
* @param options - Signature configuration options.
|
|
46
|
+
*/
|
|
47
|
+
constructor(options: PdfSignatureSignOptions & {
|
|
48
|
+
privateKey: ByteArray;
|
|
49
|
+
certificate: ByteArray;
|
|
50
|
+
issuerCertificate?: ByteArray;
|
|
51
|
+
additionalCertificates?: ByteArray[];
|
|
52
|
+
algorithm?: AsymmetricEncryptionAlgorithmParams;
|
|
53
|
+
revocationInfo?: RevocationInfo | 'fetch';
|
|
54
|
+
timeStampAuthority?: TimeStampAuthority | true;
|
|
55
|
+
policyDocument?: SignaturePolicyDocument;
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Signs the document bytes using CAdES detached format.
|
|
59
|
+
*
|
|
60
|
+
* @param options - Signing options with bytes and revocation embedding flag.
|
|
61
|
+
* @returns The CMS SignedData and revocation information.
|
|
62
|
+
*/
|
|
63
|
+
sign: PdfSignatureObject['sign'];
|
|
64
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { SignedData } from 'pki-lite/pkcs7/SignedData';
|
|
2
|
+
import { Certificate } from 'pki-lite/x509/Certificate';
|
|
3
|
+
import { SignerInfo } from 'pki-lite/pkcs7/SignerInfo';
|
|
4
|
+
import { Attribute } from 'pki-lite/x509/Attribute';
|
|
5
|
+
import { RevocationInfoArchival } from 'pki-lite/adobe/RevocationInfoArchival';
|
|
6
|
+
import { CertificateList } from 'pki-lite/x509/CertificateList';
|
|
7
|
+
import { OCSPResponse } from 'pki-lite/ocsp/OCSPResponse';
|
|
8
|
+
import { PrivateKeyInfo } from 'pki-lite/keys/PrivateKeyInfo';
|
|
9
|
+
import { OtherRevInfo } from 'pki-lite/adobe/OtherRevInfo';
|
|
10
|
+
import { PdfName } from '../../core/objects/pdf-name';
|
|
11
|
+
import { fetchRevocationInfo } from '../utils';
|
|
12
|
+
import { PdfString } from '../../core/objects/pdf-string';
|
|
13
|
+
import { PdfDate } from '../../core/objects/pdf-date';
|
|
14
|
+
import { PdfSignatureDictionary, PdfSignatureObject, } from './base';
|
|
15
|
+
import { SigningCertificateV2 } from 'pki-lite/x509/attributes/SigningCertificateV2';
|
|
16
|
+
import { OtherHashAlgAndValue, SignaturePolicyId, } from 'pki-lite/x509/attributes/SignaturePolicyIdentifier';
|
|
17
|
+
import { DigestAlgorithmIdentifier } from 'pki-lite/algorithms/AlgorithmIdentifier';
|
|
18
|
+
/**
|
|
19
|
+
* ETSI CAdES detached signature object (ETSI.CAdES.detached).
|
|
20
|
+
* Creates CAdES-compliant signatures with enhanced attributes.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const signature = new PdfEtsiCadesDetachedSignatureObject({
|
|
25
|
+
* privateKey: keyBytes,
|
|
26
|
+
* certificate: certBytes,
|
|
27
|
+
* reason: 'Approval',
|
|
28
|
+
* timeStampAuthority: true
|
|
29
|
+
* })
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export class PdfEtsiCadesDetachedSignatureObject extends PdfSignatureObject {
|
|
33
|
+
/** Private key for signing. */
|
|
34
|
+
privateKey;
|
|
35
|
+
/** Signer certificate. */
|
|
36
|
+
certificate;
|
|
37
|
+
/** Additional certificates for chain building. */
|
|
38
|
+
additionalCertificates;
|
|
39
|
+
/** Issuer certificate for OCSP requests. */
|
|
40
|
+
issuerCertificate;
|
|
41
|
+
/** Signing date. */
|
|
42
|
+
date;
|
|
43
|
+
/** Reason for signing. */
|
|
44
|
+
reason;
|
|
45
|
+
/** Signing location. */
|
|
46
|
+
location;
|
|
47
|
+
/** Signature algorithm parameters. */
|
|
48
|
+
algorithm;
|
|
49
|
+
/** Revocation information or 'fetch' to retrieve automatically. */
|
|
50
|
+
revocationInfo;
|
|
51
|
+
/** Timestamp authority configuration. */
|
|
52
|
+
timeStampAuthority;
|
|
53
|
+
/** Signature policy document reference. */
|
|
54
|
+
policyDocument;
|
|
55
|
+
/**
|
|
56
|
+
* Creates a new CAdES detached signature object.
|
|
57
|
+
*
|
|
58
|
+
* @param options - Signature configuration options.
|
|
59
|
+
*/
|
|
60
|
+
constructor(options) {
|
|
61
|
+
super(new PdfSignatureDictionary({
|
|
62
|
+
Type: new PdfName('Sig'),
|
|
63
|
+
Filter: new PdfName('Adobe.PPKLite'),
|
|
64
|
+
SubFilter: new PdfName('ETSI.CAdES.detached'),
|
|
65
|
+
ContactInfo: options.contactInfo
|
|
66
|
+
? new PdfString(options.contactInfo)
|
|
67
|
+
: undefined,
|
|
68
|
+
M: options.date ? new PdfDate(options.date) : undefined,
|
|
69
|
+
Name: options.name ? new PdfString(options.name) : undefined,
|
|
70
|
+
}));
|
|
71
|
+
this.privateKey = options.privateKey;
|
|
72
|
+
this.certificate = options.certificate;
|
|
73
|
+
this.issuerCertificate = options.issuerCertificate;
|
|
74
|
+
this.additionalCertificates = options.additionalCertificates || [];
|
|
75
|
+
this.date = options.date;
|
|
76
|
+
this.reason = options.reason;
|
|
77
|
+
this.location = options.location;
|
|
78
|
+
this.algorithm = options.algorithm;
|
|
79
|
+
this.revocationInfo = options.revocationInfo;
|
|
80
|
+
this.timeStampAuthority =
|
|
81
|
+
options.timeStampAuthority === true
|
|
82
|
+
? {
|
|
83
|
+
url: 'https://freetsa.org/tsr',
|
|
84
|
+
}
|
|
85
|
+
: options.timeStampAuthority;
|
|
86
|
+
this.policyDocument = options.policyDocument;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Signs the document bytes using CAdES detached format.
|
|
90
|
+
*
|
|
91
|
+
* @param options - Signing options with bytes and revocation embedding flag.
|
|
92
|
+
* @returns The CMS SignedData and revocation information.
|
|
93
|
+
*/
|
|
94
|
+
sign = async (options) => {
|
|
95
|
+
const { bytes } = options;
|
|
96
|
+
const certificate = Certificate.fromDer(this.certificate);
|
|
97
|
+
const additionalCertificates = this.additionalCertificates.map(Certificate.fromDer);
|
|
98
|
+
const signedAttributes = new SignerInfo.SignedAttributes();
|
|
99
|
+
const unsignedAttributes = new SignerInfo.UnsignedAttributes();
|
|
100
|
+
signedAttributes.push(Attribute.signingCertificateV2(await SigningCertificateV2.fromCertificates({
|
|
101
|
+
certificates: [certificate, ...additionalCertificates],
|
|
102
|
+
})));
|
|
103
|
+
signedAttributes.push(Attribute.signingTime(this.date ?? new Date()));
|
|
104
|
+
if (this.reason) {
|
|
105
|
+
signedAttributes.push(Attribute.commitmentTypeIndication(this.reason));
|
|
106
|
+
}
|
|
107
|
+
if (this.location) {
|
|
108
|
+
signedAttributes.push(Attribute.signingLocation({
|
|
109
|
+
localityName: this.location,
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
if (this.policyDocument) {
|
|
113
|
+
signedAttributes.push(Attribute.signaturePolicyIdentifier(new SignaturePolicyId({
|
|
114
|
+
sigPolicyId: this.policyDocument.oid,
|
|
115
|
+
sigPolicyHash: new OtherHashAlgAndValue({
|
|
116
|
+
hashAlgorithm: DigestAlgorithmIdentifier.digestAlgorithm(this.policyDocument.hashAlgorithm),
|
|
117
|
+
hashValue: this.policyDocument.hash,
|
|
118
|
+
}),
|
|
119
|
+
sigPolicyQualifiers: [],
|
|
120
|
+
})));
|
|
121
|
+
}
|
|
122
|
+
const revocationInfo = this.revocationInfo === 'fetch'
|
|
123
|
+
? await fetchRevocationInfo({
|
|
124
|
+
certificates: [
|
|
125
|
+
this.certificate,
|
|
126
|
+
...(this.additionalCertificates ?? []),
|
|
127
|
+
],
|
|
128
|
+
issuerCertificate: this.issuerCertificate,
|
|
129
|
+
})
|
|
130
|
+
: this.revocationInfo;
|
|
131
|
+
if (options.embedRevocationInfo && revocationInfo) {
|
|
132
|
+
signedAttributes.push(Attribute.adobeRevocationInfoArchival(new RevocationInfoArchival({
|
|
133
|
+
crls: revocationInfo.crls?.map((x) => CertificateList.fromDer(x)),
|
|
134
|
+
ocsps: revocationInfo.ocsps?.map((x) => OCSPResponse.fromDer(x)),
|
|
135
|
+
otherRevInfo: revocationInfo.otherRevInfo?.map((x) => new OtherRevInfo({
|
|
136
|
+
type: x.type,
|
|
137
|
+
value: x.value,
|
|
138
|
+
})),
|
|
139
|
+
})));
|
|
140
|
+
}
|
|
141
|
+
const signedData = await SignedData.builder()
|
|
142
|
+
.addCertificate(...additionalCertificates)
|
|
143
|
+
.setData(bytes)
|
|
144
|
+
.setDetached(true)
|
|
145
|
+
.addSigner({
|
|
146
|
+
certificate,
|
|
147
|
+
privateKeyInfo: PrivateKeyInfo.fromDer(this.privateKey),
|
|
148
|
+
signedAttrs: signedAttributes,
|
|
149
|
+
unsignedAttrs: unsignedAttributes,
|
|
150
|
+
tsa: this.timeStampAuthority,
|
|
151
|
+
encryptionAlgorithm: this.algorithm,
|
|
152
|
+
})
|
|
153
|
+
.build();
|
|
154
|
+
return {
|
|
155
|
+
signedBytes: signedData.toCms().toDer(),
|
|
156
|
+
revocationInfo,
|
|
157
|
+
};
|
|
158
|
+
};
|
|
159
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { TimeStampAuthority } from '../types';
|
|
2
|
+
import { PdfSignatureObject, PdfSignatureSignOptions } from './base';
|
|
3
|
+
/**
|
|
4
|
+
* RFC 3161 timestamp signature object (ETSI.RFC3161).
|
|
5
|
+
* Creates document timestamps using a Time Stamp Authority (TSA).
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const timestamp = new PdfEtsiRfc3161SignatureObject({
|
|
10
|
+
* timeStampAuthority: { url: 'http://timestamp.example.com' }
|
|
11
|
+
* })
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare class PdfEtsiRfc3161SignatureObject extends PdfSignatureObject {
|
|
15
|
+
/** Timestamp authority configuration. */
|
|
16
|
+
timeStampAuthority: TimeStampAuthority;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new RFC 3161 timestamp signature object.
|
|
19
|
+
*
|
|
20
|
+
* @param options - Configuration including optional TSA settings.
|
|
21
|
+
*/
|
|
22
|
+
constructor(options: PdfSignatureSignOptions & {
|
|
23
|
+
timeStampAuthority?: TimeStampAuthority;
|
|
24
|
+
name?: string;
|
|
25
|
+
reason?: string;
|
|
26
|
+
contactInfo?: string;
|
|
27
|
+
location?: string;
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* Creates a timestamp for the document bytes.
|
|
31
|
+
*
|
|
32
|
+
* @param options - Signing options with bytes to timestamp.
|
|
33
|
+
* @returns The timestamp token and revocation information.
|
|
34
|
+
* @throws Error if no timestamp token is received.
|
|
35
|
+
*/
|
|
36
|
+
sign: PdfSignatureObject['sign'];
|
|
37
|
+
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { fetchRevocationInfo } from '../utils'
|
|
8
|
-
|
|
1
|
+
import { PdfSignatureObject } from './base';
|
|
2
|
+
import { DigestAlgorithmIdentifier } from 'pki-lite/algorithms/AlgorithmIdentifier';
|
|
3
|
+
import { TimeStampReq } from 'pki-lite/timestamp/TimeStampReq';
|
|
4
|
+
import { MessageImprint } from 'pki-lite/timestamp/MessageImprint';
|
|
5
|
+
import { SignedData } from 'pki-lite/pkcs7/SignedData';
|
|
6
|
+
import { fetchRevocationInfo } from '../utils';
|
|
9
7
|
/**
|
|
10
8
|
* RFC 3161 timestamp signature object (ETSI.RFC3161).
|
|
11
9
|
* Creates document timestamps using a Time Stamp Authority (TSA).
|
|
@@ -19,32 +17,21 @@ import { fetchRevocationInfo } from '../utils'
|
|
|
19
17
|
*/
|
|
20
18
|
export class PdfEtsiRfc3161SignatureObject extends PdfSignatureObject {
|
|
21
19
|
/** Timestamp authority configuration. */
|
|
22
|
-
timeStampAuthority
|
|
23
|
-
|
|
20
|
+
timeStampAuthority;
|
|
24
21
|
/**
|
|
25
22
|
* Creates a new RFC 3161 timestamp signature object.
|
|
26
23
|
*
|
|
27
24
|
* @param options - Configuration including optional TSA settings.
|
|
28
25
|
*/
|
|
29
|
-
constructor(
|
|
30
|
-
options: PdfSignatureSignOptions & {
|
|
31
|
-
timeStampAuthority?: TimeStampAuthority
|
|
32
|
-
name?: string
|
|
33
|
-
reason?: string
|
|
34
|
-
contactInfo?: string
|
|
35
|
-
location?: string
|
|
36
|
-
},
|
|
37
|
-
) {
|
|
26
|
+
constructor(options) {
|
|
38
27
|
super({
|
|
39
28
|
...options,
|
|
40
29
|
subfilter: 'ETSI.RFC3161',
|
|
41
|
-
})
|
|
42
|
-
|
|
30
|
+
});
|
|
43
31
|
this.timeStampAuthority = options.timeStampAuthority ?? {
|
|
44
32
|
url: 'https://freetsa.org/tsr',
|
|
45
|
-
}
|
|
33
|
+
};
|
|
46
34
|
}
|
|
47
|
-
|
|
48
35
|
/**
|
|
49
36
|
* Creates a timestamp for the document bytes.
|
|
50
37
|
*
|
|
@@ -52,12 +39,9 @@ export class PdfEtsiRfc3161SignatureObject extends PdfSignatureObject {
|
|
|
52
39
|
* @returns The timestamp token and revocation information.
|
|
53
40
|
* @throws Error if no timestamp token is received.
|
|
54
41
|
*/
|
|
55
|
-
sign
|
|
56
|
-
const { bytes } = options
|
|
57
|
-
|
|
58
|
-
const digestAlgorithm =
|
|
59
|
-
DigestAlgorithmIdentifier.digestAlgorithm('SHA-512')
|
|
60
|
-
|
|
42
|
+
sign = async (options) => {
|
|
43
|
+
const { bytes } = options;
|
|
44
|
+
const digestAlgorithm = DigestAlgorithmIdentifier.digestAlgorithm('SHA-512');
|
|
61
45
|
const timestampResponse = await TimeStampReq.create({
|
|
62
46
|
messageImprint: new MessageImprint({
|
|
63
47
|
hashAlgorithm: digestAlgorithm,
|
|
@@ -68,25 +52,19 @@ export class PdfEtsiRfc3161SignatureObject extends PdfSignatureObject {
|
|
|
68
52
|
url: this.timeStampAuthority.url,
|
|
69
53
|
username: this.timeStampAuthority.username,
|
|
70
54
|
password: this.timeStampAuthority.password,
|
|
71
|
-
})
|
|
72
|
-
|
|
55
|
+
});
|
|
73
56
|
if (!timestampResponse.timeStampToken) {
|
|
74
|
-
throw new Error(
|
|
75
|
-
|
|
76
|
-
timestampResponse.status,
|
|
77
|
-
)
|
|
57
|
+
throw new Error('No timestamp token received. Response: ' +
|
|
58
|
+
timestampResponse.status);
|
|
78
59
|
}
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
const signerCerts = SignedData.fromCms(signatureBytes).certificates
|
|
60
|
+
const signatureBytes = timestampResponse.timeStampToken.toDer();
|
|
61
|
+
const signerCerts = SignedData.fromCms(signatureBytes).certificates;
|
|
83
62
|
const revocationInfo = await fetchRevocationInfo({
|
|
84
63
|
certificates: signerCerts?.map((c) => c.toDer()) ?? [],
|
|
85
|
-
})
|
|
86
|
-
|
|
64
|
+
});
|
|
87
65
|
return {
|
|
88
66
|
signedBytes: signatureBytes,
|
|
89
67
|
revocationInfo,
|
|
90
|
-
}
|
|
91
|
-
}
|
|
68
|
+
};
|
|
69
|
+
};
|
|
92
70
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { PdfDocument } from '../pdf/pdf-document';
|
|
2
|
+
/**
|
|
3
|
+
* Handles digital signing operations for PDF documents.
|
|
4
|
+
* Processes signature objects and optionally stores revocation information in the DSS.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const signer = new PdfSigner()
|
|
9
|
+
* const signedDoc = await signer.sign(document)
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export declare class PdfSigner {
|
|
13
|
+
/** Whether to use the Document Security Store for revocation information. */
|
|
14
|
+
useDocumentSecurityStore: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Signs all signature objects in the document.
|
|
17
|
+
* Computes byte ranges, generates signatures, and optionally adds revocation info to DSS.
|
|
18
|
+
*
|
|
19
|
+
* @param document - The PDF document to sign.
|
|
20
|
+
* @returns The signed document.
|
|
21
|
+
*/
|
|
22
|
+
sign(document: PdfDocument): Promise<PdfDocument>;
|
|
23
|
+
}
|