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,121 @@
|
|
|
1
|
+
import { Cipher } from '../../crypto/types';
|
|
2
|
+
import { ByteArray } from '../../types';
|
|
3
|
+
import { PdfCryptFilter } from '../crypt-filters/base';
|
|
4
|
+
import { CryptFilterType, PdfEncryptionAlgorithmType, PdfEncryptionDictionary } from '../types';
|
|
5
|
+
import { PdfStandardSecurityHandlerOptions } from './base';
|
|
6
|
+
import { PdfV2SecurityHandler } from './v2';
|
|
7
|
+
/**
|
|
8
|
+
* V4 security handler implementing AES-128-CBC encryption with crypt filters.
|
|
9
|
+
* Supports different encryption methods for strings, streams, and embedded files (PDF 1.5).
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const handler = new PdfV4SecurityHandler({
|
|
14
|
+
* password: 'user123',
|
|
15
|
+
* ownerPassword: 'admin456'
|
|
16
|
+
* })
|
|
17
|
+
* handler.setCryptFilter('StmFilter', new AesV2CryptFilter({ authEvent: 'DocOpen' }))
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare class PdfV4SecurityHandler extends PdfV2SecurityHandler {
|
|
21
|
+
/** Map of named crypt filters. */
|
|
22
|
+
protected cryptFilters: Map<string, PdfCryptFilter>;
|
|
23
|
+
/** Mapping of content types to crypt filter names. */
|
|
24
|
+
protected cryptFiltersByType: {
|
|
25
|
+
[key in CryptFilterType]?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Creates a new V4 security handler with AES-128 encryption.
|
|
29
|
+
*
|
|
30
|
+
* @param options - Configuration options for the handler.
|
|
31
|
+
*/
|
|
32
|
+
constructor(options: PdfStandardSecurityHandlerOptions);
|
|
33
|
+
/**
|
|
34
|
+
* Gets a crypt filter by name.
|
|
35
|
+
*
|
|
36
|
+
* @param name - The crypt filter name.
|
|
37
|
+
* @returns The crypt filter, or undefined if not found.
|
|
38
|
+
*/
|
|
39
|
+
getCryptFilter(name: string): PdfCryptFilter | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Gets the crypt filter assigned to a content type.
|
|
42
|
+
*
|
|
43
|
+
* @param type - The content type ('string', 'stream', or 'file').
|
|
44
|
+
* @returns The assigned crypt filter, or null if none.
|
|
45
|
+
*/
|
|
46
|
+
getCryptFilterByType(type: CryptFilterType): PdfCryptFilter | null;
|
|
47
|
+
/**
|
|
48
|
+
* Assigns a crypt filter to a content type.
|
|
49
|
+
*
|
|
50
|
+
* @param type - The content type.
|
|
51
|
+
* @param name - The crypt filter name.
|
|
52
|
+
*/
|
|
53
|
+
setCryptFilterForType(type: CryptFilterType, name: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Registers a named crypt filter.
|
|
56
|
+
*
|
|
57
|
+
* @param name - The filter name.
|
|
58
|
+
* @param filter - The crypt filter instance.
|
|
59
|
+
*/
|
|
60
|
+
setCryptFilter(name: string, filter: PdfCryptFilter): void;
|
|
61
|
+
/**
|
|
62
|
+
* Gets the encryption revision number.
|
|
63
|
+
*
|
|
64
|
+
* @returns 4 for V4 encryption.
|
|
65
|
+
*/
|
|
66
|
+
getRevision(): number;
|
|
67
|
+
/**
|
|
68
|
+
* Gets the encryption version number.
|
|
69
|
+
*
|
|
70
|
+
* @returns 4 for crypt filter-based encryption.
|
|
71
|
+
*/
|
|
72
|
+
getVersion(): number;
|
|
73
|
+
/**
|
|
74
|
+
* Computes the object-specific encryption key.
|
|
75
|
+
*
|
|
76
|
+
* @param objectNumber - The PDF object number.
|
|
77
|
+
* @param generationNumber - The PDF generation number.
|
|
78
|
+
* @param algorithm - Optional algorithm type for key derivation.
|
|
79
|
+
* @returns The computed object key.
|
|
80
|
+
* @throws Error if object or generation number is invalid.
|
|
81
|
+
*/
|
|
82
|
+
computeObjectKey(objectNumber?: number, generationNumber?: number, algorithm?: PdfEncryptionAlgorithmType): Promise<ByteArray>;
|
|
83
|
+
/**
|
|
84
|
+
* Gets an AES-128 cipher for the specified object.
|
|
85
|
+
*
|
|
86
|
+
* @param objectNumber - The PDF object number.
|
|
87
|
+
* @param generationNumber - The PDF generation number.
|
|
88
|
+
* @returns An AES-128 cipher instance.
|
|
89
|
+
*/
|
|
90
|
+
protected getCipher(objectNumber?: number, generationNumber?: number): Promise<Cipher>;
|
|
91
|
+
/**
|
|
92
|
+
* Reads encryption parameters and crypt filter definitions from the dictionary.
|
|
93
|
+
*
|
|
94
|
+
* @param encryptionDictionary - The encryption dictionary from the PDF.
|
|
95
|
+
*/
|
|
96
|
+
readEncryptionDictionary(encryptionDictionary: PdfEncryptionDictionary): void;
|
|
97
|
+
/**
|
|
98
|
+
* Writes the encryption dictionary including crypt filter definitions.
|
|
99
|
+
*/
|
|
100
|
+
write(): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Encrypts data using the appropriate crypt filter for the content type.
|
|
103
|
+
*
|
|
104
|
+
* @param type - The type of content being encrypted.
|
|
105
|
+
* @param data - The data to encrypt.
|
|
106
|
+
* @param objectNumber - The PDF object number.
|
|
107
|
+
* @param generationNumber - The PDF generation number.
|
|
108
|
+
* @returns The encrypted data.
|
|
109
|
+
*/
|
|
110
|
+
encrypt(type: 'string' | 'stream' | 'file', data: ByteArray, objectNumber?: number, generationNumber?: number): Promise<ByteArray>;
|
|
111
|
+
/**
|
|
112
|
+
* Decrypts data using the appropriate crypt filter for the content type.
|
|
113
|
+
*
|
|
114
|
+
* @param type - The type of content being decrypted.
|
|
115
|
+
* @param data - The encrypted data.
|
|
116
|
+
* @param objectNumber - The PDF object number.
|
|
117
|
+
* @param generationNumber - The PDF generation number.
|
|
118
|
+
* @returns The decrypted data.
|
|
119
|
+
*/
|
|
120
|
+
decrypt(type: 'string' | 'stream' | 'file', data: ByteArray, objectNumber?: number, generationNumber?: number): Promise<ByteArray>;
|
|
121
|
+
}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { PdfDictionary } from '../../core/objects/pdf-dictionary';
|
|
2
|
+
import { PdfName } from '../../core/objects/pdf-name';
|
|
3
|
+
import { PdfNumber } from '../../core/objects/pdf-number';
|
|
4
|
+
import { aes128 } from '../../crypto/ciphers/aes128';
|
|
5
|
+
import { deriveObjectKey } from '../../crypto/key-derivation/key-derivation';
|
|
6
|
+
import { assert, assertIfDefined } from '../../utils/assert';
|
|
7
|
+
import { AesV2CryptFilter } from '../crypt-filters/aesv2';
|
|
8
|
+
import { AesV3CryptFilter } from '../crypt-filters/aesv3';
|
|
9
|
+
import { IdentityCryptFilter } from '../crypt-filters/identity';
|
|
10
|
+
import { V2CryptFilter } from '../crypt-filters/v2';
|
|
11
|
+
import { PdfV2SecurityHandler } from './v2';
|
|
12
|
+
const IDENTITY_CRYPT_FILTER = new IdentityCryptFilter({ authEvent: 'DocOpen' });
|
|
13
|
+
/**
|
|
14
|
+
* V4 security handler implementing AES-128-CBC encryption with crypt filters.
|
|
15
|
+
* Supports different encryption methods for strings, streams, and embedded files (PDF 1.5).
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const handler = new PdfV4SecurityHandler({
|
|
20
|
+
* password: 'user123',
|
|
21
|
+
* ownerPassword: 'admin456'
|
|
22
|
+
* })
|
|
23
|
+
* handler.setCryptFilter('StmFilter', new AesV2CryptFilter({ authEvent: 'DocOpen' }))
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export class PdfV4SecurityHandler extends PdfV2SecurityHandler {
|
|
27
|
+
/** Map of named crypt filters. */
|
|
28
|
+
cryptFilters = new Map([
|
|
29
|
+
['Identity', IDENTITY_CRYPT_FILTER],
|
|
30
|
+
]);
|
|
31
|
+
/** Mapping of content types to crypt filter names. */
|
|
32
|
+
cryptFiltersByType = {};
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new V4 security handler with AES-128 encryption.
|
|
35
|
+
*
|
|
36
|
+
* @param options - Configuration options for the handler.
|
|
37
|
+
*/
|
|
38
|
+
constructor(options) {
|
|
39
|
+
super(options);
|
|
40
|
+
this.setCryptFilter('StdCF', new AesV2CryptFilter({
|
|
41
|
+
authEvent: 'DocOpen',
|
|
42
|
+
}));
|
|
43
|
+
this.setCryptFilterForType('stream', 'StdCF');
|
|
44
|
+
this.setCryptFilterForType('string', 'StdCF');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Gets a crypt filter by name.
|
|
48
|
+
*
|
|
49
|
+
* @param name - The crypt filter name.
|
|
50
|
+
* @returns The crypt filter, or undefined if not found.
|
|
51
|
+
*/
|
|
52
|
+
getCryptFilter(name) {
|
|
53
|
+
return this.cryptFilters.get(name);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Gets the crypt filter assigned to a content type.
|
|
57
|
+
*
|
|
58
|
+
* @param type - The content type ('string', 'stream', or 'file').
|
|
59
|
+
* @returns The assigned crypt filter, or null if none.
|
|
60
|
+
*/
|
|
61
|
+
getCryptFilterByType(type) {
|
|
62
|
+
const name = this.cryptFiltersByType[type];
|
|
63
|
+
if (name) {
|
|
64
|
+
return this.cryptFilters.get(name) || null;
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Assigns a crypt filter to a content type.
|
|
70
|
+
*
|
|
71
|
+
* @param type - The content type.
|
|
72
|
+
* @param name - The crypt filter name.
|
|
73
|
+
*/
|
|
74
|
+
setCryptFilterForType(type, name) {
|
|
75
|
+
this.cryptFiltersByType[type] = name;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Registers a named crypt filter.
|
|
79
|
+
*
|
|
80
|
+
* @param name - The filter name.
|
|
81
|
+
* @param filter - The crypt filter instance.
|
|
82
|
+
*/
|
|
83
|
+
setCryptFilter(name, filter) {
|
|
84
|
+
filter.setSecurityHandler(this);
|
|
85
|
+
this.cryptFilters.set(name, filter);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Gets the encryption revision number.
|
|
89
|
+
*
|
|
90
|
+
* @returns 4 for V4 encryption.
|
|
91
|
+
*/
|
|
92
|
+
getRevision() {
|
|
93
|
+
return 4;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Gets the encryption version number.
|
|
97
|
+
*
|
|
98
|
+
* @returns 4 for crypt filter-based encryption.
|
|
99
|
+
*/
|
|
100
|
+
getVersion() {
|
|
101
|
+
return 4;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Computes the object-specific encryption key.
|
|
105
|
+
*
|
|
106
|
+
* @param objectNumber - The PDF object number.
|
|
107
|
+
* @param generationNumber - The PDF generation number.
|
|
108
|
+
* @param algorithm - Optional algorithm type for key derivation.
|
|
109
|
+
* @returns The computed object key.
|
|
110
|
+
* @throws Error if object or generation number is invalid.
|
|
111
|
+
*/
|
|
112
|
+
async computeObjectKey(objectNumber, generationNumber, algorithm) {
|
|
113
|
+
assert(objectNumber !== undefined, 'Object number is required to derive the key');
|
|
114
|
+
assert(generationNumber !== undefined, 'Generation number is required to derive the key');
|
|
115
|
+
assert(objectNumber > 0, 'Object number cannot be zero or negative');
|
|
116
|
+
assert(generationNumber >= 0, 'Generation number cannot be negative');
|
|
117
|
+
this.masterKey ||= await this.computeMasterKey();
|
|
118
|
+
const key = await deriveObjectKey(this.masterKey, objectNumber, generationNumber, algorithm === 'AES-128-CBC');
|
|
119
|
+
return key;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Gets an AES-128 cipher for the specified object.
|
|
123
|
+
*
|
|
124
|
+
* @param objectNumber - The PDF object number.
|
|
125
|
+
* @param generationNumber - The PDF generation number.
|
|
126
|
+
* @returns An AES-128 cipher instance.
|
|
127
|
+
*/
|
|
128
|
+
async getCipher(objectNumber, generationNumber) {
|
|
129
|
+
const key = await this.computeObjectKey(objectNumber, generationNumber);
|
|
130
|
+
return aes128(key);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Reads encryption parameters and crypt filter definitions from the dictionary.
|
|
134
|
+
*
|
|
135
|
+
* @param encryptionDictionary - The encryption dictionary from the PDF.
|
|
136
|
+
*/
|
|
137
|
+
readEncryptionDictionary(encryptionDictionary) {
|
|
138
|
+
super.readEncryptionDictionary(encryptionDictionary);
|
|
139
|
+
if (encryptionDictionary.get('CF')) {
|
|
140
|
+
const cfDict = encryptionDictionary.get('CF');
|
|
141
|
+
assert(cfDict instanceof PdfDictionary, 'CF must be a dictionary');
|
|
142
|
+
const cfEntries = cfDict.values;
|
|
143
|
+
for (const [key, cf] of Object.entries(cfEntries)) {
|
|
144
|
+
assert(cf instanceof PdfDictionary, 'Crypt filter must be a dictionary');
|
|
145
|
+
const cfm = cf.get('CFM');
|
|
146
|
+
const authEvent = cf.get('AuthEvent');
|
|
147
|
+
const length = cf.get('Length');
|
|
148
|
+
assertIfDefined(cfm, cfm instanceof PdfName, 'CFM must be a name');
|
|
149
|
+
assertIfDefined(authEvent, authEvent instanceof PdfName, 'AuthEvent must be a name');
|
|
150
|
+
assertIfDefined(length, length instanceof PdfNumber, 'Length must be a number');
|
|
151
|
+
assert(cfm, 'CFM is required in crypt filter dictionary');
|
|
152
|
+
assert(authEvent, 'AuthEvent is required in crypt filter dictionary');
|
|
153
|
+
if (cfm.value === 'None') {
|
|
154
|
+
this.setCryptFilter(key, new IdentityCryptFilter({
|
|
155
|
+
authEvent: authEvent.value,
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
else if (cfm.value === 'V2') {
|
|
159
|
+
this.setCryptFilter(key, new V2CryptFilter({
|
|
160
|
+
authEvent: authEvent.value,
|
|
161
|
+
length: length.value,
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
164
|
+
else if (cfm.value === 'AESV2') {
|
|
165
|
+
this.setCryptFilter(key, new AesV2CryptFilter({
|
|
166
|
+
authEvent: authEvent.value,
|
|
167
|
+
}));
|
|
168
|
+
}
|
|
169
|
+
else if (cfm.value === 'AESV3') {
|
|
170
|
+
this.setCryptFilter(key, new AesV3CryptFilter({
|
|
171
|
+
authEvent: authEvent.value,
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
throw new Error(`Unsupported CFM value: ${cfm.value}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (encryptionDictionary.values['StmF']) {
|
|
180
|
+
const stmF = encryptionDictionary.values['StmF'];
|
|
181
|
+
assert(stmF instanceof PdfName, 'StmF must be a name');
|
|
182
|
+
assert(this.cryptFilters.has(stmF.value), `StmF references unknown crypt filter: ${stmF.value}`);
|
|
183
|
+
this.setCryptFilterForType('stream', stmF.value);
|
|
184
|
+
}
|
|
185
|
+
if (encryptionDictionary.values['StrF']) {
|
|
186
|
+
const strF = encryptionDictionary.values['StrF'];
|
|
187
|
+
assert(strF instanceof PdfName, 'StrF must be a name');
|
|
188
|
+
assert(this.cryptFilters.has(strF.value), `StrF references unknown crypt filter: ${strF.value}`);
|
|
189
|
+
this.setCryptFilterForType('string', strF.value);
|
|
190
|
+
}
|
|
191
|
+
if (encryptionDictionary.values['EFF']) {
|
|
192
|
+
const eff = encryptionDictionary.values['EFF'];
|
|
193
|
+
assert(eff instanceof PdfName, 'EFF must be a name');
|
|
194
|
+
assert(this.cryptFilters.has(eff.value), `EFF references unknown crypt filter: ${eff.value}`);
|
|
195
|
+
this.setCryptFilterForType('file', eff.value);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Writes the encryption dictionary including crypt filter definitions.
|
|
200
|
+
*/
|
|
201
|
+
async write() {
|
|
202
|
+
await super.write();
|
|
203
|
+
const dict = this.dict;
|
|
204
|
+
const cfs = {};
|
|
205
|
+
this.cryptFilters.forEach((cf, name) => {
|
|
206
|
+
if (cf instanceof IdentityCryptFilter) {
|
|
207
|
+
// The Identity crypt filter is implicit and should not be included
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
cfs[name] = cf.toDictionary();
|
|
211
|
+
});
|
|
212
|
+
if (Object.keys(cfs).length > 0) {
|
|
213
|
+
dict.set('CF', new PdfDictionary(cfs));
|
|
214
|
+
}
|
|
215
|
+
if (this.cryptFiltersByType.stream) {
|
|
216
|
+
dict.set('StmF', new PdfName(this.cryptFiltersByType.stream));
|
|
217
|
+
}
|
|
218
|
+
if (this.cryptFiltersByType.string) {
|
|
219
|
+
dict.set('StrF', new PdfName(this.cryptFiltersByType.string));
|
|
220
|
+
}
|
|
221
|
+
if (this.cryptFiltersByType.file) {
|
|
222
|
+
dict.set('EFF', new PdfName(this.cryptFiltersByType.file));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Encrypts data using the appropriate crypt filter for the content type.
|
|
227
|
+
*
|
|
228
|
+
* @param type - The type of content being encrypted.
|
|
229
|
+
* @param data - The data to encrypt.
|
|
230
|
+
* @param objectNumber - The PDF object number.
|
|
231
|
+
* @param generationNumber - The PDF generation number.
|
|
232
|
+
* @returns The encrypted data.
|
|
233
|
+
*/
|
|
234
|
+
encrypt(type, data, objectNumber, generationNumber) {
|
|
235
|
+
const cryptFilter = this.getCryptFilterByType(type);
|
|
236
|
+
if (cryptFilter) {
|
|
237
|
+
return cryptFilter.encrypt(data, objectNumber, generationNumber);
|
|
238
|
+
}
|
|
239
|
+
return super.encrypt(type, data, objectNumber, generationNumber);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Decrypts data using the appropriate crypt filter for the content type.
|
|
243
|
+
*
|
|
244
|
+
* @param type - The type of content being decrypted.
|
|
245
|
+
* @param data - The encrypted data.
|
|
246
|
+
* @param objectNumber - The PDF object number.
|
|
247
|
+
* @param generationNumber - The PDF generation number.
|
|
248
|
+
* @returns The decrypted data.
|
|
249
|
+
*/
|
|
250
|
+
decrypt(type, data, objectNumber, generationNumber) {
|
|
251
|
+
const cryptFilter = this.getCryptFilterByType(type);
|
|
252
|
+
if (cryptFilter) {
|
|
253
|
+
return cryptFilter.decrypt(data, objectNumber, generationNumber);
|
|
254
|
+
}
|
|
255
|
+
return super.decrypt(type, data, objectNumber, generationNumber);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { ByteArray } from '../../types';
|
|
2
|
+
import { PdfEncryptionDictionary } from '../types';
|
|
3
|
+
import { PdfV4SecurityHandler } from './v4';
|
|
4
|
+
import { PdfStandardSecurityHandlerOptions } from './base';
|
|
5
|
+
import { Cipher } from '../../crypto/types';
|
|
6
|
+
/**
|
|
7
|
+
* V5 security handler implementing AES-256-CBC encryption.
|
|
8
|
+
* This is the most secure encryption method (PDF 2.0).
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const handler = new PdfV5SecurityHandler({
|
|
13
|
+
* password: 'strongPassword123',
|
|
14
|
+
* ownerPassword: 'adminPassword456'
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare class PdfV5SecurityHandler extends PdfV4SecurityHandler {
|
|
19
|
+
/** User encrypted file key (UE value). */
|
|
20
|
+
protected userEncryptedFileKey?: ByteArray;
|
|
21
|
+
/** Owner encrypted file key (OE value). */
|
|
22
|
+
protected ownerEncryptedFileKey?: ByteArray;
|
|
23
|
+
/** Permissions entry (Perms value). */
|
|
24
|
+
protected perms?: ByteArray;
|
|
25
|
+
/** Promise resolving to the file encryption key. */
|
|
26
|
+
protected fileKey?: Promise<ByteArray>;
|
|
27
|
+
/**
|
|
28
|
+
* Creates a new V5 security handler with AES-256 encryption.
|
|
29
|
+
*
|
|
30
|
+
* @param options - Configuration options including optional pre-computed keys.
|
|
31
|
+
*/
|
|
32
|
+
constructor(options: PdfStandardSecurityHandlerOptions & {
|
|
33
|
+
userEncryptedFileKey?: ByteArray;
|
|
34
|
+
ownerEncryptedFileKey?: ByteArray;
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Checks if the handler is ready (has user encrypted file key).
|
|
38
|
+
*
|
|
39
|
+
* @returns True if the handler has the required keys.
|
|
40
|
+
*/
|
|
41
|
+
isReady(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Initializes encryption keys, either deriving from existing values or generating new ones.
|
|
44
|
+
*/
|
|
45
|
+
protected initKeys(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Computes the master encryption key.
|
|
48
|
+
*
|
|
49
|
+
* @returns The file encryption key.
|
|
50
|
+
* @throws Error if file key is not initialized.
|
|
51
|
+
*/
|
|
52
|
+
protected computeMasterKey(): Promise<ByteArray>;
|
|
53
|
+
/**
|
|
54
|
+
* Builds the Perms entry for the encryption dictionary.
|
|
55
|
+
*
|
|
56
|
+
* @param flags - The permission flags.
|
|
57
|
+
* @param encryptMetadata - Whether metadata is encrypted.
|
|
58
|
+
* @param fileKey - The file encryption key.
|
|
59
|
+
* @returns The encrypted permissions entry.
|
|
60
|
+
*/
|
|
61
|
+
private buildPermsEntry;
|
|
62
|
+
/**
|
|
63
|
+
* Gets the encryption key length in bits.
|
|
64
|
+
*
|
|
65
|
+
* @returns 256 for V5 encryption.
|
|
66
|
+
*/
|
|
67
|
+
getKeyBits(): number;
|
|
68
|
+
/**
|
|
69
|
+
* Gets an AES-256 cipher.
|
|
70
|
+
*
|
|
71
|
+
* @returns An AES-256 cipher instance.
|
|
72
|
+
*/
|
|
73
|
+
protected getCipher(): Promise<Cipher>;
|
|
74
|
+
/**
|
|
75
|
+
* Gets the encryption version number.
|
|
76
|
+
*
|
|
77
|
+
* @returns 5 for AES-256 encryption.
|
|
78
|
+
*/
|
|
79
|
+
getVersion(): number;
|
|
80
|
+
/**
|
|
81
|
+
* Gets the encryption revision number.
|
|
82
|
+
*
|
|
83
|
+
* @returns 6 for V5 encryption.
|
|
84
|
+
*/
|
|
85
|
+
getRevision(): number;
|
|
86
|
+
/**
|
|
87
|
+
* Writes the encryption dictionary including V5-specific entries.
|
|
88
|
+
*
|
|
89
|
+
* @throws Error if required keys are not computed.
|
|
90
|
+
*/
|
|
91
|
+
write(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Reads V5-specific encryption parameters from the dictionary.
|
|
94
|
+
*
|
|
95
|
+
* @param encryptionDictionary - The encryption dictionary from the PDF.
|
|
96
|
+
* @throws Error if required entries are missing or invalid.
|
|
97
|
+
*/
|
|
98
|
+
readEncryptionDictionary(encryptionDictionary: PdfEncryptionDictionary): void;
|
|
99
|
+
/**
|
|
100
|
+
* Computes the object encryption key (same as master key for V5).
|
|
101
|
+
*
|
|
102
|
+
* @returns The master encryption key.
|
|
103
|
+
*/
|
|
104
|
+
computeObjectKey(): Promise<ByteArray>;
|
|
105
|
+
/**
|
|
106
|
+
* Recovers the user password from the owner password.
|
|
107
|
+
* Not supported for AES-256 encryption.
|
|
108
|
+
*
|
|
109
|
+
* @throws Error always, as this operation is not supported for V5.
|
|
110
|
+
*/
|
|
111
|
+
recoverUserPassword(ownerPassword?: ByteArray | string): Promise<string>;
|
|
112
|
+
}
|