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,244 @@
|
|
|
1
|
+
import { assert, assertIfDefined } from '../../utils/assert';
|
|
2
|
+
import { PdfV1SecurityHandler } from './v1';
|
|
3
|
+
import { PdfV2SecurityHandler } from './v2';
|
|
4
|
+
import { PdfV4SecurityHandler } from './v4';
|
|
5
|
+
import { PdfV5SecurityHandler } from './v5';
|
|
6
|
+
import { V2CryptFilter } from '../crypt-filters/v2';
|
|
7
|
+
import { AesV2CryptFilter } from '../crypt-filters/aesv2';
|
|
8
|
+
import { AesV3CryptFilter } from '../crypt-filters/aesv3';
|
|
9
|
+
import { IdentityCryptFilter } from '../crypt-filters/identity';
|
|
10
|
+
import { PdfName } from '../../core/objects/pdf-name';
|
|
11
|
+
import { PdfNumber } from '../../core/objects/pdf-number';
|
|
12
|
+
import { PdfPublicKeySecurityHandler } from './pubSec';
|
|
13
|
+
/**
|
|
14
|
+
* Creates a security handler from an encryption dictionary.
|
|
15
|
+
* Automatically detects the handler type (Standard or Adobe.PubSec) and version.
|
|
16
|
+
*
|
|
17
|
+
* @param dict - The encryption dictionary from the PDF trailer.
|
|
18
|
+
* @param options - Optional configuration including passwords and recipients.
|
|
19
|
+
* @returns The appropriate security handler instance.
|
|
20
|
+
* @throws Error if the filter type is unsupported.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const handler = createFromDictionary(encryptDict, { password: 'secret' })
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function createFromDictionary(dict, options) {
|
|
28
|
+
const { password, ownerPassword, recipients = [], documentId, } = options ?? {};
|
|
29
|
+
const filter = dict.get('Filter');
|
|
30
|
+
assert(filter instanceof PdfName, 'Filter must be a name');
|
|
31
|
+
if (filter.value === 'Standard') {
|
|
32
|
+
return createStandardSecurityHandlerFromDictionary(dict, {
|
|
33
|
+
password,
|
|
34
|
+
ownerPassword,
|
|
35
|
+
documentId,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else if (filter.value === 'Adobe.PubSec') {
|
|
39
|
+
const pubSecHandler = new PdfPublicKeySecurityHandler({
|
|
40
|
+
standardSecurityHandler: createStandardSecurityHandlerFromDictionary(dict, {
|
|
41
|
+
password,
|
|
42
|
+
ownerPassword,
|
|
43
|
+
}),
|
|
44
|
+
recipients,
|
|
45
|
+
});
|
|
46
|
+
pubSecHandler.readEncryptionDictionary(dict);
|
|
47
|
+
return pubSecHandler;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
throw new Error(`Unsupported security handler: ${filter.value}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates a standard security handler from an encryption dictionary.
|
|
55
|
+
* Selects the appropriate version (V1-V5) based on the dictionary parameters.
|
|
56
|
+
*
|
|
57
|
+
* @param dict - The encryption dictionary from the PDF trailer.
|
|
58
|
+
* @param options - Optional configuration including passwords and document ID.
|
|
59
|
+
* @returns The appropriate standard security handler instance.
|
|
60
|
+
* @throws Error if the version/revision combination is unsupported.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const handler = createStandardSecurityHandlerFromDictionary(encryptDict, {
|
|
65
|
+
* password: 'user',
|
|
66
|
+
* ownerPassword: 'owner'
|
|
67
|
+
* })
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export function createStandardSecurityHandlerFromDictionary(dict, options) {
|
|
71
|
+
const { password, ownerPassword, documentId = dict.get('ID'), } = options ?? {};
|
|
72
|
+
const V = dict.get('V');
|
|
73
|
+
const R = dict.get('R');
|
|
74
|
+
const Length = dict.get('Length');
|
|
75
|
+
assert(V instanceof PdfNumber, 'V must be a number if defined');
|
|
76
|
+
assert(R instanceof PdfNumber, 'R must be a number if defined');
|
|
77
|
+
assertIfDefined(Length, Length instanceof PdfNumber, 'Length must be a number if defined');
|
|
78
|
+
const version = V.value;
|
|
79
|
+
const revision = R.value;
|
|
80
|
+
let standardSecurityHandler;
|
|
81
|
+
if (version === 1) {
|
|
82
|
+
standardSecurityHandler = new PdfV1SecurityHandler({
|
|
83
|
+
password,
|
|
84
|
+
ownerPassword,
|
|
85
|
+
documentId,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
else if (version === 2) {
|
|
89
|
+
standardSecurityHandler = new PdfV2SecurityHandler({
|
|
90
|
+
password,
|
|
91
|
+
ownerPassword,
|
|
92
|
+
documentId,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
else if (version === 4) {
|
|
96
|
+
standardSecurityHandler = new PdfV4SecurityHandler({
|
|
97
|
+
password,
|
|
98
|
+
ownerPassword,
|
|
99
|
+
documentId,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else if (version >= 5) {
|
|
103
|
+
standardSecurityHandler = new PdfV5SecurityHandler({
|
|
104
|
+
password,
|
|
105
|
+
ownerPassword,
|
|
106
|
+
documentId,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
throw new Error(`Unsupported standard security handler: V=${version} R=${revision}`);
|
|
111
|
+
}
|
|
112
|
+
standardSecurityHandler.readEncryptionDictionary(dict);
|
|
113
|
+
return standardSecurityHandler;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Creates a crypt filter for the specified encryption algorithm.
|
|
117
|
+
*
|
|
118
|
+
* @param method - The encryption algorithm type.
|
|
119
|
+
* @returns The appropriate crypt filter instance.
|
|
120
|
+
* @throws Error if the method is unsupported.
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* const filter = getCryptFilter('AES-256-CBC')
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export function getCryptFilter(method) {
|
|
128
|
+
if (method === 'none') {
|
|
129
|
+
return new IdentityCryptFilter({
|
|
130
|
+
authEvent: 'DocOpen',
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else if (method === 'RC4-40') {
|
|
134
|
+
return new V2CryptFilter({
|
|
135
|
+
authEvent: 'DocOpen',
|
|
136
|
+
length: 40,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
else if (method === 'RC4-128') {
|
|
140
|
+
return new V2CryptFilter({
|
|
141
|
+
authEvent: 'DocOpen',
|
|
142
|
+
length: 128,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
else if (method === 'AES-128-CBC') {
|
|
146
|
+
return new AesV2CryptFilter({
|
|
147
|
+
authEvent: 'DocOpen',
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else if (method === 'AES-256-CBC') {
|
|
151
|
+
return new AesV3CryptFilter({
|
|
152
|
+
authEvent: 'DocOpen',
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
throw new Error(`Unsupported crypt filter type: ${method}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Creates a security handler from encryption options.
|
|
161
|
+
* Automatically selects the appropriate handler version based on the encryption method.
|
|
162
|
+
*
|
|
163
|
+
* @param options - The encryption configuration options.
|
|
164
|
+
* @returns A configured security handler.
|
|
165
|
+
* @throws Error if no encryption is selected or the type is unsupported.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* const handler = createFromEncryptionOptions({
|
|
170
|
+
* method: { default: 'AES-256-CBC' },
|
|
171
|
+
* password: 'secret',
|
|
172
|
+
* permissions: { print: true, copy: false }
|
|
173
|
+
* })
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export function createFromEncryptionOptions(options) {
|
|
177
|
+
let defaultEncryption = options.method?.default ?? 'AES-256-CBC';
|
|
178
|
+
let handler;
|
|
179
|
+
if (defaultEncryption === 'RC4-40') {
|
|
180
|
+
handler = new PdfV1SecurityHandler({
|
|
181
|
+
password: options.password,
|
|
182
|
+
ownerPassword: options.ownerPassword,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
else if (defaultEncryption === 'RC4-128') {
|
|
186
|
+
handler = new PdfV2SecurityHandler({
|
|
187
|
+
password: options.password,
|
|
188
|
+
ownerPassword: options.ownerPassword,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
else if (defaultEncryption === 'AES-128-CBC') {
|
|
192
|
+
handler = new PdfV4SecurityHandler({
|
|
193
|
+
password: options.password,
|
|
194
|
+
ownerPassword: options.ownerPassword,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
else if (defaultEncryption === 'AES-256-CBC') {
|
|
198
|
+
handler = new PdfV5SecurityHandler({
|
|
199
|
+
password: options.password,
|
|
200
|
+
ownerPassword: options.ownerPassword,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
else if (defaultEncryption === 'none') {
|
|
204
|
+
throw new Error('No encryption selected');
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
throw new Error(`Unsupported encryption type: ${defaultEncryption}`);
|
|
208
|
+
}
|
|
209
|
+
let uniqueCryptFilters = new Set();
|
|
210
|
+
const cryptFilterForType = {};
|
|
211
|
+
if (options.method &&
|
|
212
|
+
'streams' in options.method &&
|
|
213
|
+
options.method.streams) {
|
|
214
|
+
uniqueCryptFilters.add(options.method.streams);
|
|
215
|
+
cryptFilterForType['stream'] = options.method.streams;
|
|
216
|
+
}
|
|
217
|
+
if (options.method && 'files' in options.method && options.method.files) {
|
|
218
|
+
uniqueCryptFilters.add(options.method.files);
|
|
219
|
+
cryptFilterForType['file'] = options.method.files;
|
|
220
|
+
}
|
|
221
|
+
if (options.method &&
|
|
222
|
+
'strings' in options.method &&
|
|
223
|
+
options.method.strings) {
|
|
224
|
+
uniqueCryptFilters.add(options.method.strings);
|
|
225
|
+
cryptFilterForType['string'] = options.method.strings;
|
|
226
|
+
}
|
|
227
|
+
if (handler instanceof PdfV4SecurityHandler) {
|
|
228
|
+
const uniqueCryptFiltersArray = Array.from(uniqueCryptFilters);
|
|
229
|
+
for (let i = 0; i < uniqueCryptFiltersArray.length; i++) {
|
|
230
|
+
const cryptFilter = getCryptFilter(uniqueCryptFiltersArray[i]);
|
|
231
|
+
const name = cryptFilter instanceof IdentityCryptFilter
|
|
232
|
+
? 'Identity'
|
|
233
|
+
: `CF${i + 1}`;
|
|
234
|
+
handler.setCryptFilter(name, cryptFilter);
|
|
235
|
+
for (const type in cryptFilterForType) {
|
|
236
|
+
if (cryptFilterForType[type] ===
|
|
237
|
+
uniqueCryptFiltersArray[i]) {
|
|
238
|
+
handler.setCryptFilterForType(type, name);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return handler;
|
|
244
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Cipher } from '../../crypto/types';
|
|
2
|
+
import { ByteArray } from '../../types';
|
|
3
|
+
import { PdfEncryptionAlgorithmType } from '../types';
|
|
4
|
+
import { PdfStandardSecurityHandler } from './base';
|
|
5
|
+
/**
|
|
6
|
+
* V1 security handler implementing 40-bit RC4 encryption.
|
|
7
|
+
* This is the original PDF encryption format (PDF 1.1).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const handler = new PdfV1SecurityHandler({
|
|
12
|
+
* password: 'user123',
|
|
13
|
+
* ownerPassword: 'admin456'
|
|
14
|
+
* })
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class PdfV1SecurityHandler extends PdfStandardSecurityHandler {
|
|
18
|
+
/**
|
|
19
|
+
* Gets the encryption revision number.
|
|
20
|
+
*
|
|
21
|
+
* @returns 2 for V1 encryption.
|
|
22
|
+
*/
|
|
23
|
+
getRevision(): number;
|
|
24
|
+
/**
|
|
25
|
+
* Gets the encryption version number.
|
|
26
|
+
*
|
|
27
|
+
* @returns 1 for 40-bit RC4 encryption.
|
|
28
|
+
*/
|
|
29
|
+
getVersion(): number;
|
|
30
|
+
/**
|
|
31
|
+
* Gets the encryption key length in bits.
|
|
32
|
+
*
|
|
33
|
+
* @returns 40 for V1 encryption.
|
|
34
|
+
*/
|
|
35
|
+
getKeyBits(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Computes the owner key (O value) using RC4-40 algorithm.
|
|
38
|
+
*
|
|
39
|
+
* @returns The computed owner key.
|
|
40
|
+
*/
|
|
41
|
+
protected computeOwnerKey(): Promise<ByteArray>;
|
|
42
|
+
/**
|
|
43
|
+
* Computes the user key (U value) using RC4-40 algorithm.
|
|
44
|
+
*
|
|
45
|
+
* @returns The computed user key.
|
|
46
|
+
* @throws Error if document ID, owner key, or permissions are not set.
|
|
47
|
+
*/
|
|
48
|
+
protected computeUserKey(): Promise<ByteArray>;
|
|
49
|
+
/**
|
|
50
|
+
* Computes the master encryption key from the password.
|
|
51
|
+
*
|
|
52
|
+
* @returns The computed master key.
|
|
53
|
+
* @throws Error if required parameters are missing or password is incorrect.
|
|
54
|
+
*/
|
|
55
|
+
protected computeMasterKey(): Promise<ByteArray>;
|
|
56
|
+
/**
|
|
57
|
+
* Computes the object-specific encryption key.
|
|
58
|
+
*
|
|
59
|
+
* @param objectNumber - The PDF object number.
|
|
60
|
+
* @param generationNumber - The PDF generation number.
|
|
61
|
+
* @param algorithm - Optional algorithm type for key derivation.
|
|
62
|
+
* @returns The computed object key.
|
|
63
|
+
* @throws Error if object or generation number is invalid.
|
|
64
|
+
*/
|
|
65
|
+
computeObjectKey(objectNumber?: number, generationNumber?: number, algorithm?: PdfEncryptionAlgorithmType): Promise<ByteArray>;
|
|
66
|
+
/**
|
|
67
|
+
* Gets an RC4 cipher for the specified object.
|
|
68
|
+
*
|
|
69
|
+
* @param objectNumber - The PDF object number.
|
|
70
|
+
* @param generationNumber - The PDF generation number.
|
|
71
|
+
* @returns An RC4 cipher instance.
|
|
72
|
+
*/
|
|
73
|
+
protected getCipher(objectNumber?: number, generationNumber?: number): Promise<Cipher>;
|
|
74
|
+
/**
|
|
75
|
+
* Recovers the user password from the owner password.
|
|
76
|
+
*
|
|
77
|
+
* @param ownerPassword - The owner password.
|
|
78
|
+
* @returns The recovered user password as a string.
|
|
79
|
+
*/
|
|
80
|
+
recoverUserPassword(ownerPassword?: ByteArray | string): Promise<string>;
|
|
81
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { rc4 } from '../../crypto/ciphers/rc4';
|
|
2
|
+
import { computeMasterKey, deriveObjectKey, } from '../../crypto/key-derivation/key-derivation';
|
|
3
|
+
import { computeORc4_40, computeURc4_40, decryptUserPasswordRc4_40, } from '../../crypto/key-gen/key-gen-rc4-40';
|
|
4
|
+
import { assert } from '../../utils/assert';
|
|
5
|
+
import { bytesToString } from '../../utils/bytesToString';
|
|
6
|
+
import { stringToBytes } from '../../utils/stringToBytes';
|
|
7
|
+
import { PdfStandardSecurityHandler } from './base';
|
|
8
|
+
/**
|
|
9
|
+
* V1 security handler implementing 40-bit RC4 encryption.
|
|
10
|
+
* This is the original PDF encryption format (PDF 1.1).
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const handler = new PdfV1SecurityHandler({
|
|
15
|
+
* password: 'user123',
|
|
16
|
+
* ownerPassword: 'admin456'
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export class PdfV1SecurityHandler extends PdfStandardSecurityHandler {
|
|
21
|
+
/**
|
|
22
|
+
* Gets the encryption revision number.
|
|
23
|
+
*
|
|
24
|
+
* @returns 2 for V1 encryption.
|
|
25
|
+
*/
|
|
26
|
+
getRevision() {
|
|
27
|
+
return 2;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Gets the encryption version number.
|
|
31
|
+
*
|
|
32
|
+
* @returns 1 for 40-bit RC4 encryption.
|
|
33
|
+
*/
|
|
34
|
+
getVersion() {
|
|
35
|
+
return 1;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets the encryption key length in bits.
|
|
39
|
+
*
|
|
40
|
+
* @returns 40 for V1 encryption.
|
|
41
|
+
*/
|
|
42
|
+
getKeyBits() {
|
|
43
|
+
return 40;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Computes the owner key (O value) using RC4-40 algorithm.
|
|
47
|
+
*
|
|
48
|
+
* @returns The computed owner key.
|
|
49
|
+
*/
|
|
50
|
+
async computeOwnerKey() {
|
|
51
|
+
return await computeORc4_40(this.ownerPassword ?? this.password, this.password);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Computes the user key (U value) using RC4-40 algorithm.
|
|
55
|
+
*
|
|
56
|
+
* @returns The computed user key.
|
|
57
|
+
* @throws Error if document ID, owner key, or permissions are not set.
|
|
58
|
+
*/
|
|
59
|
+
async computeUserKey() {
|
|
60
|
+
if (!this.documentId) {
|
|
61
|
+
throw new Error('Document ID is required to compute U value');
|
|
62
|
+
}
|
|
63
|
+
if (!this.ownerKey) {
|
|
64
|
+
throw new Error('Owner key is required to compute U value');
|
|
65
|
+
}
|
|
66
|
+
if (typeof this.permissions !== 'number') {
|
|
67
|
+
throw new Error('Permissions are required to compute U value');
|
|
68
|
+
}
|
|
69
|
+
return await computeURc4_40(this.password, this.ownerKey, this.permissions, this.documentId.items[0].bytes);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Computes the master encryption key from the password.
|
|
73
|
+
*
|
|
74
|
+
* @returns The computed master key.
|
|
75
|
+
* @throws Error if required parameters are missing or password is incorrect.
|
|
76
|
+
*/
|
|
77
|
+
async computeMasterKey() {
|
|
78
|
+
await this.initKeys();
|
|
79
|
+
assert(this.ownerKey, 'ownerKey is required');
|
|
80
|
+
assert(this.permissions !== undefined, 'Permissions are required');
|
|
81
|
+
assert(this.documentId, 'Document ID is required');
|
|
82
|
+
assert(this.encryptMetadata !== undefined, 'Encrypt metadata is required');
|
|
83
|
+
if (this.ownerPassword) {
|
|
84
|
+
const recoverPass = await this.recoverUserPassword(this.ownerPassword);
|
|
85
|
+
return await computeMasterKey(stringToBytes(recoverPass), this.ownerKey, this.permissions, this.documentId.items[0].bytes, this.getKeyBits(), this.encryptMetadata, this.getRevision());
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const expectedUValue = await this.computeUserKey();
|
|
89
|
+
assert(this.userKey &&
|
|
90
|
+
expectedUValue.length === this.userKey.length &&
|
|
91
|
+
expectedUValue.every((byte, index) => byte === this.userKey[index]), 'Incorrect user password');
|
|
92
|
+
}
|
|
93
|
+
return await computeMasterKey(this.password, this.ownerKey, this.permissions, this.documentId.items[0].bytes, this.getKeyBits(), this.encryptMetadata, this.getRevision());
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Computes the object-specific encryption key.
|
|
97
|
+
*
|
|
98
|
+
* @param objectNumber - The PDF object number.
|
|
99
|
+
* @param generationNumber - The PDF generation number.
|
|
100
|
+
* @param algorithm - Optional algorithm type for key derivation.
|
|
101
|
+
* @returns The computed object key.
|
|
102
|
+
* @throws Error if object or generation number is invalid.
|
|
103
|
+
*/
|
|
104
|
+
async computeObjectKey(objectNumber, generationNumber, algorithm) {
|
|
105
|
+
assert(objectNumber !== undefined, 'Object number is required to derive the key');
|
|
106
|
+
assert(generationNumber !== undefined, 'Generation number is required to derive the key');
|
|
107
|
+
assert(objectNumber > 0, 'Object number cannot be zero or negative');
|
|
108
|
+
assert(generationNumber >= 0, 'Generation number cannot be negative');
|
|
109
|
+
this.masterKey ||= await this.computeMasterKey();
|
|
110
|
+
const key = await deriveObjectKey(this.masterKey, objectNumber, generationNumber, algorithm === 'AES-128-CBC');
|
|
111
|
+
return key;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Gets an RC4 cipher for the specified object.
|
|
115
|
+
*
|
|
116
|
+
* @param objectNumber - The PDF object number.
|
|
117
|
+
* @param generationNumber - The PDF generation number.
|
|
118
|
+
* @returns An RC4 cipher instance.
|
|
119
|
+
*/
|
|
120
|
+
async getCipher(objectNumber, generationNumber) {
|
|
121
|
+
const key = await this.computeObjectKey(objectNumber, generationNumber);
|
|
122
|
+
return rc4(key);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Recovers the user password from the owner password.
|
|
126
|
+
*
|
|
127
|
+
* @param ownerPassword - The owner password.
|
|
128
|
+
* @returns The recovered user password as a string.
|
|
129
|
+
*/
|
|
130
|
+
async recoverUserPassword(ownerPassword) {
|
|
131
|
+
ownerPassword ||= this.ownerPassword;
|
|
132
|
+
const password = await decryptUserPasswordRc4_40(stringToBytes(ownerPassword), this.ownerKey);
|
|
133
|
+
return bytesToString(password);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Cipher } from '../../crypto/types';
|
|
2
|
+
import { ByteArray } from '../../types';
|
|
3
|
+
import { PdfV1SecurityHandler } from './v1';
|
|
4
|
+
/**
|
|
5
|
+
* V2 security handler implementing 128-bit RC4 encryption.
|
|
6
|
+
* Extends V1 with stronger key length (PDF 1.4).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const handler = new PdfV2SecurityHandler({
|
|
11
|
+
* password: 'user123',
|
|
12
|
+
* ownerPassword: 'admin456'
|
|
13
|
+
* })
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare class PdfV2SecurityHandler extends PdfV1SecurityHandler {
|
|
17
|
+
/**
|
|
18
|
+
* Gets the encryption revision number.
|
|
19
|
+
*
|
|
20
|
+
* @returns 3 for V2 encryption.
|
|
21
|
+
*/
|
|
22
|
+
getRevision(): number;
|
|
23
|
+
/**
|
|
24
|
+
* Gets the encryption version number.
|
|
25
|
+
*
|
|
26
|
+
* @returns 2 for 128-bit RC4 encryption.
|
|
27
|
+
*/
|
|
28
|
+
getVersion(): number;
|
|
29
|
+
/**
|
|
30
|
+
* Gets the encryption key length in bits.
|
|
31
|
+
*
|
|
32
|
+
* @returns 128 for V2 encryption.
|
|
33
|
+
*/
|
|
34
|
+
getKeyBits(): number;
|
|
35
|
+
/**
|
|
36
|
+
* Computes the owner key (O value) using RC4-128 algorithm.
|
|
37
|
+
*
|
|
38
|
+
* @returns The computed owner key.
|
|
39
|
+
*/
|
|
40
|
+
protected computeOwnerKey(): Promise<ByteArray>;
|
|
41
|
+
/**
|
|
42
|
+
* Computes the user key (U value) using RC4-128 algorithm.
|
|
43
|
+
*
|
|
44
|
+
* @returns The computed user key.
|
|
45
|
+
* @throws Error if document ID, owner key, or permissions are not set.
|
|
46
|
+
*/
|
|
47
|
+
protected computeUserKey(): Promise<ByteArray>;
|
|
48
|
+
/**
|
|
49
|
+
* Gets an RC4 cipher for the specified object.
|
|
50
|
+
*
|
|
51
|
+
* @param objectNumber - The PDF object number.
|
|
52
|
+
* @param generationNumber - The PDF generation number.
|
|
53
|
+
* @returns An RC4 cipher instance.
|
|
54
|
+
*/
|
|
55
|
+
protected getCipher(objectNumber?: number, generationNumber?: number): Promise<Cipher>;
|
|
56
|
+
/**
|
|
57
|
+
* Recovers the user password from the owner password.
|
|
58
|
+
*
|
|
59
|
+
* @param ownerPassword - The owner password.
|
|
60
|
+
* @returns The recovered user password as a string.
|
|
61
|
+
*/
|
|
62
|
+
recoverUserPassword(ownerPassword?: ByteArray | string): Promise<string>;
|
|
63
|
+
}
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
import { rc4 } from '../../crypto/ciphers/rc4'
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} from '../../crypto/key-gen/key-gen-rc4-128'
|
|
7
|
-
import { Cipher } from '../../crypto/types'
|
|
8
|
-
import { ByteArray } from '../../types'
|
|
9
|
-
import { bytesToString } from '../../utils/bytesToString'
|
|
10
|
-
import { stringToBytes } from '../../utils/stringToBytes'
|
|
11
|
-
import { PdfV1SecurityHandler } from './v1'
|
|
12
|
-
|
|
1
|
+
import { rc4 } from '../../crypto/ciphers/rc4';
|
|
2
|
+
import { computeOValueRc4_128, computeUValueRc4_128, decryptUserPasswordRc4_128, } from '../../crypto/key-gen/key-gen-rc4-128';
|
|
3
|
+
import { bytesToString } from '../../utils/bytesToString';
|
|
4
|
+
import { stringToBytes } from '../../utils/stringToBytes';
|
|
5
|
+
import { PdfV1SecurityHandler } from './v1';
|
|
13
6
|
/**
|
|
14
7
|
* V2 security handler implementing 128-bit RC4 encryption.
|
|
15
8
|
* Extends V1 with stronger key length (PDF 1.4).
|
|
@@ -28,69 +21,51 @@ export class PdfV2SecurityHandler extends PdfV1SecurityHandler {
|
|
|
28
21
|
*
|
|
29
22
|
* @returns 3 for V2 encryption.
|
|
30
23
|
*/
|
|
31
|
-
getRevision()
|
|
32
|
-
return 3
|
|
24
|
+
getRevision() {
|
|
25
|
+
return 3;
|
|
33
26
|
}
|
|
34
|
-
|
|
35
27
|
/**
|
|
36
28
|
* Gets the encryption version number.
|
|
37
29
|
*
|
|
38
30
|
* @returns 2 for 128-bit RC4 encryption.
|
|
39
31
|
*/
|
|
40
|
-
getVersion()
|
|
41
|
-
return 2
|
|
32
|
+
getVersion() {
|
|
33
|
+
return 2;
|
|
42
34
|
}
|
|
43
|
-
|
|
44
35
|
/**
|
|
45
36
|
* Gets the encryption key length in bits.
|
|
46
37
|
*
|
|
47
38
|
* @returns 128 for V2 encryption.
|
|
48
39
|
*/
|
|
49
|
-
getKeyBits()
|
|
50
|
-
return 128
|
|
40
|
+
getKeyBits() {
|
|
41
|
+
return 128;
|
|
51
42
|
}
|
|
52
|
-
|
|
53
43
|
/**
|
|
54
44
|
* Computes the owner key (O value) using RC4-128 algorithm.
|
|
55
45
|
*
|
|
56
46
|
* @returns The computed owner key.
|
|
57
47
|
*/
|
|
58
|
-
|
|
59
|
-
return await computeOValueRc4_128(
|
|
60
|
-
this.ownerPassword ?? this.password,
|
|
61
|
-
this.password,
|
|
62
|
-
)
|
|
48
|
+
async computeOwnerKey() {
|
|
49
|
+
return await computeOValueRc4_128(this.ownerPassword ?? this.password, this.password);
|
|
63
50
|
}
|
|
64
|
-
|
|
65
51
|
/**
|
|
66
52
|
* Computes the user key (U value) using RC4-128 algorithm.
|
|
67
53
|
*
|
|
68
54
|
* @returns The computed user key.
|
|
69
55
|
* @throws Error if document ID, owner key, or permissions are not set.
|
|
70
56
|
*/
|
|
71
|
-
|
|
57
|
+
async computeUserKey() {
|
|
72
58
|
if (!this.documentId) {
|
|
73
|
-
throw new Error('Document ID is required to compute U value')
|
|
59
|
+
throw new Error('Document ID is required to compute U value');
|
|
74
60
|
}
|
|
75
|
-
|
|
76
61
|
if (!this.ownerKey) {
|
|
77
|
-
throw new Error('Owner key is required to compute U value')
|
|
62
|
+
throw new Error('Owner key is required to compute U value');
|
|
78
63
|
}
|
|
79
|
-
|
|
80
64
|
if (typeof this.permissions !== 'number') {
|
|
81
|
-
throw new Error('Permissions are required to compute U value')
|
|
65
|
+
throw new Error('Permissions are required to compute U value');
|
|
82
66
|
}
|
|
83
|
-
|
|
84
|
-
return await computeUValueRc4_128(
|
|
85
|
-
this.password,
|
|
86
|
-
this.ownerKey,
|
|
87
|
-
this.permissions,
|
|
88
|
-
this.documentId.items[0].bytes,
|
|
89
|
-
this.encryptMetadata,
|
|
90
|
-
this.getRevision(),
|
|
91
|
-
)
|
|
67
|
+
return await computeUValueRc4_128(this.password, this.ownerKey, this.permissions, this.documentId.items[0].bytes, this.encryptMetadata, this.getRevision());
|
|
92
68
|
}
|
|
93
|
-
|
|
94
69
|
/**
|
|
95
70
|
* Gets an RC4 cipher for the specified object.
|
|
96
71
|
*
|
|
@@ -98,31 +73,19 @@ export class PdfV2SecurityHandler extends PdfV1SecurityHandler {
|
|
|
98
73
|
* @param generationNumber - The PDF generation number.
|
|
99
74
|
* @returns An RC4 cipher instance.
|
|
100
75
|
*/
|
|
101
|
-
|
|
102
|
-
objectNumber
|
|
103
|
-
|
|
104
|
-
): Promise<Cipher> {
|
|
105
|
-
const key = await this.computeObjectKey(objectNumber, generationNumber)
|
|
106
|
-
|
|
107
|
-
return rc4(key)
|
|
76
|
+
async getCipher(objectNumber, generationNumber) {
|
|
77
|
+
const key = await this.computeObjectKey(objectNumber, generationNumber);
|
|
78
|
+
return rc4(key);
|
|
108
79
|
}
|
|
109
|
-
|
|
110
80
|
/**
|
|
111
81
|
* Recovers the user password from the owner password.
|
|
112
82
|
*
|
|
113
83
|
* @param ownerPassword - The owner password.
|
|
114
84
|
* @returns The recovered user password as a string.
|
|
115
85
|
*/
|
|
116
|
-
async recoverUserPassword(
|
|
117
|
-
ownerPassword
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const password = await decryptUserPasswordRc4_128(
|
|
122
|
-
stringToBytes(ownerPassword!),
|
|
123
|
-
this.ownerKey!,
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
return bytesToString(password)
|
|
86
|
+
async recoverUserPassword(ownerPassword) {
|
|
87
|
+
ownerPassword ||= this.ownerPassword;
|
|
88
|
+
const password = await decryptUserPasswordRc4_128(stringToBytes(ownerPassword), this.ownerKey);
|
|
89
|
+
return bytesToString(password);
|
|
127
90
|
}
|
|
128
91
|
}
|