pdf-lite 1.0.1-alpha.1 → 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,40 @@
|
|
|
1
|
+
import { stringToBytes } from '../../utils/stringToBytes';
|
|
2
|
+
import { PdfNumberToken } from './number-token';
|
|
3
|
+
import { PdfToken } from './token.js';
|
|
4
|
+
export class PdfXRefTableEntryToken extends PdfToken {
|
|
5
|
+
objectNumber;
|
|
6
|
+
generationNumber;
|
|
7
|
+
offset;
|
|
8
|
+
inUse;
|
|
9
|
+
constructor(offset, generationNumber, objectNumber, inUse) {
|
|
10
|
+
super();
|
|
11
|
+
this.objectNumber =
|
|
12
|
+
objectNumber instanceof PdfNumberToken
|
|
13
|
+
? objectNumber
|
|
14
|
+
: new PdfNumberToken({ value: objectNumber });
|
|
15
|
+
this.generationNumber =
|
|
16
|
+
generationNumber instanceof PdfNumberToken
|
|
17
|
+
? generationNumber
|
|
18
|
+
: new PdfNumberToken({ value: generationNumber });
|
|
19
|
+
this.offset =
|
|
20
|
+
offset instanceof PdfNumberToken
|
|
21
|
+
? offset
|
|
22
|
+
: new PdfNumberToken({ value: offset });
|
|
23
|
+
this.inUse = inUse;
|
|
24
|
+
}
|
|
25
|
+
toBytes() {
|
|
26
|
+
return PdfXRefTableEntryToken.toBytes(this.generationNumber, this.offset, this.inUse);
|
|
27
|
+
}
|
|
28
|
+
static toBytes(generationNumber, offset, inUse) {
|
|
29
|
+
const offsetString = offset instanceof PdfNumberToken
|
|
30
|
+
? offset.toString()
|
|
31
|
+
: new PdfNumberToken({ value: offset, padTo: 10 }).toString();
|
|
32
|
+
const generationNumberString = generationNumber instanceof PdfNumberToken
|
|
33
|
+
? generationNumber.toString()
|
|
34
|
+
: new PdfNumberToken({
|
|
35
|
+
value: generationNumber,
|
|
36
|
+
padTo: 5,
|
|
37
|
+
}).toString();
|
|
38
|
+
return stringToBytes(`${offsetString} ${generationNumberString} ${inUse ? 'n' : 'f'}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PdfNumberToken } from './number-token';
|
|
2
|
+
import { PdfToken } from './token';
|
|
3
|
+
export declare class PdfXRefTableSectionStartToken extends PdfToken {
|
|
4
|
+
start: PdfNumberToken;
|
|
5
|
+
count: PdfNumberToken;
|
|
6
|
+
constructor(start: number | PdfNumberToken, count: number | PdfNumberToken);
|
|
7
|
+
private static toBytes;
|
|
8
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { stringToBytes } from '../../utils/stringToBytes';
|
|
2
|
+
import { PdfNumberToken } from './number-token';
|
|
3
|
+
import { PdfToken } from './token';
|
|
4
|
+
export class PdfXRefTableSectionStartToken extends PdfToken {
|
|
5
|
+
start;
|
|
6
|
+
count;
|
|
7
|
+
constructor(start, count) {
|
|
8
|
+
super(PdfXRefTableSectionStartToken.toBytes(start, count));
|
|
9
|
+
this.start =
|
|
10
|
+
start instanceof PdfNumberToken
|
|
11
|
+
? start
|
|
12
|
+
: new PdfNumberToken({ value: start });
|
|
13
|
+
this.count =
|
|
14
|
+
count instanceof PdfNumberToken
|
|
15
|
+
? count
|
|
16
|
+
: new PdfNumberToken({ value: count });
|
|
17
|
+
}
|
|
18
|
+
static toBytes(start, count) {
|
|
19
|
+
return stringToBytes(`${start.toString()} ${count.toString()}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { stringToBytes } from '../../utils/stringToBytes';
|
|
2
|
+
import { PdfToken } from './token';
|
|
3
|
+
const XREF = stringToBytes('xref');
|
|
4
|
+
export class PdfXRefTableStartToken extends PdfToken {
|
|
5
|
+
byteOffset;
|
|
6
|
+
constructor(byteOffset) {
|
|
7
|
+
super(XREF);
|
|
8
|
+
this.byteOffset = byteOffset;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ByteArray } from '../../types.js';
|
|
2
|
+
import { Cipher } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates an AES-128-CBC cipher for PDF encryption.
|
|
5
|
+
* The cipher prepends a zero IV to encrypted data during encryption
|
|
6
|
+
* and extracts the IV from the first 16 bytes during decryption.
|
|
7
|
+
*
|
|
8
|
+
* @param key - The 16-byte encryption key.
|
|
9
|
+
* @returns A Cipher object with encrypt and decrypt methods.
|
|
10
|
+
* @throws Error if the key is not exactly 16 bytes.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const cipher = aes128(key)
|
|
15
|
+
* const encrypted = await cipher.encrypt(plaintext)
|
|
16
|
+
* const decrypted = await cipher.decrypt(encrypted)
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function aes128(key: ByteArray): Cipher;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { aes128cbcDecrypt, aes128cbcEncrypt } from '../../utils/algos.js'
|
|
3
|
-
import { Cipher } from '../types.js'
|
|
4
|
-
|
|
1
|
+
import { aes128cbcDecrypt, aes128cbcEncrypt } from '../../utils/algos.js';
|
|
5
2
|
/**
|
|
6
3
|
* Creates an AES-128-CBC cipher for PDF encryption.
|
|
7
4
|
* The cipher prepends a zero IV to encrypted data during encryption
|
|
@@ -18,14 +15,10 @@ import { Cipher } from '../types.js'
|
|
|
18
15
|
* const decrypted = await cipher.decrypt(encrypted)
|
|
19
16
|
* ```
|
|
20
17
|
*/
|
|
21
|
-
export function aes128(key
|
|
18
|
+
export function aes128(key) {
|
|
22
19
|
if (key.length !== 16)
|
|
23
|
-
throw new Error(
|
|
24
|
-
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
const iv = new Uint8Array(16) // Zero IV, as per PDF spec
|
|
28
|
-
|
|
20
|
+
throw new Error(`AES-128 key must be exactly 16 bytes, got ${key.length}`);
|
|
21
|
+
const iv = new Uint8Array(16); // Zero IV, as per PDF spec
|
|
29
22
|
return {
|
|
30
23
|
/**
|
|
31
24
|
* Encrypts data using AES-128-CBC.
|
|
@@ -35,16 +28,14 @@ export function aes128(key: ByteArray): Cipher {
|
|
|
35
28
|
* @returns A promise that resolves to IV followed by ciphertext.
|
|
36
29
|
* @throws Error if the IV is not exactly 16 bytes.
|
|
37
30
|
*/
|
|
38
|
-
encrypt: async (data
|
|
39
|
-
if (iv.length !== 16)
|
|
40
|
-
|
|
41
|
-
const encrypted = await aes128cbcEncrypt(key, data)
|
|
42
|
-
const result = new Uint8Array(iv.length + encrypted.length)
|
|
43
|
-
|
|
44
|
-
result.set(
|
|
45
|
-
result
|
|
46
|
-
|
|
47
|
-
return result
|
|
31
|
+
encrypt: async (data) => {
|
|
32
|
+
if (iv.length !== 16)
|
|
33
|
+
throw new Error('IV must be exactly 16 bytes');
|
|
34
|
+
const encrypted = await aes128cbcEncrypt(key, data);
|
|
35
|
+
const result = new Uint8Array(iv.length + encrypted.length);
|
|
36
|
+
result.set(iv, 0);
|
|
37
|
+
result.set(encrypted, iv.length);
|
|
38
|
+
return result;
|
|
48
39
|
},
|
|
49
40
|
/**
|
|
50
41
|
* Decrypts data using AES-128-CBC.
|
|
@@ -53,11 +44,10 @@ export function aes128(key: ByteArray): Cipher {
|
|
|
53
44
|
* @param data - The data to decrypt (IV + ciphertext).
|
|
54
45
|
* @returns A promise that resolves to the decrypted plaintext.
|
|
55
46
|
*/
|
|
56
|
-
decrypt: async (data
|
|
57
|
-
const iv = data.slice(0, 16)
|
|
58
|
-
const ciphertext = data.slice(16)
|
|
59
|
-
|
|
60
|
-
return await aes128cbcDecrypt(key, ciphertext, iv)
|
|
47
|
+
decrypt: async (data) => {
|
|
48
|
+
const iv = data.slice(0, 16);
|
|
49
|
+
const ciphertext = data.slice(16);
|
|
50
|
+
return await aes128cbcDecrypt(key, ciphertext, iv);
|
|
61
51
|
},
|
|
62
|
-
}
|
|
52
|
+
};
|
|
63
53
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ByteArray } from '../../types.js';
|
|
2
|
+
import { Cipher } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates an AES-256-CBC cipher for PDF encryption.
|
|
5
|
+
* The cipher prepends a zero IV to encrypted data during encryption
|
|
6
|
+
* and extracts the IV from the first 16 bytes during decryption.
|
|
7
|
+
*
|
|
8
|
+
* @param key - The 32-byte encryption key.
|
|
9
|
+
* @returns A Cipher object with encrypt and decrypt methods.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const cipher = aes256(key)
|
|
14
|
+
* const encrypted = await cipher.encrypt(plaintext)
|
|
15
|
+
* const decrypted = await cipher.decrypt(encrypted)
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function aes256(key: ByteArray): Cipher;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { aes256cbcDecrypt, aes256cbcEncrypt } from '../../utils/algos.js'
|
|
3
|
-
import { Cipher } from '../types.js'
|
|
4
|
-
|
|
1
|
+
import { aes256cbcDecrypt, aes256cbcEncrypt } from '../../utils/algos.js';
|
|
5
2
|
/**
|
|
6
3
|
* Creates an AES-256-CBC cipher for PDF encryption.
|
|
7
4
|
* The cipher prepends a zero IV to encrypted data during encryption
|
|
@@ -17,8 +14,8 @@ import { Cipher } from '../types.js'
|
|
|
17
14
|
* const decrypted = await cipher.decrypt(encrypted)
|
|
18
15
|
* ```
|
|
19
16
|
*/
|
|
20
|
-
export function aes256(key
|
|
21
|
-
const iv = new Uint8Array(16) // Zero IV, as per PDF spec
|
|
17
|
+
export function aes256(key) {
|
|
18
|
+
const iv = new Uint8Array(16); // Zero IV, as per PDF spec
|
|
22
19
|
return {
|
|
23
20
|
/**
|
|
24
21
|
* Encrypts data using AES-256-CBC.
|
|
@@ -27,12 +24,12 @@ export function aes256(key: ByteArray): Cipher {
|
|
|
27
24
|
* @param data - The data to encrypt.
|
|
28
25
|
* @returns A promise that resolves to IV followed by ciphertext.
|
|
29
26
|
*/
|
|
30
|
-
encrypt: async (data
|
|
31
|
-
const encrypted = await aes256cbcEncrypt(key, data, iv)
|
|
32
|
-
const result = new Uint8Array(iv.length + encrypted.length)
|
|
33
|
-
result.set(iv, 0)
|
|
34
|
-
result.set(encrypted, iv.length)
|
|
35
|
-
return result
|
|
27
|
+
encrypt: async (data) => {
|
|
28
|
+
const encrypted = await aes256cbcEncrypt(key, data, iv);
|
|
29
|
+
const result = new Uint8Array(iv.length + encrypted.length);
|
|
30
|
+
result.set(iv, 0);
|
|
31
|
+
result.set(encrypted, iv.length);
|
|
32
|
+
return result;
|
|
36
33
|
},
|
|
37
34
|
/**
|
|
38
35
|
* Decrypts data using AES-256-CBC.
|
|
@@ -41,10 +38,10 @@ export function aes256(key: ByteArray): Cipher {
|
|
|
41
38
|
* @param data - The data to decrypt (IV + ciphertext).
|
|
42
39
|
* @returns A promise that resolves to the decrypted plaintext.
|
|
43
40
|
*/
|
|
44
|
-
decrypt: async (data
|
|
45
|
-
const iv = data.slice(0, 16)
|
|
46
|
-
const ciphertext = data.slice(16)
|
|
47
|
-
return await aes256cbcDecrypt(key, ciphertext, iv)
|
|
41
|
+
decrypt: async (data) => {
|
|
42
|
+
const iv = data.slice(0, 16);
|
|
43
|
+
const ciphertext = data.slice(16);
|
|
44
|
+
return await aes256cbcDecrypt(key, ciphertext, iv);
|
|
48
45
|
},
|
|
49
|
-
}
|
|
46
|
+
};
|
|
50
47
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ByteArray } from '../../types.js';
|
|
2
|
+
import { Cipher } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates an RC4 cipher for PDF encryption.
|
|
5
|
+
* RC4 is a symmetric stream cipher where encryption and decryption
|
|
6
|
+
* use the same operation (XOR with the key stream).
|
|
7
|
+
*
|
|
8
|
+
* @param key - The encryption key (variable length).
|
|
9
|
+
* @returns A Cipher object with encrypt and decrypt methods.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const cipher = rc4(key)
|
|
14
|
+
* const encrypted = await cipher.encrypt(plaintext)
|
|
15
|
+
* const decrypted = await cipher.decrypt(encrypted)
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function rc4(key: ByteArray): Cipher;
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { ByteArray } from '../../types.js'
|
|
2
|
-
import { Cipher } from '../types.js'
|
|
3
|
-
|
|
4
1
|
/**
|
|
5
2
|
* Creates an RC4 cipher for PDF encryption.
|
|
6
3
|
* RC4 is a symmetric stream cipher where encryption and decryption
|
|
@@ -16,7 +13,7 @@ import { Cipher } from '../types.js'
|
|
|
16
13
|
* const decrypted = await cipher.decrypt(encrypted)
|
|
17
14
|
* ```
|
|
18
15
|
*/
|
|
19
|
-
export function rc4(key
|
|
16
|
+
export function rc4(key) {
|
|
20
17
|
/**
|
|
21
18
|
* RC4 Key Scheduling Algorithm (KSA).
|
|
22
19
|
* Initializes the permutation in the S array based on the key.
|
|
@@ -24,17 +21,17 @@ export function rc4(key: ByteArray): Cipher {
|
|
|
24
21
|
* @param key - The encryption key.
|
|
25
22
|
* @returns The initialized S array (256 bytes).
|
|
26
23
|
*/
|
|
27
|
-
function ksa(key
|
|
28
|
-
const S = new Uint8Array(256)
|
|
29
|
-
for (let i = 0; i < 256; i++)
|
|
30
|
-
|
|
24
|
+
function ksa(key) {
|
|
25
|
+
const S = new Uint8Array(256);
|
|
26
|
+
for (let i = 0; i < 256; i++)
|
|
27
|
+
S[i] = i;
|
|
28
|
+
let j = 0;
|
|
31
29
|
for (let i = 0; i < 256; i++) {
|
|
32
|
-
j = (j + S[i] + key[i % key.length]) & 0xff
|
|
33
|
-
|
|
30
|
+
j = (j + S[i] + key[i % key.length]) & 0xff;
|
|
31
|
+
[S[i], S[j]] = [S[j], S[i]];
|
|
34
32
|
}
|
|
35
|
-
return S
|
|
33
|
+
return S;
|
|
36
34
|
}
|
|
37
|
-
|
|
38
35
|
/**
|
|
39
36
|
* RC4 Pseudo-Random Generation Algorithm (PRGA).
|
|
40
37
|
* Generates the key stream and XORs it with the data.
|
|
@@ -43,22 +40,20 @@ export function rc4(key: ByteArray): Cipher {
|
|
|
43
40
|
* @param S - The initialized S array from KSA.
|
|
44
41
|
* @returns The encrypted or decrypted data.
|
|
45
42
|
*/
|
|
46
|
-
function rc4(data
|
|
47
|
-
const out = new Uint8Array(data.length)
|
|
48
|
-
let i = 0,
|
|
49
|
-
|
|
50
|
-
const s = S.slice() // Copy S for each operation
|
|
43
|
+
function rc4(data, S) {
|
|
44
|
+
const out = new Uint8Array(data.length);
|
|
45
|
+
let i = 0, j = 0;
|
|
46
|
+
const s = S.slice(); // Copy S for each operation
|
|
51
47
|
for (let k = 0; k < data.length; k++) {
|
|
52
|
-
i = (i + 1) & 0xff
|
|
53
|
-
j = (j + s[i]) & 0xff
|
|
54
|
-
|
|
55
|
-
const rnd = s[(s[i] + s[j]) & 0xff]
|
|
56
|
-
out[k] = data[k] ^ rnd
|
|
48
|
+
i = (i + 1) & 0xff;
|
|
49
|
+
j = (j + s[i]) & 0xff;
|
|
50
|
+
[s[i], s[j]] = [s[j], s[i]];
|
|
51
|
+
const rnd = s[(s[i] + s[j]) & 0xff];
|
|
52
|
+
out[k] = data[k] ^ rnd;
|
|
57
53
|
}
|
|
58
|
-
return out
|
|
54
|
+
return out;
|
|
59
55
|
}
|
|
60
|
-
|
|
61
|
-
const S = ksa(key)
|
|
56
|
+
const S = ksa(key);
|
|
62
57
|
return {
|
|
63
58
|
/**
|
|
64
59
|
* Encrypts data using RC4.
|
|
@@ -66,8 +61,8 @@ export function rc4(key: ByteArray): Cipher {
|
|
|
66
61
|
* @param data - The data to encrypt.
|
|
67
62
|
* @returns A promise that resolves to the encrypted data.
|
|
68
63
|
*/
|
|
69
|
-
encrypt: async (data
|
|
70
|
-
return rc4(data, S)
|
|
64
|
+
encrypt: async (data) => {
|
|
65
|
+
return rc4(data, S);
|
|
71
66
|
},
|
|
72
67
|
/**
|
|
73
68
|
* Decrypts data using RC4.
|
|
@@ -75,8 +70,8 @@ export function rc4(key: ByteArray): Cipher {
|
|
|
75
70
|
* @param data - The data to decrypt.
|
|
76
71
|
* @returns A promise that resolves to the decrypted data.
|
|
77
72
|
*/
|
|
78
|
-
decrypt: async (data
|
|
79
|
-
return rc4(data, S)
|
|
73
|
+
decrypt: async (data) => {
|
|
74
|
+
return rc4(data, S);
|
|
80
75
|
},
|
|
81
|
-
}
|
|
76
|
+
};
|
|
82
77
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default password padding used in PDF encryption.
|
|
3
|
+
* This 32-byte constant is defined in the PDF specification and is used
|
|
4
|
+
* to pad passwords shorter than 32 bytes during encryption key derivation.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DEFAULT_PADDING: Uint8Array<ArrayBuffer>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ByteArray } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Computes the Algorithm 2.B hash for PDF 2.0 AES-256 encryption.
|
|
4
|
+
* This iterative hash algorithm uses SHA-256, SHA-384, or SHA-512 based on
|
|
5
|
+
* intermediate results, running for at least 64 rounds.
|
|
6
|
+
*
|
|
7
|
+
* @param password - The user or owner password.
|
|
8
|
+
* @param salt - The 8-byte validation or key salt.
|
|
9
|
+
* @param userKey - The user key (required for owner password validation). Defaults to empty.
|
|
10
|
+
* @returns A promise that resolves to a 32-byte hash.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const hash = await computeAlgorithm2bHash(password, salt)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare function computeAlgorithm2bHash(password: ByteArray, salt: ByteArray, userKey?: ByteArray): Promise<ByteArray>;
|
|
18
|
+
/**
|
|
19
|
+
* Validates a password against a stored hash using the Algorithm 2.B hash.
|
|
20
|
+
*
|
|
21
|
+
* @param password - The password to validate.
|
|
22
|
+
* @param key - The stored key containing the hash (first 32 bytes) and validation salt (bytes 32-40).
|
|
23
|
+
* @param extra - Extra data for owner password validation (user key).
|
|
24
|
+
* @returns A promise that resolves to the computed hash if validation succeeds.
|
|
25
|
+
* @throws Error if the password is invalid or salt/hash lengths are incorrect.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* try {
|
|
30
|
+
* await validatePasswordHash(password, storedKey)
|
|
31
|
+
* console.log('Password is valid')
|
|
32
|
+
* } catch (e) {
|
|
33
|
+
* console.log('Invalid password')
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function validatePasswordHash(password: ByteArray, key: ByteArray, extra?: ByteArray): Promise<ByteArray>;
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves the file encryption key using user or owner password.
|
|
40
|
+
* Tries owner password first, then falls back to user password.
|
|
41
|
+
*
|
|
42
|
+
* @param userPassword - The user password to try.
|
|
43
|
+
* @param ownerPassword - The owner password to try.
|
|
44
|
+
* @param u - The 48-byte /U value from the encryption dictionary.
|
|
45
|
+
* @param ue - The 32-byte /UE value (encrypted user key).
|
|
46
|
+
* @param o - The 48-byte /O value from the encryption dictionary.
|
|
47
|
+
* @param oe - The 32-byte /OE value (encrypted owner key).
|
|
48
|
+
* @returns A promise that resolves to the 32-byte file encryption key.
|
|
49
|
+
* @throws Error if both passwords are invalid.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const fileKey = await getFileKey(userPw, ownerPw, U, UE, O, OE)
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function getFileKey(userPassword: ByteArray, ownerPassword: ByteArray, u: ByteArray, ue: ByteArray, o: ByteArray, oe: ByteArray): Promise<ByteArray>;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { aes128CbcNoPaddingEncrypt, aes256CbcNoPaddingDecrypt, sha256, sha384, sha512, } from '../../utils/algos';
|
|
2
|
+
import { assert } from '../../utils/assert';
|
|
3
|
+
/**
|
|
4
|
+
* Converts the first 16 bytes of input to a big-endian bigint.
|
|
5
|
+
*
|
|
6
|
+
* @param input - The byte array to convert.
|
|
7
|
+
* @returns A 128-bit bigint value.
|
|
8
|
+
*/
|
|
9
|
+
function getUint16ByteBigEndian(input) {
|
|
10
|
+
let value = 0n;
|
|
11
|
+
for (let i = 0; i < 16; i++) {
|
|
12
|
+
value = (value << 8n) | BigInt(input[i]);
|
|
13
|
+
}
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Computes the Algorithm 2.B hash for PDF 2.0 AES-256 encryption.
|
|
18
|
+
* This iterative hash algorithm uses SHA-256, SHA-384, or SHA-512 based on
|
|
19
|
+
* intermediate results, running for at least 64 rounds.
|
|
20
|
+
*
|
|
21
|
+
* @param password - The user or owner password.
|
|
22
|
+
* @param salt - The 8-byte validation or key salt.
|
|
23
|
+
* @param userKey - The user key (required for owner password validation). Defaults to empty.
|
|
24
|
+
* @returns A promise that resolves to a 32-byte hash.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const hash = await computeAlgorithm2bHash(password, salt)
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export async function computeAlgorithm2bHash(password, salt, userKey = new Uint8Array()) {
|
|
32
|
+
// Step 1: Initial hash
|
|
33
|
+
let K = new Uint8Array(password.length + salt.length + userKey.length);
|
|
34
|
+
K.set(password);
|
|
35
|
+
K.set(salt, password.length);
|
|
36
|
+
K.set(userKey, password.length + salt.length);
|
|
37
|
+
K = await sha256(K);
|
|
38
|
+
let roundNumber = 0;
|
|
39
|
+
let E = new Uint8Array();
|
|
40
|
+
while (roundNumber < 64 || E.at(-1) > roundNumber - 32) {
|
|
41
|
+
// Step 2: K1 = 64 × (password || K || [userKey])
|
|
42
|
+
const base = new Uint8Array(password.length + K.length + userKey.length);
|
|
43
|
+
base.set(password);
|
|
44
|
+
base.set(K, password.length);
|
|
45
|
+
base.set(userKey, password.length + K.length);
|
|
46
|
+
const K1 = new Uint8Array(base.length * 64);
|
|
47
|
+
for (let i = 0; i < 64; i++) {
|
|
48
|
+
K1.set(base, i * base.length);
|
|
49
|
+
}
|
|
50
|
+
// Step 3: Encrypt K1 with AES-128-CBC using key/iv from K
|
|
51
|
+
const key = K.subarray(0, 16);
|
|
52
|
+
const iv = K.subarray(16, 32);
|
|
53
|
+
E = await aes128CbcNoPaddingEncrypt(key, K1, iv);
|
|
54
|
+
// Step 4: Choose hash
|
|
55
|
+
const value = getUint16ByteBigEndian(E);
|
|
56
|
+
const mod = Number(value % 3n);
|
|
57
|
+
if (mod === 0) {
|
|
58
|
+
K = await sha256(E);
|
|
59
|
+
}
|
|
60
|
+
else if (mod === 1) {
|
|
61
|
+
K = await sha384(E);
|
|
62
|
+
}
|
|
63
|
+
else if (mod === 2) {
|
|
64
|
+
K = await sha512(E);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
throw new Error('Invalid mod');
|
|
68
|
+
}
|
|
69
|
+
roundNumber++;
|
|
70
|
+
}
|
|
71
|
+
return K.subarray(0, 32);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Validates a password against a stored hash using the Algorithm 2.B hash.
|
|
75
|
+
*
|
|
76
|
+
* @param password - The password to validate.
|
|
77
|
+
* @param key - The stored key containing the hash (first 32 bytes) and validation salt (bytes 32-40).
|
|
78
|
+
* @param extra - Extra data for owner password validation (user key).
|
|
79
|
+
* @returns A promise that resolves to the computed hash if validation succeeds.
|
|
80
|
+
* @throws Error if the password is invalid or salt/hash lengths are incorrect.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* try {
|
|
85
|
+
* await validatePasswordHash(password, storedKey)
|
|
86
|
+
* console.log('Password is valid')
|
|
87
|
+
* } catch (e) {
|
|
88
|
+
* console.log('Invalid password')
|
|
89
|
+
* }
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export async function validatePasswordHash(password, key, extra) {
|
|
93
|
+
const validationSalt = key.slice(32, 40);
|
|
94
|
+
if (validationSalt.length !== 8) {
|
|
95
|
+
throw new Error('Invalid salt length');
|
|
96
|
+
}
|
|
97
|
+
const hash = await computeAlgorithm2bHash(password, validationSalt, extra);
|
|
98
|
+
if (hash.length !== 32) {
|
|
99
|
+
throw new Error('Invalid hash length');
|
|
100
|
+
}
|
|
101
|
+
for (let i = 0; i < 32; i++) {
|
|
102
|
+
if (hash[i] !== key[i]) {
|
|
103
|
+
throw new Error('Key mismatch');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return hash;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Retrieves the file encryption key using user or owner password.
|
|
110
|
+
* Tries owner password first, then falls back to user password.
|
|
111
|
+
*
|
|
112
|
+
* @param userPassword - The user password to try.
|
|
113
|
+
* @param ownerPassword - The owner password to try.
|
|
114
|
+
* @param u - The 48-byte /U value from the encryption dictionary.
|
|
115
|
+
* @param ue - The 32-byte /UE value (encrypted user key).
|
|
116
|
+
* @param o - The 48-byte /O value from the encryption dictionary.
|
|
117
|
+
* @param oe - The 32-byte /OE value (encrypted owner key).
|
|
118
|
+
* @returns A promise that resolves to the 32-byte file encryption key.
|
|
119
|
+
* @throws Error if both passwords are invalid.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* const fileKey = await getFileKey(userPw, ownerPw, U, UE, O, OE)
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export async function getFileKey(userPassword, ownerPassword, u, ue, o, oe) {
|
|
127
|
+
if (userPassword.length > 128) {
|
|
128
|
+
userPassword = userPassword.subarray(0, 128);
|
|
129
|
+
}
|
|
130
|
+
if (ownerPassword.length > 128) {
|
|
131
|
+
ownerPassword = ownerPassword.subarray(0, 128);
|
|
132
|
+
}
|
|
133
|
+
assert(oe.length === 32, 'Invalid OE length');
|
|
134
|
+
assert(ue.length === 32, 'Invalid UE length');
|
|
135
|
+
assert(u.length === 48, 'Invalid U length');
|
|
136
|
+
assert(o.length === 48, 'Invalid O length');
|
|
137
|
+
try {
|
|
138
|
+
// First try owner password
|
|
139
|
+
await validatePasswordHash(ownerPassword, o, u);
|
|
140
|
+
const hash = await computeAlgorithm2bHash(ownerPassword, o.subarray(40, 48), u);
|
|
141
|
+
const key = await aes256CbcNoPaddingDecrypt(hash, oe, new Uint8Array(16));
|
|
142
|
+
return key;
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
try {
|
|
146
|
+
// Then try user password
|
|
147
|
+
await validatePasswordHash(userPassword, u);
|
|
148
|
+
const hash = await computeAlgorithm2bHash(userPassword, u.subarray(40, 48));
|
|
149
|
+
const key = await aes256CbcNoPaddingDecrypt(hash, ue, new Uint8Array(16));
|
|
150
|
+
return key;
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
throw new Error('Invalid password');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ByteArray } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Pads a password to exactly 32 bytes using the PDF standard padding.
|
|
4
|
+
* If the password is shorter than 32 bytes, it is padded with bytes from DEFAULT_PADDING.
|
|
5
|
+
* If the password is 32 bytes or longer, only the first 32 bytes are used.
|
|
6
|
+
*
|
|
7
|
+
* @param password - The password to pad.
|
|
8
|
+
* @returns A 32-byte padded password.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const padded = padPassword(new Uint8Array([1, 2, 3])) // Returns 32-byte array
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function padPassword(password: ByteArray): ByteArray;
|
|
16
|
+
/**
|
|
17
|
+
* Compute the master encryption key for a PDF file.
|
|
18
|
+
*
|
|
19
|
+
* @param password User-supplied password (empty if no password)
|
|
20
|
+
* @param ownerKey Owner key (/O value)
|
|
21
|
+
* @param permissions /P value
|
|
22
|
+
* @param id0 First element of /ID array
|
|
23
|
+
* @param keyLengthBits Usually 40, 128 or 256
|
|
24
|
+
* @param encryptMetadata Whether /EncryptMetadata is false
|
|
25
|
+
*/
|
|
26
|
+
export declare function computeMasterKey(password: ByteArray, ownerKey: ByteArray, permissions: number, id0: ByteArray, keyLengthBits: number, encryptMetadata: boolean, revision?: number): Promise<ByteArray>;
|
|
27
|
+
/**
|
|
28
|
+
* Derives an object-specific encryption key from the master key.
|
|
29
|
+
* Used to encrypt individual PDF objects with unique keys.
|
|
30
|
+
*
|
|
31
|
+
* @param mkey - The master encryption key.
|
|
32
|
+
* @param objNumber - The PDF object number.
|
|
33
|
+
* @param objGeneration - The PDF object generation number.
|
|
34
|
+
* @param useAesSalt - Whether to include the AES salt ('sAlT'). Defaults to true.
|
|
35
|
+
* @returns A promise that resolves to the derived object key.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const objectKey = await deriveObjectKey(masterKey, 5, 0)
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function deriveObjectKey(mkey: ByteArray, objNumber: number, objGeneration: number, useAesSalt?: boolean): Promise<ByteArray>;
|