pdf-lite 1.0.1-alpha.2 → 1.0.1
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
|
@@ -1,413 +0,0 @@
|
|
|
1
|
-
import { EnvelopedDataBuilderRecipient } from 'pki-lite/core/builders/EnvelopedDataBuilder'
|
|
2
|
-
import { Certificate } from 'pki-lite/x509/Certificate'
|
|
3
|
-
import { EnvelopedData } from 'pki-lite/pkcs7/EnvelopedData'
|
|
4
|
-
import { PrivateKeyInfo } from 'pki-lite/keys/PrivateKeyInfo'
|
|
5
|
-
import { ByteArray, PdfPermissions } from '../../types'
|
|
6
|
-
import { getRandomBytes, sha1, sha256 } from '../../utils/algos'
|
|
7
|
-
import {
|
|
8
|
-
PdfEncryptionDictionary,
|
|
9
|
-
PdfEncryptionRecipient,
|
|
10
|
-
PdfId,
|
|
11
|
-
} from '../types'
|
|
12
|
-
import { PdfV5SecurityHandler } from './v5'
|
|
13
|
-
import { PdfSecurityHandler, PdfStandardSecurityHandler } from './base'
|
|
14
|
-
import { createStandardSecurityHandlerFromDictionary } from './utils'
|
|
15
|
-
import { PdfName } from '../../core/objects/pdf-name'
|
|
16
|
-
import { PdfArray } from '../../core/objects/pdf-array'
|
|
17
|
-
import { PdfHexadecimal } from '../../core/objects/pdf-hexadecimal'
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Public key security handler implementing certificate-based encryption.
|
|
21
|
-
* Uses PKCS#7 enveloped data to encrypt the file key for each recipient.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```typescript
|
|
25
|
-
* const handler = new PdfPublicKeySecurityHandler({
|
|
26
|
-
* recipients: [{
|
|
27
|
-
* certificate: recipientCertBytes,
|
|
28
|
-
* privateKey: privateKeyBytes
|
|
29
|
-
* }]
|
|
30
|
-
* })
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export class PdfPublicKeySecurityHandler extends PdfSecurityHandler {
|
|
34
|
-
/** Underlying standard security handler for key derivation. */
|
|
35
|
-
private standardSecurityHandler: PdfStandardSecurityHandler
|
|
36
|
-
/** List of recipients with their certificates and optional private keys. */
|
|
37
|
-
private recipients: PdfEncryptionRecipient[]
|
|
38
|
-
/** Random seed for key generation. */
|
|
39
|
-
private seed: ByteArray
|
|
40
|
-
/** Promise resolving to PKCS#7 CMS data for each recipient. */
|
|
41
|
-
private recipientsCms: Promise<ByteArray[]>
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Creates a new public key security handler.
|
|
45
|
-
*
|
|
46
|
-
* @param options - Configuration including recipients and encryption settings.
|
|
47
|
-
*/
|
|
48
|
-
constructor(options: {
|
|
49
|
-
recipients: PdfEncryptionRecipient[]
|
|
50
|
-
standardSecurityHandler?: PdfStandardSecurityHandler
|
|
51
|
-
seed?: ByteArray
|
|
52
|
-
permissions?: PdfPermissions | number
|
|
53
|
-
encryptMetadata?: boolean
|
|
54
|
-
}) {
|
|
55
|
-
super(options)
|
|
56
|
-
|
|
57
|
-
this.standardSecurityHandler =
|
|
58
|
-
options.standardSecurityHandler ?? new PdfV5SecurityHandler({})
|
|
59
|
-
this.recipients = options.recipients
|
|
60
|
-
this.seed = options.seed ?? getRandomBytes(20)
|
|
61
|
-
|
|
62
|
-
const pkcs7Input = new Uint8Array(24)
|
|
63
|
-
pkcs7Input.set(this.seed)
|
|
64
|
-
pkcs7Input[20] = (this.permissions >> 24) & 0xff
|
|
65
|
-
pkcs7Input[21] = (this.permissions >> 16) & 0xff
|
|
66
|
-
pkcs7Input[22] = (this.permissions >> 8) & 0xff
|
|
67
|
-
pkcs7Input[23] = this.permissions & 0xff
|
|
68
|
-
|
|
69
|
-
this.recipientsCms = this.getRecipientsPkcs7(pkcs7Input)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Gets the security handler filter name.
|
|
74
|
-
*
|
|
75
|
-
* @returns 'Adobe.PubSec' for public key encryption.
|
|
76
|
-
*/
|
|
77
|
-
getName(): string {
|
|
78
|
-
return 'Adobe.PubSec'
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Checks if metadata encryption is enabled.
|
|
83
|
-
*
|
|
84
|
-
* @returns True if metadata should be encrypted.
|
|
85
|
-
*/
|
|
86
|
-
canEncryptMetadata(): boolean {
|
|
87
|
-
return this.standardSecurityHandler.canEncryptMetadata()
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Sets the document ID.
|
|
92
|
-
*
|
|
93
|
-
* @param id - The document ID array.
|
|
94
|
-
*/
|
|
95
|
-
setDocumentId(id: PdfId): void {
|
|
96
|
-
this.standardSecurityHandler.setDocumentId(id)
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Gets the document ID.
|
|
101
|
-
*
|
|
102
|
-
* @returns The document ID, or undefined if not set.
|
|
103
|
-
*/
|
|
104
|
-
getDocumentId(): PdfId | undefined {
|
|
105
|
-
return this.standardSecurityHandler.getDocumentId()
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Checks if the handler is ready.
|
|
110
|
-
*
|
|
111
|
-
* @returns True if the underlying handler is ready.
|
|
112
|
-
*/
|
|
113
|
-
isReady(): boolean {
|
|
114
|
-
return this.standardSecurityHandler.isReady()
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Gets the encryption version number.
|
|
119
|
-
*
|
|
120
|
-
* @returns The version from the underlying handler.
|
|
121
|
-
*/
|
|
122
|
-
getVersion(): number {
|
|
123
|
-
return this.standardSecurityHandler.getVersion()
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Gets the encryption revision number.
|
|
128
|
-
*
|
|
129
|
-
* @returns The revision from the underlying handler.
|
|
130
|
-
*/
|
|
131
|
-
getRevision(): number {
|
|
132
|
-
return this.standardSecurityHandler.getRevision()
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Initializes encryption keys from the seed and recipient data.
|
|
137
|
-
*
|
|
138
|
-
* @param seed - Optional seed to use instead of the default.
|
|
139
|
-
* @returns The derived encryption key.
|
|
140
|
-
* @throws Error if no recipients are configured.
|
|
141
|
-
*/
|
|
142
|
-
private async initKeys(seed: ByteArray = this.seed): Promise<ByteArray> {
|
|
143
|
-
const recipientDers = await this.recipientsCms
|
|
144
|
-
if (recipientDers.length === 0) {
|
|
145
|
-
throw new Error('At least one recipient is required')
|
|
146
|
-
}
|
|
147
|
-
const digestLen =
|
|
148
|
-
seed.length +
|
|
149
|
-
recipientDers.reduce((acc, der) => acc + der.length, 0) +
|
|
150
|
-
(!this.encryptMetadata ? 4 : 0)
|
|
151
|
-
|
|
152
|
-
const digestBytes = new Uint8Array(digestLen)
|
|
153
|
-
let offset = 0
|
|
154
|
-
digestBytes.set(seed, offset)
|
|
155
|
-
offset += seed.length
|
|
156
|
-
|
|
157
|
-
for (let i = 0; i < recipientDers.length; i++) {
|
|
158
|
-
digestBytes.set(recipientDers[i], offset)
|
|
159
|
-
offset += recipientDers[i].length
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (!this.encryptMetadata) {
|
|
163
|
-
digestBytes.set(new Uint8Array([0xff, 0xff, 0xff, 0xff]), offset)
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
let digest: ByteArray
|
|
167
|
-
if (this.standardSecurityHandler instanceof PdfV5SecurityHandler) {
|
|
168
|
-
digest = await sha256(digestBytes)
|
|
169
|
-
} else {
|
|
170
|
-
digest = await sha1(digestBytes)
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
const key = digest.slice(
|
|
174
|
-
0,
|
|
175
|
-
this.standardSecurityHandler.getKeyBits() / 8,
|
|
176
|
-
)
|
|
177
|
-
|
|
178
|
-
this.standardSecurityHandler.setMasterKey(key)
|
|
179
|
-
return key
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Writes the encryption dictionary with public key-specific entries.
|
|
184
|
-
*/
|
|
185
|
-
async write(): Promise<void> {
|
|
186
|
-
await this.standardSecurityHandler.write()
|
|
187
|
-
|
|
188
|
-
this.dict.copyFrom(this.standardSecurityHandler.dict)
|
|
189
|
-
|
|
190
|
-
const recipientsData = await this.recipientsCms
|
|
191
|
-
|
|
192
|
-
this.dict.set('Filter', new PdfName('Adobe.PubSec'))
|
|
193
|
-
this.dict.set('SubFilter', new PdfName('adbe.pkcs7.s4'))
|
|
194
|
-
this.dict.set(
|
|
195
|
-
'Recipients',
|
|
196
|
-
new PdfArray(
|
|
197
|
-
recipientsData.map((data) => new PdfHexadecimal(data)),
|
|
198
|
-
),
|
|
199
|
-
)
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Creates PKCS#7 enveloped data for each recipient.
|
|
204
|
-
*
|
|
205
|
-
* @param data - The data to encrypt for recipients.
|
|
206
|
-
* @returns Array of PKCS#7 CMS bytes for each recipient.
|
|
207
|
-
* @throws Error if any recipient lacks a certificate.
|
|
208
|
-
*/
|
|
209
|
-
private async getRecipientsPkcs7(data: ByteArray): Promise<ByteArray[]> {
|
|
210
|
-
return await Promise.all(
|
|
211
|
-
this.recipients.map((recipient) => {
|
|
212
|
-
if (!recipient.certificate) {
|
|
213
|
-
throw new Error('Recipient certificate is required')
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
return this.pkcs7EnvelopedData({
|
|
217
|
-
data: data,
|
|
218
|
-
recipientCertificates: [recipient.certificate],
|
|
219
|
-
})
|
|
220
|
-
}),
|
|
221
|
-
)
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Reads encryption parameters from the encryption dictionary.
|
|
226
|
-
*
|
|
227
|
-
* @param dictionary - The encryption dictionary from the PDF.
|
|
228
|
-
* @throws Error if required entries are missing.
|
|
229
|
-
*/
|
|
230
|
-
readEncryptionDictionary(dictionary: PdfEncryptionDictionary): void {
|
|
231
|
-
this.standardSecurityHandler =
|
|
232
|
-
createStandardSecurityHandlerFromDictionary(dictionary)
|
|
233
|
-
|
|
234
|
-
this.standardSecurityHandler.readEncryptionDictionary(dictionary)
|
|
235
|
-
|
|
236
|
-
const recipients = dictionary.get('Recipients')
|
|
237
|
-
if (!recipients) {
|
|
238
|
-
throw new Error('Missing /Recipients in encryption dictionary')
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
this.recipientsCms = Promise.resolve(
|
|
242
|
-
recipients.items.map((value) => {
|
|
243
|
-
if (!(value instanceof PdfHexadecimal)) {
|
|
244
|
-
throw new Error('Invalid recipient type')
|
|
245
|
-
}
|
|
246
|
-
return value.raw as ByteArray
|
|
247
|
-
}),
|
|
248
|
-
)
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Gets the underlying standard security handler.
|
|
253
|
-
*
|
|
254
|
-
* @returns The standard security handler used for encryption.
|
|
255
|
-
*/
|
|
256
|
-
getStandardSecurityHandler(): PdfStandardSecurityHandler {
|
|
257
|
-
return this.standardSecurityHandler
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Decrypts recipient CMS data to recover the seed and permissions.
|
|
262
|
-
*
|
|
263
|
-
* @returns The seed and permissions, or throws if no matching recipient is found.
|
|
264
|
-
* @throws Error if no recipient with private key can decrypt the CMS data.
|
|
265
|
-
*/
|
|
266
|
-
private async getSeed(): Promise<ByteArray> {
|
|
267
|
-
for (const privateKey of this.recipients
|
|
268
|
-
.filter((x) => x.privateKey)
|
|
269
|
-
.map((x) => x.privateKey!)) {
|
|
270
|
-
for (const cms of await this.recipientsCms) {
|
|
271
|
-
const output = await this.extractSeedAndPermissions(
|
|
272
|
-
cms,
|
|
273
|
-
privateKey,
|
|
274
|
-
)
|
|
275
|
-
if (!output) continue
|
|
276
|
-
|
|
277
|
-
const { seed, permissions: permissionsBytes } = output
|
|
278
|
-
|
|
279
|
-
let permissions = 0
|
|
280
|
-
for (const byte of permissionsBytes) {
|
|
281
|
-
permissions = (permissions << 8) | byte
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
await this.initKeys(seed)
|
|
285
|
-
|
|
286
|
-
this.permissions = permissions
|
|
287
|
-
|
|
288
|
-
return seed
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
throw new Error('No matching recipient found for decryption')
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Decrypts data using the underlying security handler.
|
|
297
|
-
*
|
|
298
|
-
* @param type - The type of content being decrypted.
|
|
299
|
-
* @param data - The encrypted data.
|
|
300
|
-
* @param objectNumber - The PDF object number.
|
|
301
|
-
* @param generationNumber - The PDF generation number.
|
|
302
|
-
* @returns The decrypted data.
|
|
303
|
-
*/
|
|
304
|
-
async decrypt(
|
|
305
|
-
type: 'string' | 'stream' | 'file',
|
|
306
|
-
data: ByteArray,
|
|
307
|
-
objectNumber?: number,
|
|
308
|
-
generationNumber?: number,
|
|
309
|
-
): Promise<ByteArray> {
|
|
310
|
-
await this.getSeed()
|
|
311
|
-
|
|
312
|
-
return this.standardSecurityHandler.decrypt(
|
|
313
|
-
type,
|
|
314
|
-
data,
|
|
315
|
-
objectNumber,
|
|
316
|
-
generationNumber,
|
|
317
|
-
)
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
/**
|
|
321
|
-
* Encrypts data using the underlying security handler.
|
|
322
|
-
*
|
|
323
|
-
* @param type - The type of content being encrypted.
|
|
324
|
-
* @param data - The data to encrypt.
|
|
325
|
-
* @param objectNumber - The PDF object number.
|
|
326
|
-
* @param generationNumber - The PDF generation number.
|
|
327
|
-
* @returns The encrypted data.
|
|
328
|
-
*/
|
|
329
|
-
async encrypt(
|
|
330
|
-
type: 'string' | 'stream' | 'file',
|
|
331
|
-
data: ByteArray,
|
|
332
|
-
objectNumber?: number,
|
|
333
|
-
generationNumber?: number,
|
|
334
|
-
): Promise<ByteArray> {
|
|
335
|
-
await this.initKeys()
|
|
336
|
-
|
|
337
|
-
return this.standardSecurityHandler.encrypt(
|
|
338
|
-
type,
|
|
339
|
-
data,
|
|
340
|
-
objectNumber,
|
|
341
|
-
generationNumber,
|
|
342
|
-
)
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
/**
|
|
346
|
-
* Computes the object encryption key.
|
|
347
|
-
*
|
|
348
|
-
* @param objectNumber - The PDF object number.
|
|
349
|
-
* @param generationNumber - The PDF generation number.
|
|
350
|
-
* @returns The computed object key.
|
|
351
|
-
*/
|
|
352
|
-
async computeObjectKey(
|
|
353
|
-
objectNumber?: number,
|
|
354
|
-
generationNumber?: number,
|
|
355
|
-
): Promise<ByteArray> {
|
|
356
|
-
await this.getSeed()
|
|
357
|
-
return this.standardSecurityHandler.computeObjectKey(
|
|
358
|
-
objectNumber,
|
|
359
|
-
generationNumber,
|
|
360
|
-
)
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* Creates PKCS#7 enveloped data for recipients.
|
|
365
|
-
*
|
|
366
|
-
* @param options - Data and recipient certificates.
|
|
367
|
-
* @returns The PKCS#7 CMS bytes.
|
|
368
|
-
*/
|
|
369
|
-
private async pkcs7EnvelopedData(options: {
|
|
370
|
-
data: ByteArray
|
|
371
|
-
recipientCertificates: ByteArray[]
|
|
372
|
-
}): Promise<ByteArray> {
|
|
373
|
-
const { data, recipientCertificates } = options
|
|
374
|
-
|
|
375
|
-
const envelopedData = await EnvelopedData.builder()
|
|
376
|
-
.setData(data)
|
|
377
|
-
.addRecipient(
|
|
378
|
-
...recipientCertificates.map(
|
|
379
|
-
(certBytes) =>
|
|
380
|
-
({
|
|
381
|
-
certificate: Certificate.fromDer(certBytes),
|
|
382
|
-
}) satisfies EnvelopedDataBuilderRecipient,
|
|
383
|
-
),
|
|
384
|
-
)
|
|
385
|
-
.build()
|
|
386
|
-
|
|
387
|
-
return envelopedData.toCms().toDer()
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
/**
|
|
391
|
-
* Extracts the seed and permissions from CMS enveloped data.
|
|
392
|
-
*
|
|
393
|
-
* @param contentInfoBytes - The CMS content info bytes.
|
|
394
|
-
* @param privateKey - The private key for decryption.
|
|
395
|
-
* @returns The extracted seed and permissions.
|
|
396
|
-
*/
|
|
397
|
-
private async extractSeedAndPermissions(
|
|
398
|
-
contentInfoBytes: ByteArray,
|
|
399
|
-
privateKey: ByteArray,
|
|
400
|
-
): Promise<{
|
|
401
|
-
seed: ByteArray
|
|
402
|
-
permissions: ByteArray
|
|
403
|
-
} | null> {
|
|
404
|
-
const privateKeyInfo = PrivateKeyInfo.fromDer(privateKey)
|
|
405
|
-
const envelopedData = EnvelopedData.fromCms(contentInfoBytes)
|
|
406
|
-
const content = await envelopedData.decrypt(privateKeyInfo)
|
|
407
|
-
|
|
408
|
-
return {
|
|
409
|
-
seed: content.slice(0, 20),
|
|
410
|
-
permissions: content.slice(20, 24),
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
}
|
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CryptFilterType,
|
|
3
|
-
PdfEncryptionAlgorithmType,
|
|
4
|
-
PdfEncryptionDictionary,
|
|
5
|
-
PdfEncryptionOptions,
|
|
6
|
-
PdfEncryptionRecipient,
|
|
7
|
-
PdfId,
|
|
8
|
-
} from '../types'
|
|
9
|
-
import { PdfSecurityHandler, PdfStandardSecurityHandler } from './base'
|
|
10
|
-
import { assert, assertIfDefined } from '../../utils/assert'
|
|
11
|
-
import { PdfV1SecurityHandler } from './v1'
|
|
12
|
-
import { PdfV2SecurityHandler } from './v2'
|
|
13
|
-
import { PdfV4SecurityHandler } from './v4'
|
|
14
|
-
import { PdfV5SecurityHandler } from './v5'
|
|
15
|
-
import { ByteArray } from '../../types'
|
|
16
|
-
import { PdfCryptFilter } from '../crypt-filters/base'
|
|
17
|
-
import { V2CryptFilter } from '../crypt-filters/v2'
|
|
18
|
-
import { AesV2CryptFilter } from '../crypt-filters/aesv2'
|
|
19
|
-
import { AesV3CryptFilter } from '../crypt-filters/aesv3'
|
|
20
|
-
import { IdentityCryptFilter } from '../crypt-filters/identity'
|
|
21
|
-
import { PdfName } from '../../core/objects/pdf-name'
|
|
22
|
-
import { PdfNumber } from '../../core/objects/pdf-number'
|
|
23
|
-
import { PdfPublicKeySecurityHandler } from './pubSec'
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Creates a security handler from an encryption dictionary.
|
|
27
|
-
* Automatically detects the handler type (Standard or Adobe.PubSec) and version.
|
|
28
|
-
*
|
|
29
|
-
* @param dict - The encryption dictionary from the PDF trailer.
|
|
30
|
-
* @param options - Optional configuration including passwords and recipients.
|
|
31
|
-
* @returns The appropriate security handler instance.
|
|
32
|
-
* @throws Error if the filter type is unsupported.
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* ```typescript
|
|
36
|
-
* const handler = createFromDictionary(encryptDict, { password: 'secret' })
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export function createFromDictionary(
|
|
40
|
-
dict: PdfEncryptionDictionary,
|
|
41
|
-
options?: {
|
|
42
|
-
password?: string | ByteArray
|
|
43
|
-
ownerPassword?: string | ByteArray
|
|
44
|
-
recipients?: PdfEncryptionRecipient[]
|
|
45
|
-
documentId?: PdfId
|
|
46
|
-
},
|
|
47
|
-
): PdfSecurityHandler {
|
|
48
|
-
const {
|
|
49
|
-
password,
|
|
50
|
-
ownerPassword,
|
|
51
|
-
recipients = [],
|
|
52
|
-
documentId,
|
|
53
|
-
} = options ?? {}
|
|
54
|
-
const filter = dict.get('Filter')
|
|
55
|
-
|
|
56
|
-
assert(filter instanceof PdfName, 'Filter must be a name')
|
|
57
|
-
|
|
58
|
-
if (filter.value === 'Standard') {
|
|
59
|
-
return createStandardSecurityHandlerFromDictionary(dict, {
|
|
60
|
-
password,
|
|
61
|
-
ownerPassword,
|
|
62
|
-
documentId,
|
|
63
|
-
})
|
|
64
|
-
} else if (filter.value === 'Adobe.PubSec') {
|
|
65
|
-
const pubSecHandler = new PdfPublicKeySecurityHandler({
|
|
66
|
-
standardSecurityHandler:
|
|
67
|
-
createStandardSecurityHandlerFromDictionary(dict, {
|
|
68
|
-
password,
|
|
69
|
-
ownerPassword,
|
|
70
|
-
}),
|
|
71
|
-
recipients,
|
|
72
|
-
})
|
|
73
|
-
pubSecHandler.readEncryptionDictionary(dict)
|
|
74
|
-
return pubSecHandler
|
|
75
|
-
} else {
|
|
76
|
-
throw new Error(`Unsupported security handler: ${filter.value}`)
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Creates a standard security handler from an encryption dictionary.
|
|
82
|
-
* Selects the appropriate version (V1-V5) based on the dictionary parameters.
|
|
83
|
-
*
|
|
84
|
-
* @param dict - The encryption dictionary from the PDF trailer.
|
|
85
|
-
* @param options - Optional configuration including passwords and document ID.
|
|
86
|
-
* @returns The appropriate standard security handler instance.
|
|
87
|
-
* @throws Error if the version/revision combination is unsupported.
|
|
88
|
-
*
|
|
89
|
-
* @example
|
|
90
|
-
* ```typescript
|
|
91
|
-
* const handler = createStandardSecurityHandlerFromDictionary(encryptDict, {
|
|
92
|
-
* password: 'user',
|
|
93
|
-
* ownerPassword: 'owner'
|
|
94
|
-
* })
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
export function createStandardSecurityHandlerFromDictionary(
|
|
98
|
-
dict: PdfEncryptionDictionary,
|
|
99
|
-
options?: {
|
|
100
|
-
password?: string | ByteArray
|
|
101
|
-
ownerPassword?: string | ByteArray
|
|
102
|
-
documentId?: PdfId
|
|
103
|
-
},
|
|
104
|
-
): PdfStandardSecurityHandler {
|
|
105
|
-
const {
|
|
106
|
-
password,
|
|
107
|
-
ownerPassword,
|
|
108
|
-
documentId = dict.get('ID'),
|
|
109
|
-
} = options ?? {}
|
|
110
|
-
const V = dict.get('V')
|
|
111
|
-
const R = dict.get('R')
|
|
112
|
-
const Length = dict.get('Length')
|
|
113
|
-
|
|
114
|
-
assert(V instanceof PdfNumber, 'V must be a number if defined')
|
|
115
|
-
assert(R instanceof PdfNumber, 'R must be a number if defined')
|
|
116
|
-
assertIfDefined(
|
|
117
|
-
Length,
|
|
118
|
-
Length instanceof PdfNumber,
|
|
119
|
-
'Length must be a number if defined',
|
|
120
|
-
)
|
|
121
|
-
|
|
122
|
-
const version = V.value
|
|
123
|
-
const revision = R.value
|
|
124
|
-
|
|
125
|
-
let standardSecurityHandler: PdfStandardSecurityHandler
|
|
126
|
-
|
|
127
|
-
if (version === 1) {
|
|
128
|
-
standardSecurityHandler = new PdfV1SecurityHandler({
|
|
129
|
-
password,
|
|
130
|
-
ownerPassword,
|
|
131
|
-
documentId,
|
|
132
|
-
})
|
|
133
|
-
} else if (version === 2) {
|
|
134
|
-
standardSecurityHandler = new PdfV2SecurityHandler({
|
|
135
|
-
password,
|
|
136
|
-
ownerPassword,
|
|
137
|
-
documentId,
|
|
138
|
-
})
|
|
139
|
-
} else if (version === 4) {
|
|
140
|
-
standardSecurityHandler = new PdfV4SecurityHandler({
|
|
141
|
-
password,
|
|
142
|
-
ownerPassword,
|
|
143
|
-
documentId,
|
|
144
|
-
})
|
|
145
|
-
} else if (version >= 5) {
|
|
146
|
-
standardSecurityHandler = new PdfV5SecurityHandler({
|
|
147
|
-
password,
|
|
148
|
-
ownerPassword,
|
|
149
|
-
documentId,
|
|
150
|
-
})
|
|
151
|
-
} else {
|
|
152
|
-
throw new Error(
|
|
153
|
-
`Unsupported standard security handler: V=${version} R=${revision}`,
|
|
154
|
-
)
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
standardSecurityHandler.readEncryptionDictionary(dict)
|
|
158
|
-
|
|
159
|
-
return standardSecurityHandler
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Creates a crypt filter for the specified encryption algorithm.
|
|
164
|
-
*
|
|
165
|
-
* @param method - The encryption algorithm type.
|
|
166
|
-
* @returns The appropriate crypt filter instance.
|
|
167
|
-
* @throws Error if the method is unsupported.
|
|
168
|
-
*
|
|
169
|
-
* @example
|
|
170
|
-
* ```typescript
|
|
171
|
-
* const filter = getCryptFilter('AES-256-CBC')
|
|
172
|
-
* ```
|
|
173
|
-
*/
|
|
174
|
-
export function getCryptFilter(
|
|
175
|
-
method: PdfEncryptionAlgorithmType,
|
|
176
|
-
): PdfCryptFilter {
|
|
177
|
-
if (method === 'none') {
|
|
178
|
-
return new IdentityCryptFilter({
|
|
179
|
-
authEvent: 'DocOpen',
|
|
180
|
-
})
|
|
181
|
-
} else if (method === 'RC4-40') {
|
|
182
|
-
return new V2CryptFilter({
|
|
183
|
-
authEvent: 'DocOpen',
|
|
184
|
-
length: 40,
|
|
185
|
-
})
|
|
186
|
-
} else if (method === 'RC4-128') {
|
|
187
|
-
return new V2CryptFilter({
|
|
188
|
-
authEvent: 'DocOpen',
|
|
189
|
-
length: 128,
|
|
190
|
-
})
|
|
191
|
-
} else if (method === 'AES-128-CBC') {
|
|
192
|
-
return new AesV2CryptFilter({
|
|
193
|
-
authEvent: 'DocOpen',
|
|
194
|
-
})
|
|
195
|
-
} else if (method === 'AES-256-CBC') {
|
|
196
|
-
return new AesV3CryptFilter({
|
|
197
|
-
authEvent: 'DocOpen',
|
|
198
|
-
})
|
|
199
|
-
} else {
|
|
200
|
-
throw new Error(`Unsupported crypt filter type: ${method}`)
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Creates a security handler from encryption options.
|
|
206
|
-
* Automatically selects the appropriate handler version based on the encryption method.
|
|
207
|
-
*
|
|
208
|
-
* @param options - The encryption configuration options.
|
|
209
|
-
* @returns A configured security handler.
|
|
210
|
-
* @throws Error if no encryption is selected or the type is unsupported.
|
|
211
|
-
*
|
|
212
|
-
* @example
|
|
213
|
-
* ```typescript
|
|
214
|
-
* const handler = createFromEncryptionOptions({
|
|
215
|
-
* method: { default: 'AES-256-CBC' },
|
|
216
|
-
* password: 'secret',
|
|
217
|
-
* permissions: { print: true, copy: false }
|
|
218
|
-
* })
|
|
219
|
-
* ```
|
|
220
|
-
*/
|
|
221
|
-
export function createFromEncryptionOptions(
|
|
222
|
-
options: PdfEncryptionOptions,
|
|
223
|
-
): PdfSecurityHandler {
|
|
224
|
-
let defaultEncryption = options.method?.default ?? 'AES-256-CBC'
|
|
225
|
-
let handler: PdfSecurityHandler
|
|
226
|
-
|
|
227
|
-
if (defaultEncryption === 'RC4-40') {
|
|
228
|
-
handler = new PdfV1SecurityHandler({
|
|
229
|
-
password: options.password,
|
|
230
|
-
ownerPassword: options.ownerPassword,
|
|
231
|
-
})
|
|
232
|
-
} else if (defaultEncryption === 'RC4-128') {
|
|
233
|
-
handler = new PdfV2SecurityHandler({
|
|
234
|
-
password: options.password,
|
|
235
|
-
ownerPassword: options.ownerPassword,
|
|
236
|
-
})
|
|
237
|
-
} else if (defaultEncryption === 'AES-128-CBC') {
|
|
238
|
-
handler = new PdfV4SecurityHandler({
|
|
239
|
-
password: options.password,
|
|
240
|
-
ownerPassword: options.ownerPassword,
|
|
241
|
-
})
|
|
242
|
-
} else if (defaultEncryption === 'AES-256-CBC') {
|
|
243
|
-
handler = new PdfV5SecurityHandler({
|
|
244
|
-
password: options.password,
|
|
245
|
-
ownerPassword: options.ownerPassword,
|
|
246
|
-
})
|
|
247
|
-
} else if (defaultEncryption === 'none') {
|
|
248
|
-
throw new Error('No encryption selected')
|
|
249
|
-
} else {
|
|
250
|
-
throw new Error(`Unsupported encryption type: ${defaultEncryption}`)
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
let uniqueCryptFilters = new Set<PdfEncryptionAlgorithmType>()
|
|
254
|
-
const cryptFilterForType: Partial<
|
|
255
|
-
Record<CryptFilterType, PdfEncryptionAlgorithmType>
|
|
256
|
-
> = {}
|
|
257
|
-
|
|
258
|
-
if (
|
|
259
|
-
options.method &&
|
|
260
|
-
'streams' in options.method &&
|
|
261
|
-
options.method.streams
|
|
262
|
-
) {
|
|
263
|
-
uniqueCryptFilters.add(options.method.streams)
|
|
264
|
-
cryptFilterForType['stream'] = options.method.streams
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
if (options.method && 'files' in options.method && options.method.files) {
|
|
268
|
-
uniqueCryptFilters.add(options.method.files)
|
|
269
|
-
cryptFilterForType['file'] = options.method.files
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
if (
|
|
273
|
-
options.method &&
|
|
274
|
-
'strings' in options.method &&
|
|
275
|
-
options.method.strings
|
|
276
|
-
) {
|
|
277
|
-
uniqueCryptFilters.add(options.method.strings)
|
|
278
|
-
cryptFilterForType['string'] = options.method.strings
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
if (handler instanceof PdfV4SecurityHandler) {
|
|
282
|
-
const uniqueCryptFiltersArray = Array.from(uniqueCryptFilters)
|
|
283
|
-
for (let i = 0; i < uniqueCryptFiltersArray.length; i++) {
|
|
284
|
-
const cryptFilter = getCryptFilter(uniqueCryptFiltersArray[i])
|
|
285
|
-
const name: string =
|
|
286
|
-
cryptFilter instanceof IdentityCryptFilter
|
|
287
|
-
? 'Identity'
|
|
288
|
-
: `CF${i + 1}`
|
|
289
|
-
|
|
290
|
-
handler.setCryptFilter(name, cryptFilter)
|
|
291
|
-
|
|
292
|
-
for (const type in cryptFilterForType) {
|
|
293
|
-
if (
|
|
294
|
-
cryptFilterForType[type as CryptFilterType] ===
|
|
295
|
-
uniqueCryptFiltersArray[i]
|
|
296
|
-
) {
|
|
297
|
-
handler.setCryptFilterForType(type as CryptFilterType, name)
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
return handler
|
|
304
|
-
}
|