pdf-lite 1.0.1-alpha.2 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/decoder.d.ts +39 -0
- package/dist/core/decoder.js +367 -0
- package/dist/core/generators.d.ts +37 -0
- package/{packages/pdf-lite/src/core/generators.ts → dist/core/generators.js} +36 -67
- package/dist/core/incremental-parser.d.ts +103 -0
- package/{packages/pdf-lite/src/core/incremental-parser.ts → dist/core/incremental-parser.js} +63 -100
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +2 -0
- package/dist/core/objects/pdf-array.d.ts +12 -0
- package/dist/core/objects/pdf-array.js +42 -0
- package/dist/core/objects/pdf-boolean.d.ts +8 -0
- package/dist/core/objects/pdf-boolean.js +15 -0
- package/dist/core/objects/pdf-comment.d.ts +18 -0
- package/dist/core/objects/pdf-comment.js +39 -0
- package/dist/core/objects/pdf-date.d.ts +5 -0
- package/dist/core/objects/pdf-date.js +40 -0
- package/dist/core/objects/pdf-dictionary.d.ts +22 -0
- package/dist/core/objects/pdf-dictionary.js +136 -0
- package/dist/core/objects/pdf-hexadecimal.d.ts +17 -0
- package/dist/core/objects/pdf-hexadecimal.js +42 -0
- package/dist/core/objects/pdf-indirect-object.d.ts +27 -0
- package/dist/core/objects/pdf-indirect-object.js +100 -0
- package/dist/core/objects/pdf-name.d.ts +8 -0
- package/dist/core/objects/pdf-name.js +15 -0
- package/dist/core/objects/pdf-null.d.ts +7 -0
- package/dist/core/objects/pdf-null.js +11 -0
- package/dist/core/objects/pdf-number.d.ts +25 -0
- package/dist/core/objects/pdf-number.js +77 -0
- package/dist/core/objects/pdf-object-reference.d.ts +9 -0
- package/dist/core/objects/pdf-object-reference.js +19 -0
- package/dist/core/objects/pdf-object.d.ts +30 -0
- package/dist/core/objects/pdf-object.js +77 -0
- package/dist/core/objects/pdf-start-xref.d.ts +10 -0
- package/dist/core/objects/pdf-start-xref.js +32 -0
- package/dist/core/objects/pdf-stream.d.ts +100 -0
- package/dist/core/objects/pdf-stream.js +521 -0
- package/dist/core/objects/pdf-string.d.ts +15 -0
- package/dist/core/objects/pdf-string.js +30 -0
- package/dist/core/objects/pdf-trailer.d.ts +26 -0
- package/dist/core/objects/pdf-trailer.js +33 -0
- package/dist/core/objects/pdf-xref-table.d.ts +48 -0
- package/dist/core/objects/pdf-xref-table.js +183 -0
- package/{packages/pdf-lite/src/core/parser.ts → dist/core/parser.d.ts} +3 -4
- package/dist/core/parser.js +9 -0
- package/dist/core/ref.d.ts +59 -0
- package/{packages/pdf-lite/src/core/ref.ts → dist/core/ref.js} +23 -41
- package/dist/core/serializer.d.ts +36 -0
- package/{packages/pdf-lite/src/core/serializer.ts → dist/core/serializer.js} +20 -30
- package/dist/core/streams/object-stream.d.ts +6 -0
- package/dist/core/streams/object-stream.js +15 -0
- package/dist/core/tokeniser.d.ts +98 -0
- package/dist/core/tokeniser.js +552 -0
- package/dist/core/tokens/boolean-token.d.ts +8 -0
- package/dist/core/tokens/boolean-token.js +15 -0
- package/dist/core/tokens/byte-offset-token.d.ts +8 -0
- package/dist/core/tokens/byte-offset-token.js +15 -0
- package/dist/core/tokens/comment-token.d.ts +10 -0
- package/dist/core/tokens/comment-token.js +26 -0
- package/dist/core/tokens/end-array-token.d.ts +4 -0
- package/dist/core/tokens/end-array-token.js +8 -0
- package/dist/core/tokens/end-dictionary-token.d.ts +4 -0
- package/dist/core/tokens/end-dictionary-token.js +8 -0
- package/dist/core/tokens/end-object-token.d.ts +4 -0
- package/dist/core/tokens/end-object-token.js +8 -0
- package/dist/core/tokens/end-stream-token.d.ts +5 -0
- package/dist/core/tokens/end-stream-token.js +8 -0
- package/dist/core/tokens/hexadecimal-token.d.ts +7 -0
- package/dist/core/tokens/hexadecimal-token.js +16 -0
- package/dist/core/tokens/name-token.d.ts +6 -0
- package/dist/core/tokens/name-token.js +15 -0
- package/dist/core/tokens/null-token.d.ts +4 -0
- package/dist/core/tokens/null-token.js +8 -0
- package/dist/core/tokens/number-token.d.ts +24 -0
- package/dist/core/tokens/number-token.js +104 -0
- package/dist/core/tokens/object-reference-token.d.ts +7 -0
- package/dist/core/tokens/object-reference-token.js +17 -0
- package/dist/core/tokens/start-array-token.d.ts +4 -0
- package/dist/core/tokens/start-array-token.js +8 -0
- package/dist/core/tokens/start-dictionary-token.d.ts +4 -0
- package/dist/core/tokens/start-dictionary-token.js +8 -0
- package/dist/core/tokens/start-object-token.d.ts +8 -0
- package/dist/core/tokens/start-object-token.js +17 -0
- package/dist/core/tokens/start-stream-token.d.ts +8 -0
- package/dist/core/tokens/start-stream-token.js +38 -0
- package/dist/core/tokens/start-xref-token.d.ts +4 -0
- package/dist/core/tokens/start-xref-token.js +8 -0
- package/dist/core/tokens/stream-chunk-token.d.ts +5 -0
- package/dist/core/tokens/stream-chunk-token.js +6 -0
- package/dist/core/tokens/string-token.d.ts +7 -0
- package/dist/core/tokens/string-token.js +13 -0
- package/dist/core/tokens/token.d.ts +10 -0
- package/dist/core/tokens/token.js +32 -0
- package/dist/core/tokens/trailer-token.d.ts +5 -0
- package/dist/core/tokens/trailer-token.js +10 -0
- package/dist/core/tokens/whitespace-token.d.ts +11 -0
- package/dist/core/tokens/whitespace-token.js +36 -0
- package/dist/core/tokens/xref-table-entry-token.d.ts +13 -0
- package/dist/core/tokens/xref-table-entry-token.js +40 -0
- package/dist/core/tokens/xref-table-section-start-token.d.ts +8 -0
- package/dist/core/tokens/xref-table-section-start-token.js +21 -0
- package/dist/core/tokens/xref-table-start-token.d.ts +5 -0
- package/dist/core/tokens/xref-table-start-token.js +10 -0
- package/dist/crypto/ciphers/aes128.d.ts +19 -0
- package/{packages/pdf-lite/src/crypto/ciphers/aes128.ts → dist/crypto/ciphers/aes128.js} +17 -27
- package/dist/crypto/ciphers/aes256.d.ts +18 -0
- package/{packages/pdf-lite/src/crypto/ciphers/aes256.ts → dist/crypto/ciphers/aes256.js} +14 -17
- package/dist/crypto/ciphers/rc4.d.ts +18 -0
- package/{packages/pdf-lite/src/crypto/ciphers/rc4.ts → dist/crypto/ciphers/rc4.js} +25 -30
- package/dist/crypto/constants.d.ts +6 -0
- package/{packages/pdf-lite/src/crypto/constants.ts → dist/crypto/constants.js} +1 -1
- package/dist/crypto/key-derivation/key-derivation-aes256.d.ts +56 -0
- package/dist/crypto/key-derivation/key-derivation-aes256.js +156 -0
- package/dist/crypto/key-derivation/key-derivation.d.ts +42 -0
- package/{packages/pdf-lite/src/crypto/key-derivation/key-derivation.ts → dist/crypto/key-derivation/key-derivation.js} +35 -66
- package/dist/crypto/key-gen/key-gen-aes256.d.ts +36 -0
- package/{packages/pdf-lite/src/crypto/key-gen/key-gen-aes256.ts → dist/crypto/key-gen/key-gen-aes256.js} +25 -50
- package/dist/crypto/key-gen/key-gen-rc4-128.d.ts +47 -0
- package/{packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-128.ts → dist/crypto/key-gen/key-gen-rc4-128.js} +45 -106
- package/dist/crypto/key-gen/key-gen-rc4-40.d.ts +60 -0
- package/{packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-40.ts → dist/crypto/key-gen/key-gen-rc4-40.js} +26 -62
- package/dist/crypto/types.d.ts +5 -0
- package/dist/crypto/types.js +1 -0
- package/dist/crypto/utils.d.ts +40 -0
- package/{packages/pdf-lite/src/crypto/utils.ts → dist/crypto/utils.js} +27 -36
- package/dist/filters/ascii85.d.ts +16 -0
- package/{packages/pdf-lite/src/filters/ascii85.ts → dist/filters/ascii85.js} +41 -65
- package/dist/filters/asciihex.d.ts +16 -0
- package/{packages/pdf-lite/src/filters/asciihex.ts → dist/filters/asciihex.js} +18 -19
- package/dist/filters/flate.d.ts +15 -0
- package/{packages/pdf-lite/src/filters/flate.ts → dist/filters/flate.js} +7 -10
- package/dist/filters/lzw.d.ts +16 -0
- package/dist/filters/lzw.js +150 -0
- package/dist/filters/pass-through.d.ts +14 -0
- package/{packages/pdf-lite/src/filters/pass-through.ts → dist/filters/pass-through.js} +6 -9
- package/dist/filters/runlength.d.ts +16 -0
- package/{packages/pdf-lite/src/filters/runlength.ts → dist/filters/runlength.js} +36 -40
- package/dist/filters/types.d.ts +18 -0
- package/{packages/pdf-lite/src/filters/types.ts → dist/filters/types.js} +1 -10
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/pdf/errors.d.ts +6 -0
- package/{packages/pdf-lite/src/pdf/errors.ts → dist/pdf/errors.js} +2 -1
- package/dist/pdf/index.d.ts +4 -0
- package/dist/pdf/index.js +4 -0
- package/dist/pdf/pdf-document.d.ts +277 -0
- package/{packages/pdf-lite/src/pdf/pdf-document.ts → dist/pdf/pdf-document.js} +305 -541
- package/dist/pdf/pdf-reader.d.ts +37 -0
- package/{packages/pdf-lite/src/pdf/pdf-reader.ts → dist/pdf/pdf-reader.js} +12 -22
- package/dist/pdf/pdf-revision.d.ts +101 -0
- package/{packages/pdf-lite/src/pdf/pdf-revision.ts → dist/pdf/pdf-revision.js} +70 -105
- package/dist/pdf/pdf-xref-lookup.d.ts +149 -0
- package/dist/pdf/pdf-xref-lookup.js +402 -0
- package/dist/security/crypt-filters/aesv2.d.ts +35 -0
- package/{packages/pdf-lite/src/security/crypt-filters/aesv2.ts → dist/security/crypt-filters/aesv2.js} +9 -26
- package/dist/security/crypt-filters/aesv3.d.ts +36 -0
- package/{packages/pdf-lite/src/security/crypt-filters/aesv3.ts → dist/security/crypt-filters/aesv3.js} +9 -23
- package/{packages/pdf-lite/src/security/crypt-filters/base.ts → dist/security/crypt-filters/base.d.ts} +21 -73
- package/dist/security/crypt-filters/base.js +93 -0
- package/dist/security/crypt-filters/identity.d.ts +28 -0
- package/{packages/pdf-lite/src/security/crypt-filters/identity.ts → dist/security/crypt-filters/identity.js} +9 -13
- package/dist/security/crypt-filters/v2.d.ts +37 -0
- package/{packages/pdf-lite/src/security/crypt-filters/v2.ts → dist/security/crypt-filters/v2.js} +9 -26
- package/dist/security/handlers/base.d.ts +304 -0
- package/dist/security/handlers/base.js +359 -0
- package/dist/security/handlers/pubSec.d.ts +164 -0
- package/dist/security/handlers/pubSec.js +299 -0
- package/dist/security/handlers/utils.d.ts +77 -0
- package/dist/security/handlers/utils.js +244 -0
- package/dist/security/handlers/v1.d.ts +81 -0
- package/dist/security/handlers/v1.js +135 -0
- package/dist/security/handlers/v2.d.ts +63 -0
- package/{packages/pdf-lite/src/security/handlers/v2.ts → dist/security/handlers/v2.js} +25 -62
- package/dist/security/handlers/v4.d.ts +121 -0
- package/dist/security/handlers/v4.js +257 -0
- package/dist/security/handlers/v5.d.ts +112 -0
- package/dist/security/handlers/v5.js +210 -0
- package/{packages/pdf-lite/src/security/types.ts → dist/security/types.d.ts} +72 -94
- package/dist/security/types.js +1 -0
- package/dist/signing/document-security-store.d.ts +108 -0
- package/dist/signing/document-security-store.js +156 -0
- package/dist/signing/index.d.ts +3 -0
- package/dist/signing/index.js +3 -0
- package/dist/signing/signatures/adbe-pkcs7-detached.d.ts +57 -0
- package/dist/signing/signatures/adbe-pkcs7-detached.js +117 -0
- package/dist/signing/signatures/adbe-pkcs7-sha1.d.ts +55 -0
- package/dist/signing/signatures/adbe-pkcs7-sha1.js +121 -0
- package/dist/signing/signatures/adbe-x509-rsa-sha1.d.ts +49 -0
- package/dist/signing/signatures/adbe-x509-rsa-sha1.js +81 -0
- package/dist/signing/signatures/base.d.ts +107 -0
- package/dist/signing/signatures/base.js +145 -0
- package/dist/signing/signatures/etsi-cades-detached.d.ts +64 -0
- package/dist/signing/signatures/etsi-cades-detached.js +159 -0
- package/dist/signing/signatures/etsi-rfc3161.d.ts +37 -0
- package/{packages/pdf-lite/src/signing/signatures/etsi-rfc3161.ts → dist/signing/signatures/etsi-rfc3161.js} +21 -43
- package/dist/signing/signatures/index.d.ts +6 -0
- package/dist/signing/signatures/index.js +6 -0
- package/dist/signing/signer.d.ts +23 -0
- package/dist/signing/signer.js +92 -0
- package/{packages/pdf-lite/src/signing/types.ts → dist/signing/types.d.ts} +40 -48
- package/dist/signing/types.js +1 -0
- package/dist/signing/utils.d.ts +32 -0
- package/{packages/pdf-lite/src/signing/utils.ts → dist/signing/utils.js} +12 -31
- package/dist/types.d.ts +23 -0
- package/dist/types.js +11 -0
- package/dist/utils/IterableReadableStream.d.ts +24 -0
- package/{packages/pdf-lite/src/utils/IterableReadableStream.ts → dist/utils/IterableReadableStream.js} +6 -6
- package/dist/utils/algos.d.ts +242 -0
- package/{packages/pdf-lite/src/utils/algos.ts → dist/utils/algos.js} +63 -136
- package/dist/utils/assert.d.ts +28 -0
- package/{packages/pdf-lite/src/utils/assert.ts → dist/utils/assert.js} +5 -10
- package/dist/utils/bytesToHex.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/bytesToHex.ts → dist/utils/bytesToHex.js} +4 -6
- package/dist/utils/bytesToHexBytes.d.ts +14 -0
- package/{packages/pdf-lite/src/utils/bytesToHexBytes.ts → dist/utils/bytesToHexBytes.js} +7 -12
- package/dist/utils/bytesToString.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/bytesToString.ts → dist/utils/bytesToString.js} +3 -5
- package/dist/utils/concatUint8Arrays.d.ts +16 -0
- package/{packages/pdf-lite/src/utils/concatUint8Arrays.ts → dist/utils/concatUint8Arrays.js} +7 -9
- package/dist/utils/escapeString.d.ts +14 -0
- package/dist/utils/escapeString.js +43 -0
- package/dist/utils/hexBytesToBytes.d.ts +15 -0
- package/{packages/pdf-lite/src/utils/hexBytesToBytes.ts → dist/utils/hexBytesToBytes.js} +4 -6
- package/dist/utils/hexBytesToString.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/hexBytesToString.ts → dist/utils/hexBytesToString.js} +5 -7
- package/dist/utils/hexToBytes.d.ts +13 -0
- package/{packages/pdf-lite/src/utils/hexToBytes.ts → dist/utils/hexToBytes.js} +4 -6
- package/dist/utils/padBytes.d.ts +15 -0
- package/{packages/pdf-lite/src/utils/padBytes.ts → dist/utils/padBytes.js} +5 -9
- package/dist/utils/predictors.d.ts +113 -0
- package/{packages/pdf-lite/src/utils/predictors.ts → dist/utils/predictors.js} +103 -156
- package/dist/utils/replaceInBuffer.d.ts +22 -0
- package/{packages/pdf-lite/src/utils/replaceInBuffer.ts → dist/utils/replaceInBuffer.js} +18 -27
- package/dist/utils/stringToBytes.d.ts +14 -0
- package/{packages/pdf-lite/src/utils/stringToBytes.ts → dist/utils/stringToBytes.js} +6 -7
- package/dist/utils/stringToHexBytes.d.ts +15 -0
- package/{packages/pdf-lite/src/utils/stringToHexBytes.ts → dist/utils/stringToHexBytes.js} +5 -7
- package/dist/utils/unescapeString.d.ts +16 -0
- package/dist/utils/unescapeString.js +114 -0
- package/package.json +37 -34
- package/.commitlintrc.cjs +0 -25
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
- package/.github/workflows/docs.yaml +0 -95
- package/.github/workflows/prepare-release.yaml +0 -79
- package/.github/workflows/release.yaml +0 -80
- package/.github/workflows/test.yaml +0 -35
- package/.husky/commit-msg +0 -1
- package/.husky/pre-commit +0 -1
- package/.prettierignore +0 -4
- package/.prettierrc +0 -4
- package/CONTRIBUTING.md +0 -109
- package/EXAMPLES.md +0 -1512
- package/docs/README.md +0 -127
- package/docs/core/README.md +0 -43
- package/docs/core/decoder/README.md +0 -11
- package/docs/core/decoder/classes/PdfDecoder.md +0 -362
- package/docs/core/generators/README.md +0 -14
- package/docs/core/generators/functions/bytesToPdfObjects.md +0 -26
- package/docs/core/generators/functions/pdfDecoder.md +0 -36
- package/docs/core/generators/functions/pdfDecoderAsync.md +0 -26
- package/docs/core/generators/functions/stringToPdfObjects.md +0 -25
- package/docs/core/incremental-parser/README.md +0 -13
- package/docs/core/incremental-parser/classes/EofReachedError.md +0 -55
- package/docs/core/incremental-parser/classes/IncrementalParser.md +0 -299
- package/docs/core/incremental-parser/classes/NoMoreTokensError.md +0 -55
- package/docs/core/objects/pdf-array/README.md +0 -11
- package/docs/core/objects/pdf-array/classes/PdfArray.md +0 -305
- package/docs/core/objects/pdf-boolean/README.md +0 -11
- package/docs/core/objects/pdf-boolean/classes/PdfBoolean.md +0 -265
- package/docs/core/objects/pdf-comment/README.md +0 -11
- package/docs/core/objects/pdf-comment/classes/PdfComment.md +0 -329
- package/docs/core/objects/pdf-date/README.md +0 -11
- package/docs/core/objects/pdf-date/classes/PdfDate.md +0 -317
- package/docs/core/objects/pdf-dictionary/README.md +0 -17
- package/docs/core/objects/pdf-dictionary/classes/PdfDictionary.md +0 -396
- package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryEntries.md +0 -9
- package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryEntry.md +0 -9
- package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryMap.md +0 -9
- package/docs/core/objects/pdf-hexadecimal/README.md +0 -11
- package/docs/core/objects/pdf-hexadecimal/classes/PdfHexadecimal.md +0 -320
- package/docs/core/objects/pdf-indirect-object/README.md +0 -11
- package/docs/core/objects/pdf-indirect-object/classes/PdfIndirectObject.md +0 -411
- package/docs/core/objects/pdf-name/README.md +0 -11
- package/docs/core/objects/pdf-name/classes/PdfName.md +0 -271
- package/docs/core/objects/pdf-null/README.md +0 -11
- package/docs/core/objects/pdf-null/classes/PdfNull.md +0 -259
- package/docs/core/objects/pdf-number/README.md +0 -12
- package/docs/core/objects/pdf-number/classes/PdfByteOffsetNumber.md +0 -369
- package/docs/core/objects/pdf-number/classes/PdfNumber.md +0 -345
- package/docs/core/objects/pdf-object/README.md +0 -11
- package/docs/core/objects/pdf-object/classes/PdfObject.md +0 -214
- package/docs/core/objects/pdf-object-reference/README.md +0 -11
- package/docs/core/objects/pdf-object-reference/classes/PdfObjectReference.md +0 -279
- package/docs/core/objects/pdf-start-xref/README.md +0 -11
- package/docs/core/objects/pdf-start-xref/classes/PdfStartXRef.md +0 -265
- package/docs/core/objects/pdf-stream/README.md +0 -23
- package/docs/core/objects/pdf-stream/classes/PdfObjStream.md +0 -699
- package/docs/core/objects/pdf-stream/classes/PdfStream.md +0 -570
- package/docs/core/objects/pdf-stream/classes/PdfXRefStream.md +0 -723
- package/docs/core/objects/pdf-stream/classes/PdfXRefStreamCompressedEntry.md +0 -51
- package/docs/core/objects/pdf-stream/type-aliases/PdfXRefStreamEntry.md +0 -9
- package/docs/core/objects/pdf-stream/type-aliases/PdfXRefStreamStandardEntry.md +0 -9
- package/docs/core/objects/pdf-stream/variables/PdfXRefStreamStandardEntry.md +0 -9
- package/docs/core/objects/pdf-string/README.md +0 -11
- package/docs/core/objects/pdf-string/classes/PdfString.md +0 -301
- package/docs/core/objects/pdf-trailer/README.md +0 -16
- package/docs/core/objects/pdf-trailer/classes/PdfTrailer.md +0 -271
- package/docs/core/objects/pdf-trailer/type-aliases/PdfTrailerDictionary.md +0 -9
- package/docs/core/objects/pdf-trailer/type-aliases/PdfTrailerEntries.md +0 -51
- package/docs/core/objects/pdf-xref-table/README.md +0 -13
- package/docs/core/objects/pdf-xref-table/classes/PdfXRefTable.md +0 -331
- package/docs/core/objects/pdf-xref-table/classes/PdfXRefTableEntry.md +0 -297
- package/docs/core/objects/pdf-xref-table/classes/PdfXRefTableSectionHeader.md +0 -277
- package/docs/core/parser/README.md +0 -11
- package/docs/core/parser/classes/Parser.md +0 -74
- package/docs/core/ref/README.md +0 -15
- package/docs/core/ref/classes/Ref.md +0 -149
- package/docs/core/ref/type-aliases/RefUpdateCallback.md +0 -33
- package/docs/core/serializer/README.md +0 -11
- package/docs/core/serializer/classes/PdfTokenSerializer.md +0 -106
- package/docs/core/streams/object-stream/README.md +0 -11
- package/docs/core/streams/object-stream/classes/PdfObjectStream.md +0 -69
- package/docs/core/tokeniser/README.md +0 -21
- package/docs/core/tokeniser/classes/PdfByteStreamTokeniser.md +0 -366
- package/docs/core/tokeniser/classes/PdfObjectTokeniser.md +0 -69
- package/docs/core/tokeniser/functions/objectToTokens.md +0 -25
- package/docs/core/tokeniser/functions/pdfObjectStreamTokeniser.md +0 -27
- package/docs/core/tokeniser/type-aliases/PdfTokeniser.md +0 -11
- package/docs/core/tokens/boolean-token/README.md +0 -11
- package/docs/core/tokens/boolean-token/classes/PdfBooleanToken.md +0 -139
- package/docs/core/tokens/byte-offset-token/README.md +0 -11
- package/docs/core/tokens/byte-offset-token/classes/PdfByteOffsetToken.md +0 -153
- package/docs/core/tokens/comment-token/README.md +0 -11
- package/docs/core/tokens/comment-token/classes/PdfCommentToken.md +0 -161
- package/docs/core/tokens/end-array-token/README.md +0 -11
- package/docs/core/tokens/end-array-token/classes/PdfEndArrayToken.md +0 -115
- package/docs/core/tokens/end-dictionary-token/README.md +0 -11
- package/docs/core/tokens/end-dictionary-token/classes/PdfEndDictionaryToken.md +0 -115
- package/docs/core/tokens/end-object-token/README.md +0 -11
- package/docs/core/tokens/end-object-token/classes/PdfEndObjectToken.md +0 -115
- package/docs/core/tokens/end-stream-token/README.md +0 -11
- package/docs/core/tokens/end-stream-token/classes/PdfEndStreamToken.md +0 -121
- package/docs/core/tokens/hexadecimal-token/README.md +0 -11
- package/docs/core/tokens/hexadecimal-token/classes/PdfHexadecimalToken.md +0 -127
- package/docs/core/tokens/name-token/README.md +0 -11
- package/docs/core/tokens/name-token/classes/PdfNameToken.md +0 -127
- package/docs/core/tokens/null-token/README.md +0 -11
- package/docs/core/tokens/null-token/classes/PdfNullToken.md +0 -115
- package/docs/core/tokens/number-token/README.md +0 -11
- package/docs/core/tokens/number-token/classes/PdfNumberToken.md +0 -271
- package/docs/core/tokens/object-reference-token/README.md +0 -11
- package/docs/core/tokens/object-reference-token/classes/PdfObjectReferenceToken.md +0 -137
- package/docs/core/tokens/start-array-token/README.md +0 -11
- package/docs/core/tokens/start-array-token/classes/PdfStartArrayToken.md +0 -115
- package/docs/core/tokens/start-dictionary-token/README.md +0 -11
- package/docs/core/tokens/start-dictionary-token/classes/PdfStartDictionaryToken.md +0 -115
- package/docs/core/tokens/start-object-token/README.md +0 -11
- package/docs/core/tokens/start-object-token/classes/PdfStartObjectToken.md +0 -147
- package/docs/core/tokens/start-stream-token/README.md +0 -11
- package/docs/core/tokens/start-stream-token/classes/PdfStartStreamToken.md +0 -147
- package/docs/core/tokens/start-xref-token/README.md +0 -11
- package/docs/core/tokens/start-xref-token/classes/PdfStartXRefToken.md +0 -115
- package/docs/core/tokens/stream-chunk-token/README.md +0 -11
- package/docs/core/tokens/stream-chunk-token/classes/PdfStreamChunkToken.md +0 -121
- package/docs/core/tokens/string-token/README.md +0 -11
- package/docs/core/tokens/string-token/classes/PdfStringToken.md +0 -127
- package/docs/core/tokens/token/README.md +0 -11
- package/docs/core/tokens/token/classes/PdfToken.md +0 -116
- package/docs/core/tokens/trailer-token/README.md +0 -11
- package/docs/core/tokens/trailer-token/classes/PdfTrailerToken.md +0 -127
- package/docs/core/tokens/whitespace-token/README.md +0 -11
- package/docs/core/tokens/whitespace-token/classes/PdfWhitespaceToken.md +0 -161
- package/docs/core/tokens/xref-table-entry-token/README.md +0 -11
- package/docs/core/tokens/xref-table-entry-token/classes/PdfXRefTableEntryToken.md +0 -157
- package/docs/core/tokens/xref-table-section-start-token/README.md +0 -11
- package/docs/core/tokens/xref-table-section-start-token/classes/PdfXRefTableSectionStartToken.md +0 -137
- package/docs/core/tokens/xref-table-start-token/README.md +0 -11
- package/docs/core/tokens/xref-table-start-token/classes/PdfXRefTableStartToken.md +0 -127
- package/docs/crypto/ciphers/aes128/README.md +0 -11
- package/docs/crypto/ciphers/aes128/functions/aes128.md +0 -39
- package/docs/crypto/ciphers/aes256/README.md +0 -11
- package/docs/crypto/ciphers/aes256/functions/aes256.md +0 -35
- package/docs/crypto/ciphers/rc4/README.md +0 -11
- package/docs/crypto/ciphers/rc4/functions/rc4.md +0 -35
- package/docs/crypto/constants/README.md +0 -11
- package/docs/crypto/constants/variables/DEFAULT_PADDING.md +0 -13
- package/docs/crypto/key-derivation/key-derivation/README.md +0 -13
- package/docs/crypto/key-derivation/key-derivation/functions/computeMasterKey.md +0 -57
- package/docs/crypto/key-derivation/key-derivation/functions/deriveObjectKey.md +0 -50
- package/docs/crypto/key-derivation/key-derivation/functions/padPassword.md +0 -33
- package/docs/crypto/key-derivation/key-derivation-aes256/README.md +0 -13
- package/docs/crypto/key-derivation/key-derivation-aes256/functions/computeAlgorithm2bHash.md +0 -45
- package/docs/crypto/key-derivation/key-derivation-aes256/functions/getFileKey.md +0 -66
- package/docs/crypto/key-derivation/key-derivation-aes256/functions/validatePasswordHash.md +0 -52
- package/docs/crypto/key-gen/key-gen-aes256/README.md +0 -12
- package/docs/crypto/key-gen/key-gen-aes256/functions/generateOandOe.md +0 -44
- package/docs/crypto/key-gen/key-gen-aes256/functions/generateUandUe.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-128/README.md +0 -13
- package/docs/crypto/key-gen/key-gen-rc4-128/functions/computeOValueRc4_128.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-128/functions/computeUValueRc4_128.md +0 -62
- package/docs/crypto/key-gen/key-gen-rc4-128/functions/decryptUserPasswordRc4_128.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-40/README.md +0 -14
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeEncryptionKeyRc4_40.md +0 -49
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeORc4_40.md +0 -38
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeURc4_40.md +0 -50
- package/docs/crypto/key-gen/key-gen-rc4-40/functions/decryptUserPasswordRc4_40.md +0 -38
- package/docs/crypto/types/README.md +0 -11
- package/docs/crypto/types/interfaces/Cipher.md +0 -39
- package/docs/crypto/utils/README.md +0 -13
- package/docs/crypto/utils/functions/int32ToLittleEndianBytes.md +0 -31
- package/docs/crypto/utils/functions/padPassword.md +0 -33
- package/docs/crypto/utils/functions/removePdfPasswordPadding.md +0 -32
- package/docs/filters/ascii85/README.md +0 -11
- package/docs/filters/ascii85/functions/ascii85.md +0 -27
- package/docs/filters/asciihex/README.md +0 -11
- package/docs/filters/asciihex/functions/asciiHex.md +0 -27
- package/docs/filters/flate/README.md +0 -11
- package/docs/filters/flate/functions/flate.md +0 -26
- package/docs/filters/lzw/README.md +0 -11
- package/docs/filters/lzw/functions/lzw.md +0 -27
- package/docs/filters/pass-through/README.md +0 -11
- package/docs/filters/pass-through/functions/passthroughFilter.md +0 -25
- package/docs/filters/runlength/README.md +0 -11
- package/docs/filters/runlength/functions/runLength.md +0 -27
- package/docs/filters/types/README.md +0 -19
- package/docs/filters/types/interfaces/PdfFilter.md +0 -39
- package/docs/filters/types/type-aliases/PdfStreamFilterType.md +0 -9
- package/docs/filters/types/variables/PDF_FILTER_TYPES.md +0 -51
- package/docs/index/README.md +0 -235
- package/docs/pdf/README.md +0 -31
- package/docs/pdf/errors/README.md +0 -11
- package/docs/pdf/errors/classes/FoundCompressedObjectError.md +0 -56
- package/docs/pdf/pdf-document/README.md +0 -11
- package/docs/pdf/pdf-document/classes/PdfDocument.md +0 -876
- package/docs/pdf/pdf-reader/README.md +0 -11
- package/docs/pdf/pdf-reader/classes/PdfReader.md +0 -82
- package/docs/pdf/pdf-revision/README.md +0 -11
- package/docs/pdf/pdf-revision/classes/PdfRevision.md +0 -508
- package/docs/pdf/pdf-xref-lookup/README.md +0 -11
- package/docs/pdf/pdf-xref-lookup/classes/PdfXrefLookup.md +0 -421
- package/docs/security/crypt-filters/aesv2/README.md +0 -11
- package/docs/security/crypt-filters/aesv2/classes/AesV2CryptFilter.md +0 -274
- package/docs/security/crypt-filters/aesv3/README.md +0 -11
- package/docs/security/crypt-filters/aesv3/classes/AesV3CryptFilter.md +0 -275
- package/docs/security/crypt-filters/base/README.md +0 -15
- package/docs/security/crypt-filters/base/classes/PdfCryptFilter.md +0 -221
- package/docs/security/crypt-filters/base/type-aliases/CryptFilterOptions.md +0 -43
- package/docs/security/crypt-filters/identity/README.md +0 -11
- package/docs/security/crypt-filters/identity/classes/IdentityCryptFilter.md +0 -249
- package/docs/security/crypt-filters/v2/README.md +0 -11
- package/docs/security/crypt-filters/v2/classes/V2CryptFilter.md +0 -279
- package/docs/security/handlers/base/README.md +0 -17
- package/docs/security/handlers/base/classes/PdfSecurityHandler.md +0 -384
- package/docs/security/handlers/base/classes/PdfStandardSecurityHandler.md +0 -694
- package/docs/security/handlers/base/type-aliases/PdfSecurityHandlerOptions.md +0 -27
- package/docs/security/handlers/base/type-aliases/PdfStandardSecurityHandlerOptions.md +0 -43
- package/docs/security/handlers/pubSec/README.md +0 -11
- package/docs/security/handlers/pubSec/classes/PdfPublicKeySecurityHandler.md +0 -503
- package/docs/security/handlers/utils/README.md +0 -14
- package/docs/security/handlers/utils/functions/createFromDictionary.md +0 -56
- package/docs/security/handlers/utils/functions/createFromEncryptionOptions.md +0 -40
- package/docs/security/handlers/utils/functions/createStandardSecurityHandlerFromDictionary.md +0 -55
- package/docs/security/handlers/utils/functions/getCryptFilter.md +0 -35
- package/docs/security/handlers/v1/README.md +0 -11
- package/docs/security/handlers/v1/classes/PdfV1SecurityHandler.md +0 -779
- package/docs/security/handlers/v2/README.md +0 -11
- package/docs/security/handlers/v2/classes/PdfV2SecurityHandler.md +0 -783
- package/docs/security/handlers/v4/README.md +0 -11
- package/docs/security/handlers/v4/classes/PdfV4SecurityHandler.md +0 -907
- package/docs/security/handlers/v5/README.md +0 -11
- package/docs/security/handlers/v5/classes/PdfV5SecurityHandler.md +0 -926
- package/docs/security/types/README.md +0 -19
- package/docs/security/types/type-aliases/CryptFilterType.md +0 -15
- package/docs/security/types/type-aliases/PdfCryptFilterDictionary.md +0 -12
- package/docs/security/types/type-aliases/PdfEncryptionAlgorithmOptions.md +0 -11
- package/docs/security/types/type-aliases/PdfEncryptionAlgorithmType.md +0 -17
- package/docs/security/types/type-aliases/PdfEncryptionDictionary.md +0 -13
- package/docs/security/types/type-aliases/PdfEncryptionDictionaryObject.md +0 -11
- package/docs/security/types/type-aliases/PdfEncryptionOptions.md +0 -90
- package/docs/security/types/type-aliases/PdfEncryptionRecipient.md +0 -24
- package/docs/security/types/type-aliases/PdfId.md +0 -13
- package/docs/signing/README.md +0 -127
- package/docs/signing/document-security-store/README.md +0 -19
- package/docs/signing/document-security-store/classes/PdfCertObject.md +0 -443
- package/docs/signing/document-security-store/classes/PdfCrlObject.md +0 -443
- package/docs/signing/document-security-store/classes/PdfDocumentSecurityStoreDictionary.md +0 -416
- package/docs/signing/document-security-store/classes/PdfDocumentSecurityStoreObject.md +0 -563
- package/docs/signing/document-security-store/classes/PdfOcspObject.md +0 -443
- package/docs/signing/document-security-store/type-aliases/PdfVriObject.md +0 -12
- package/docs/signing/signatures/README.md +0 -55
- package/docs/signing/signatures/adbe-pkcs7-detached/README.md +0 -11
- package/docs/signing/signatures/adbe-pkcs7-detached/classes/PdfAdbePkcs7DetachedSignatureObject.md +0 -669
- package/docs/signing/signatures/adbe-pkcs7-sha1/README.md +0 -11
- package/docs/signing/signatures/adbe-pkcs7-sha1/classes/PdfAdbePkcs7Sha1SignatureObject.md +0 -667
- package/docs/signing/signatures/adbe-x509-rsa-sha1/README.md +0 -11
- package/docs/signing/signatures/adbe-x509-rsa-sha1/classes/PdfAdbePkcsX509RsaSha1SignatureObject.md +0 -651
- package/docs/signing/signatures/base/README.md +0 -16
- package/docs/signing/signatures/base/classes/PdfSignatureDictionary.md +0 -420
- package/docs/signing/signatures/base/classes/PdfSignatureObject.md +0 -584
- package/docs/signing/signatures/base/type-aliases/PdfSignatureSignOptions.md +0 -51
- package/docs/signing/signatures/etsi-cades-detached/README.md +0 -11
- package/docs/signing/signatures/etsi-cades-detached/classes/PdfEtsiCadesDetachedSignatureObject.md +0 -693
- package/docs/signing/signatures/etsi-rfc3161/README.md +0 -11
- package/docs/signing/signatures/etsi-rfc3161/classes/PdfEtsiRfc3161SignatureObject.md +0 -614
- package/docs/signing/signer/README.md +0 -11
- package/docs/signing/signer/classes/PdfSigner.md +0 -58
- package/docs/signing/types/README.md +0 -16
- package/docs/signing/types/type-aliases/PdfSignatureDictionaryEntries.md +0 -95
- package/docs/signing/types/type-aliases/PdfSignatureSubType.md +0 -17
- package/docs/signing/types/type-aliases/PdfSignatureType.md +0 -14
- package/docs/signing/types/type-aliases/RevocationInfo.md +0 -43
- package/docs/signing/types/type-aliases/SignaturePolicyDocument.md +0 -35
- package/docs/signing/types/type-aliases/TimeStampAuthority.md +0 -35
- package/docs/signing/utils/README.md +0 -11
- package/docs/signing/utils/functions/fetchRevocationInfo.md +0 -70
- package/docs/types/README.md +0 -21
- package/docs/types/type-aliases/ByteArray.md +0 -9
- package/docs/types/type-aliases/ChangeType.md +0 -9
- package/docs/types/type-aliases/DecodeParms.md +0 -33
- package/docs/types/type-aliases/HashAlgorithm.md +0 -9
- package/docs/types/type-aliases/PdfEncryptionAlgorithm.md +0 -9
- package/docs/types/type-aliases/PdfPermissions.md +0 -63
- package/docs/types/type-aliases/PdfVersion.md +0 -9
- package/docs/types/variables/PERMISSION_FLAGS.md +0 -9
- package/docs/utils/IterableReadableStream/README.md +0 -11
- package/docs/utils/IterableReadableStream/classes/IterableReadableStream.md +0 -103
- package/docs/utils/algos/README.md +0 -28
- package/docs/utils/algos/functions/aes128CbcNoPaddingEncrypt.md +0 -43
- package/docs/utils/algos/functions/aes128cbcDecrypt.md +0 -47
- package/docs/utils/algos/functions/aes128cbcEncrypt.md +0 -47
- package/docs/utils/algos/functions/aes256CbcNoPaddingDecrypt.md +0 -43
- package/docs/utils/algos/functions/aes256CbcNoPaddingEncrypt.md +0 -43
- package/docs/utils/algos/functions/aes256cbcDecrypt.md +0 -43
- package/docs/utils/algos/functions/aes256cbcEncrypt.md +0 -43
- package/docs/utils/algos/functions/aes256ecbDecrypt.md +0 -41
- package/docs/utils/algos/functions/aes256ecbEncrypt.md +0 -41
- package/docs/utils/algos/functions/deflateData.md +0 -31
- package/docs/utils/algos/functions/getRandomBytes.md +0 -35
- package/docs/utils/algos/functions/hash.md +0 -41
- package/docs/utils/algos/functions/inflateData.md +0 -35
- package/docs/utils/algos/functions/md5.md +0 -31
- package/docs/utils/algos/functions/sha1.md +0 -31
- package/docs/utils/algos/functions/sha256.md +0 -31
- package/docs/utils/algos/functions/sha384.md +0 -31
- package/docs/utils/algos/functions/sha512.md +0 -31
- package/docs/utils/assert/README.md +0 -12
- package/docs/utils/assert/functions/assert.md +0 -39
- package/docs/utils/assert/functions/assertIfDefined.md +0 -46
- package/docs/utils/bytesToHex/README.md +0 -11
- package/docs/utils/bytesToHex/functions/bytesToHex.md +0 -31
- package/docs/utils/bytesToHexBytes/README.md +0 -11
- package/docs/utils/bytesToHexBytes/functions/bytesToHexBytes.md +0 -32
- package/docs/utils/bytesToString/README.md +0 -11
- package/docs/utils/bytesToString/functions/bytesToString.md +0 -31
- package/docs/utils/concatUint8Arrays/README.md +0 -11
- package/docs/utils/concatUint8Arrays/functions/concatUint8Arrays.md +0 -31
- package/docs/utils/escapeString/README.md +0 -11
- package/docs/utils/escapeString/functions/escapeString.md +0 -32
- package/docs/utils/hexBytesToBytes/README.md +0 -11
- package/docs/utils/hexBytesToBytes/functions/hexBytesToBytes.md +0 -33
- package/docs/utils/hexBytesToString/README.md +0 -11
- package/docs/utils/hexBytesToString/functions/hexBytesToString.md +0 -31
- package/docs/utils/hexToBytes/README.md +0 -11
- package/docs/utils/hexToBytes/functions/hexToBytes.md +0 -31
- package/docs/utils/padBytes/README.md +0 -11
- package/docs/utils/padBytes/functions/padBytes.md +0 -41
- package/docs/utils/predictors/README.md +0 -11
- package/docs/utils/predictors/classes/Predictor.md +0 -306
- package/docs/utils/replaceInBuffer/README.md +0 -11
- package/docs/utils/replaceInBuffer/functions/replaceInBuffer.md +0 -65
- package/docs/utils/stringToBytes/README.md +0 -11
- package/docs/utils/stringToBytes/functions/stringToBytes.md +0 -32
- package/docs/utils/stringToHexBytes/README.md +0 -11
- package/docs/utils/stringToHexBytes/functions/stringToHexBytes.md +0 -33
- package/docs/utils/unescapeString/README.md +0 -11
- package/docs/utils/unescapeString/functions/unescapeString.md +0 -34
- package/examples/001-create-pdf.ts +0 -112
- package/examples/002-create-encrypted-pdf.ts +0 -121
- package/examples/003-sign-pdf.ts +0 -347
- package/examples/004-incremental-update.ts +0 -206
- package/examples/005-modify-acroform.ts +0 -374
- package/examples/006-tokeniser-example.ts +0 -131
- package/examples/007-decoder-example.ts +0 -197
- package/packages/pdf-lite/README.md +0 -3
- package/packages/pdf-lite/node_modules/.bin/playwright +0 -16
- package/packages/pdf-lite/node_modules/.bin/tsc +0 -16
- package/packages/pdf-lite/node_modules/.bin/tsserver +0 -16
- package/packages/pdf-lite/node_modules/.bin/vitest +0 -16
- package/packages/pdf-lite/package.json +0 -68
- package/packages/pdf-lite/scripts/create-encryption-tests.sh +0 -41
- package/packages/pdf-lite/scripts/gen-signing-keys.sh +0 -290
- package/packages/pdf-lite/scripts/generate-all-signing-keys.sh +0 -70
- package/packages/pdf-lite/src/core/decoder.ts +0 -454
- package/packages/pdf-lite/src/core/index.ts +0 -2
- package/packages/pdf-lite/src/core/objects/pdf-array.ts +0 -54
- package/packages/pdf-lite/src/core/objects/pdf-boolean.ts +0 -19
- package/packages/pdf-lite/src/core/objects/pdf-comment.ts +0 -50
- package/packages/pdf-lite/src/core/objects/pdf-date.ts +0 -74
- package/packages/pdf-lite/src/core/objects/pdf-dictionary.ts +0 -171
- package/packages/pdf-lite/src/core/objects/pdf-hexadecimal.ts +0 -54
- package/packages/pdf-lite/src/core/objects/pdf-indirect-object.ts +0 -137
- package/packages/pdf-lite/src/core/objects/pdf-name.ts +0 -19
- package/packages/pdf-lite/src/core/objects/pdf-null.ts +0 -15
- package/packages/pdf-lite/src/core/objects/pdf-number.ts +0 -98
- package/packages/pdf-lite/src/core/objects/pdf-object-reference.ts +0 -30
- package/packages/pdf-lite/src/core/objects/pdf-object.ts +0 -107
- package/packages/pdf-lite/src/core/objects/pdf-start-xref.ts +0 -39
- package/packages/pdf-lite/src/core/objects/pdf-stream.ts +0 -687
- package/packages/pdf-lite/src/core/objects/pdf-string.ts +0 -38
- package/packages/pdf-lite/src/core/objects/pdf-trailer.ts +0 -57
- package/packages/pdf-lite/src/core/objects/pdf-xref-table.ts +0 -264
- package/packages/pdf-lite/src/core/streams/object-stream.ts +0 -20
- package/packages/pdf-lite/src/core/tokeniser.ts +0 -687
- package/packages/pdf-lite/src/core/tokens/boolean-token.ts +0 -20
- package/packages/pdf-lite/src/core/tokens/byte-offset-token.ts +0 -20
- package/packages/pdf-lite/src/core/tokens/comment-token.ts +0 -32
- package/packages/pdf-lite/src/core/tokens/end-array-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/end-dictionary-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/end-object-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/end-stream-token.ts +0 -11
- package/packages/pdf-lite/src/core/tokens/hexadecimal-token.ts +0 -22
- package/packages/pdf-lite/src/core/tokens/name-token.ts +0 -19
- package/packages/pdf-lite/src/core/tokens/null-token.ts +0 -9
- package/packages/pdf-lite/src/core/tokens/number-token.ts +0 -164
- package/packages/pdf-lite/src/core/tokens/object-reference-token.ts +0 -24
- package/packages/pdf-lite/src/core/tokens/start-array-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/start-dictionary-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/start-object-token.ts +0 -28
- package/packages/pdf-lite/src/core/tokens/start-stream-token.ts +0 -52
- package/packages/pdf-lite/src/core/tokens/start-xref-token.ts +0 -10
- package/packages/pdf-lite/src/core/tokens/stream-chunk-token.ts +0 -8
- package/packages/pdf-lite/src/core/tokens/string-token.ts +0 -17
- package/packages/pdf-lite/src/core/tokens/token.ts +0 -43
- package/packages/pdf-lite/src/core/tokens/trailer-token.ts +0 -12
- package/packages/pdf-lite/src/core/tokens/whitespace-token.ts +0 -43
- package/packages/pdf-lite/src/core/tokens/xref-table-entry-token.ts +0 -65
- package/packages/pdf-lite/src/core/tokens/xref-table-section-start-token.ts +0 -31
- package/packages/pdf-lite/src/core/tokens/xref-table-start-token.ts +0 -13
- package/packages/pdf-lite/src/crypto/key-derivation/key-derivation-aes256.ts +0 -213
- package/packages/pdf-lite/src/crypto/types.ts +0 -6
- package/packages/pdf-lite/src/filters/lzw.ts +0 -144
- package/packages/pdf-lite/src/index.ts +0 -4
- package/packages/pdf-lite/src/pdf/index.ts +0 -4
- package/packages/pdf-lite/src/pdf/pdf-xref-lookup.ts +0 -527
- package/packages/pdf-lite/src/security/handlers/base.ts +0 -625
- package/packages/pdf-lite/src/security/handlers/pubSec.ts +0 -413
- package/packages/pdf-lite/src/security/handlers/utils.ts +0 -304
- package/packages/pdf-lite/src/security/handlers/v1.ts +0 -225
- package/packages/pdf-lite/src/security/handlers/v4.ts +0 -379
- package/packages/pdf-lite/src/security/handlers/v5.ts +0 -298
- package/packages/pdf-lite/src/signing/document-security-store.ts +0 -224
- package/packages/pdf-lite/src/signing/index.ts +0 -3
- package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-detached.ts +0 -154
- package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-sha1.ts +0 -161
- package/packages/pdf-lite/src/signing/signatures/adbe-x509-rsa-sha1.ts +0 -106
- package/packages/pdf-lite/src/signing/signatures/base.ts +0 -229
- package/packages/pdf-lite/src/signing/signatures/etsi-cades-detached.ts +0 -229
- package/packages/pdf-lite/src/signing/signatures/index.ts +0 -6
- package/packages/pdf-lite/src/signing/signer.ts +0 -120
- package/packages/pdf-lite/src/types.ts +0 -44
- package/packages/pdf-lite/src/utils/escapeString.ts +0 -49
- package/packages/pdf-lite/src/utils/unescapeString.ts +0 -123
- package/packages/pdf-lite/test/acceptance/__snapshots__/versions.node.test.ts.snap +0 -60766
- package/packages/pdf-lite/test/acceptance/fixtures/1.3/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-128.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-256.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-128.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-40.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.5/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.6/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/1.7/basic.pdf +0 -0
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-128.pdf +0 -43
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-256.pdf +0 -43
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-128.pdf +0 -43
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-40.pdf +0 -44
- package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic.pdf +0 -79
- package/packages/pdf-lite/test/acceptance/versions.node.test.ts +0 -41
- package/packages/pdf-lite/test/unit/__snapshots__/decoder.node.test.ts.snap +0 -86947
- package/packages/pdf-lite/test/unit/__snapshots__/tokeniser.node.test.ts.snap +0 -131829
- package/packages/pdf-lite/test/unit/ciphers.test.ts +0 -61
- package/packages/pdf-lite/test/unit/decoder.node.test.ts +0 -21
- package/packages/pdf-lite/test/unit/decoder.test.ts +0 -567
- package/packages/pdf-lite/test/unit/filters.test.ts +0 -67
- package/packages/pdf-lite/test/unit/fixtures/basic.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-128.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-256.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-128.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-40.pdf +0 -43
- package/packages/pdf-lite/test/unit/fixtures/protectedAdobeLivecycle.pdf +0 -0
- package/packages/pdf-lite/test/unit/fixtures/rsa-2048/index.ts +0 -187
- package/packages/pdf-lite/test/unit/fixtures/template.pdf +0 -0
- package/packages/pdf-lite/test/unit/incremental-update.test.ts +0 -0
- package/packages/pdf-lite/test/unit/objects.test.ts +0 -0
- package/packages/pdf-lite/test/unit/pdf-document-signing.test.ts +0 -0
- package/packages/pdf-lite/test/unit/pdf-revision.test.ts +0 -195
- package/packages/pdf-lite/test/unit/pdf.browser.test.ts +0 -0
- package/packages/pdf-lite/test/unit/predictors.test.ts +0 -226
- package/packages/pdf-lite/test/unit/ref.test.ts +0 -158
- package/packages/pdf-lite/test/unit/security-handlers.test.ts +0 -645
- package/packages/pdf-lite/test/unit/serializer.test.ts +0 -81
- package/packages/pdf-lite/test/unit/signature-objects.test.ts +0 -814
- package/packages/pdf-lite/test/unit/string-escaping.test.ts +0 -84
- package/packages/pdf-lite/test/unit/tokeniser.node.test.ts +0 -38
- package/packages/pdf-lite/test/unit/tokeniser.test.ts +0 -1213
- package/packages/pdf-lite/test/unit/utils.test.ts +0 -248
- package/packages/pdf-lite/test/unit/xref-lookup.test.ts +0 -72
- package/packages/pdf-lite/tsconfig.json +0 -4
- package/packages/pdf-lite/tsconfig.prod.json +0 -8
- package/packages/pdf-lite/typedoc.json +0 -14
- package/packages/pdf-lite/vitest.config.ts +0 -43
- package/pnpm-workspace.yaml +0 -2
- package/renovate.json +0 -34
- package/scripts/build-examples.ts +0 -30
- package/scripts/bump-version.sh +0 -56
- package/scripts/gen-html-docs.sh +0 -21
- package/scripts/gen-md-docs.sh +0 -15
- package/scripts/prepare-release.sh +0 -33
- package/tsconfig.json +0 -22
- package/tsconfig.prod.json +0 -12
- package/typedoc.json +0 -34
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { DEFAULT_PADDING } from '../constants.js'
|
|
2
|
-
import { md5 } from '../../utils/algos.js'
|
|
3
|
-
import { int32ToLittleEndianBytes } from '../utils.js'
|
|
4
|
-
import { concatUint8Arrays } from '../../utils/concatUint8Arrays.js'
|
|
5
|
-
import { ByteArray } from '../../types.js'
|
|
6
|
-
|
|
1
|
+
import { DEFAULT_PADDING } from '../constants.js';
|
|
2
|
+
import { md5 } from '../../utils/algos.js';
|
|
3
|
+
import { int32ToLittleEndianBytes } from '../utils.js';
|
|
4
|
+
import { concatUint8Arrays } from '../../utils/concatUint8Arrays.js';
|
|
7
5
|
/**
|
|
8
6
|
* Pads a password to exactly 32 bytes using the PDF standard padding.
|
|
9
7
|
* If the password is shorter than 32 bytes, it is padded with bytes from DEFAULT_PADDING.
|
|
@@ -17,20 +15,17 @@ import { ByteArray } from '../../types.js'
|
|
|
17
15
|
* const padded = padPassword(new Uint8Array([1, 2, 3])) // Returns 32-byte array
|
|
18
16
|
* ```
|
|
19
17
|
*/
|
|
20
|
-
export function padPassword(password
|
|
21
|
-
const padded = new Uint8Array(32)
|
|
18
|
+
export function padPassword(password) {
|
|
19
|
+
const padded = new Uint8Array(32);
|
|
22
20
|
if (password.length >= 32) {
|
|
23
|
-
padded.set(password.subarray(0, 32))
|
|
24
|
-
} else {
|
|
25
|
-
padded.set(password)
|
|
26
|
-
padded.set(
|
|
27
|
-
DEFAULT_PADDING.subarray(0, 32 - password.length),
|
|
28
|
-
password.length,
|
|
29
|
-
)
|
|
21
|
+
padded.set(password.subarray(0, 32));
|
|
30
22
|
}
|
|
31
|
-
|
|
23
|
+
else {
|
|
24
|
+
padded.set(password);
|
|
25
|
+
padded.set(DEFAULT_PADDING.subarray(0, 32 - password.length), password.length);
|
|
26
|
+
}
|
|
27
|
+
return padded;
|
|
32
28
|
}
|
|
33
|
-
|
|
34
29
|
/**
|
|
35
30
|
* Compute the master encryption key for a PDF file.
|
|
36
31
|
*
|
|
@@ -41,46 +36,28 @@ export function padPassword(password: ByteArray): ByteArray {
|
|
|
41
36
|
* @param keyLengthBits Usually 40, 128 or 256
|
|
42
37
|
* @param encryptMetadata Whether /EncryptMetadata is false
|
|
43
38
|
*/
|
|
44
|
-
export async function computeMasterKey(
|
|
45
|
-
password: ByteArray,
|
|
46
|
-
ownerKey: ByteArray,
|
|
47
|
-
permissions: number,
|
|
48
|
-
id0: ByteArray,
|
|
49
|
-
keyLengthBits: number,
|
|
50
|
-
encryptMetadata: boolean,
|
|
51
|
-
revision: number = 3,
|
|
52
|
-
): Promise<ByteArray> {
|
|
39
|
+
export async function computeMasterKey(password, ownerKey, permissions, id0, keyLengthBits, encryptMetadata, revision = 3) {
|
|
53
40
|
if (keyLengthBits % 8 !== 0) {
|
|
54
|
-
throw new Error(
|
|
55
|
-
`keyLengthBits must be a multiple of 8, got ${keyLengthBits}`,
|
|
56
|
-
)
|
|
41
|
+
throw new Error(`keyLengthBits must be a multiple of 8, got ${keyLengthBits}`);
|
|
57
42
|
}
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
const permissionsBytes = int32ToLittleEndianBytes(permissions)
|
|
63
|
-
|
|
64
|
-
const hashInputParts = [paddedPassword, ownerKey, permissionsBytes, id0]
|
|
65
|
-
|
|
43
|
+
const keyLengthBytes = keyLengthBits / 8;
|
|
44
|
+
const paddedPassword = padPassword(password);
|
|
45
|
+
const permissionsBytes = int32ToLittleEndianBytes(permissions);
|
|
46
|
+
const hashInputParts = [paddedPassword, ownerKey, permissionsBytes, id0];
|
|
66
47
|
if (keyLengthBits > 40 && !encryptMetadata && revision >= 4) {
|
|
67
|
-
hashInputParts.push(new Uint8Array([0xff, 0xff, 0xff, 0xff]))
|
|
48
|
+
hashInputParts.push(new Uint8Array([0xff, 0xff, 0xff, 0xff]));
|
|
68
49
|
}
|
|
69
|
-
|
|
70
50
|
// Initial MD5 hash
|
|
71
|
-
let digest = await md5(concatUint8Arrays(...hashInputParts))
|
|
72
|
-
|
|
51
|
+
let digest = await md5(concatUint8Arrays(...hashInputParts));
|
|
73
52
|
if (keyLengthBits > 40) {
|
|
74
53
|
// Perform 50 iterations of MD5 rehash
|
|
75
54
|
for (let i = 0; i < 50; i++) {
|
|
76
|
-
digest = await md5(digest.subarray(0, keyLengthBytes))
|
|
55
|
+
digest = await md5(digest.subarray(0, keyLengthBytes));
|
|
77
56
|
}
|
|
78
57
|
}
|
|
79
|
-
|
|
80
58
|
// Truncate to key length
|
|
81
|
-
return digest.subarray(0, keyLengthBytes)
|
|
59
|
+
return digest.subarray(0, keyLengthBytes);
|
|
82
60
|
}
|
|
83
|
-
|
|
84
61
|
/**
|
|
85
62
|
* Derives an object-specific encryption key from the master key.
|
|
86
63
|
* Used to encrypt individual PDF objects with unique keys.
|
|
@@ -96,27 +73,19 @@ export async function computeMasterKey(
|
|
|
96
73
|
* const objectKey = await deriveObjectKey(masterKey, 5, 0)
|
|
97
74
|
* ```
|
|
98
75
|
*/
|
|
99
|
-
export async function deriveObjectKey(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
buffer.
|
|
108
|
-
buffer[mkey.length + 0] = objNumber & 0xff
|
|
109
|
-
buffer[mkey.length + 1] = (objNumber >> 8) & 0xff
|
|
110
|
-
buffer[mkey.length + 2] = (objNumber >> 16) & 0xff
|
|
111
|
-
buffer[mkey.length + 3] = objGeneration & 0xff
|
|
112
|
-
buffer[mkey.length + 4] = (objGeneration >> 8) & 0xff
|
|
113
|
-
|
|
76
|
+
export async function deriveObjectKey(mkey, objNumber, objGeneration, useAesSalt = true) {
|
|
77
|
+
const extra = useAesSalt ? 4 : 0; // 4 extra bytes if AES salt
|
|
78
|
+
const buffer = new Uint8Array(mkey.length + 5 + extra); // <--- make room for salt if needed
|
|
79
|
+
buffer.set(mkey, 0);
|
|
80
|
+
buffer[mkey.length + 0] = objNumber & 0xff;
|
|
81
|
+
buffer[mkey.length + 1] = (objNumber >> 8) & 0xff;
|
|
82
|
+
buffer[mkey.length + 2] = (objNumber >> 16) & 0xff;
|
|
83
|
+
buffer[mkey.length + 3] = objGeneration & 0xff;
|
|
84
|
+
buffer[mkey.length + 4] = (objGeneration >> 8) & 0xff;
|
|
114
85
|
if (useAesSalt) {
|
|
115
|
-
buffer.set([0x73, 0x41, 0x6c, 0x54], mkey.length + 5) // append 'sAlT'
|
|
86
|
+
buffer.set([0x73, 0x41, 0x6c, 0x54], mkey.length + 5); // append 'sAlT'
|
|
116
87
|
}
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
const keySize = Math.min(mkey.length + 5, 16)
|
|
121
|
-
return new Uint8Array(digest.subarray(0, keySize))
|
|
88
|
+
const digest = await md5(buffer);
|
|
89
|
+
const keySize = Math.min(mkey.length + 5, 16);
|
|
90
|
+
return new Uint8Array(digest.subarray(0, keySize));
|
|
122
91
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ByteArray } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates the /U and /UE values for AES-256 PDF encryption.
|
|
4
|
+
* These values are used to validate the user password and decrypt the file key.
|
|
5
|
+
*
|
|
6
|
+
* @param password - The user password.
|
|
7
|
+
* @param fileKey - The 32-byte file encryption key.
|
|
8
|
+
* @returns A promise that resolves to an object containing the 48-byte U and 32-byte UE values.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const { U, UE } = await generateUandUe(password, fileKey)
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateUandUe(password: ByteArray, fileKey: ByteArray): Promise<{
|
|
16
|
+
U: ByteArray;
|
|
17
|
+
UE: ByteArray;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Generates the /O and /OE values for AES-256 PDF encryption.
|
|
21
|
+
* These values are used to validate the owner password and decrypt the file key.
|
|
22
|
+
*
|
|
23
|
+
* @param password - The owner password.
|
|
24
|
+
* @param U - The 48-byte /U value (required for owner key derivation).
|
|
25
|
+
* @param fileKey - The 32-byte file encryption key.
|
|
26
|
+
* @returns A promise that resolves to an object containing the 48-byte O and 32-byte OE values.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const { O, OE } = await generateOandOe(ownerPassword, U, fileKey)
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function generateOandOe(password: ByteArray, U: ByteArray, fileKey: ByteArray): Promise<{
|
|
34
|
+
O: ByteArray;
|
|
35
|
+
OE: ByteArray;
|
|
36
|
+
}>;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { computeAlgorithm2bHash } from '../key-derivation/key-derivation-aes256.js'
|
|
2
|
-
import { getRandomBytes } from '../../utils/algos.js'
|
|
3
|
-
import { aes256CbcNoPaddingEncrypt } from '../../utils/algos.js'
|
|
4
|
-
import { ByteArray } from '../../types.js'
|
|
5
|
-
|
|
1
|
+
import { computeAlgorithm2bHash } from '../key-derivation/key-derivation-aes256.js';
|
|
2
|
+
import { getRandomBytes } from '../../utils/algos.js';
|
|
3
|
+
import { aes256CbcNoPaddingEncrypt } from '../../utils/algos.js';
|
|
6
4
|
/**
|
|
7
5
|
* Generates the /U and /UE values for AES-256 PDF encryption.
|
|
8
6
|
* These values are used to validate the user password and decrypt the file key.
|
|
@@ -16,29 +14,18 @@ import { ByteArray } from '../../types.js'
|
|
|
16
14
|
* const { U, UE } = await generateUandUe(password, fileKey)
|
|
17
15
|
* ```
|
|
18
16
|
*/
|
|
19
|
-
export async function generateUandUe(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
U
|
|
30
|
-
U.set(userKeySalt, 40)
|
|
31
|
-
|
|
32
|
-
const hash = await computeAlgorithm2bHash(password, userKeySalt)
|
|
33
|
-
const UE = await aes256CbcNoPaddingEncrypt(
|
|
34
|
-
hash,
|
|
35
|
-
fileKey,
|
|
36
|
-
new Uint8Array(16),
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
return { U, UE }
|
|
17
|
+
export async function generateUandUe(password, fileKey) {
|
|
18
|
+
const random = getRandomBytes(16);
|
|
19
|
+
const userValidationSalt = random.subarray(0, 8);
|
|
20
|
+
const userKeySalt = random.subarray(8, 16);
|
|
21
|
+
const U = new Uint8Array(48);
|
|
22
|
+
U.set(await computeAlgorithm2bHash(password, userValidationSalt));
|
|
23
|
+
U.set(userValidationSalt, 32);
|
|
24
|
+
U.set(userKeySalt, 40);
|
|
25
|
+
const hash = await computeAlgorithm2bHash(password, userKeySalt);
|
|
26
|
+
const UE = await aes256CbcNoPaddingEncrypt(hash, fileKey, new Uint8Array(16));
|
|
27
|
+
return { U, UE };
|
|
40
28
|
}
|
|
41
|
-
|
|
42
29
|
/**
|
|
43
30
|
* Generates the /O and /OE values for AES-256 PDF encryption.
|
|
44
31
|
* These values are used to validate the owner password and decrypt the file key.
|
|
@@ -53,27 +40,15 @@ export async function generateUandUe(
|
|
|
53
40
|
* const { O, OE } = await generateOandOe(ownerPassword, U, fileKey)
|
|
54
41
|
* ```
|
|
55
42
|
*/
|
|
56
|
-
export async function generateOandOe(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
O.set(ownerValidationSalt, 32)
|
|
68
|
-
O.set(ownerKeySalt, 40)
|
|
69
|
-
|
|
70
|
-
const hash = await computeAlgorithm2bHash(password, ownerKeySalt, U)
|
|
71
|
-
|
|
72
|
-
const OE = await aes256CbcNoPaddingEncrypt(
|
|
73
|
-
hash,
|
|
74
|
-
fileKey,
|
|
75
|
-
new Uint8Array(16),
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
return { O, OE }
|
|
43
|
+
export async function generateOandOe(password, U, fileKey) {
|
|
44
|
+
const random = getRandomBytes(16);
|
|
45
|
+
const ownerValidationSalt = random.subarray(0, 8);
|
|
46
|
+
const ownerKeySalt = random.subarray(8, 16);
|
|
47
|
+
const O = new Uint8Array(48);
|
|
48
|
+
O.set(await computeAlgorithm2bHash(password, ownerValidationSalt, U));
|
|
49
|
+
O.set(ownerValidationSalt, 32);
|
|
50
|
+
O.set(ownerKeySalt, 40);
|
|
51
|
+
const hash = await computeAlgorithm2bHash(password, ownerKeySalt, U);
|
|
52
|
+
const OE = await aes256CbcNoPaddingEncrypt(hash, fileKey, new Uint8Array(16));
|
|
53
|
+
return { O, OE };
|
|
79
54
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ByteArray } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Decrypts the user password from the /O value using RC4-128.
|
|
4
|
+
* Used to recover the user password when the owner password is known.
|
|
5
|
+
*
|
|
6
|
+
* @param ownerPw - The owner password.
|
|
7
|
+
* @param ownerKey - The /O value from the encryption dictionary.
|
|
8
|
+
* @returns A promise that resolves to the decrypted user password (with padding removed).
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const userPassword = await decryptUserPasswordRc4_128(ownerPw, O)
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function decryptUserPasswordRc4_128(ownerPw: ByteArray, ownerKey: ByteArray): Promise<ByteArray>;
|
|
16
|
+
/**
|
|
17
|
+
* Computes the /O value for RC4-128 PDF encryption.
|
|
18
|
+
* The /O value is used to verify the owner password.
|
|
19
|
+
*
|
|
20
|
+
* @param ownerPassword - The owner password.
|
|
21
|
+
* @param userPassword - The user password.
|
|
22
|
+
* @returns A promise that resolves to the 32-byte /O value.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const O = await computeOValueRc4_128(ownerPassword, userPassword)
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function computeOValueRc4_128(ownerPassword: ByteArray, userPassword: ByteArray): Promise<ByteArray>;
|
|
30
|
+
/**
|
|
31
|
+
* Computes the /U value for RC4-128 PDF encryption.
|
|
32
|
+
* The /U value is used to verify the user password.
|
|
33
|
+
*
|
|
34
|
+
* @param userPassword - The user password.
|
|
35
|
+
* @param oValue - The /O value.
|
|
36
|
+
* @param permissions - The /P value (permissions flags).
|
|
37
|
+
* @param id - The first element of the /ID array.
|
|
38
|
+
* @param encryptMetadata - Whether to encrypt metadata.
|
|
39
|
+
* @param revision - The encryption revision number.
|
|
40
|
+
* @returns A promise that resolves to the 32-byte /U value.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const U = await computeUValueRc4_128(userPassword, O, permissions, fileId, true)
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function computeUValueRc4_128(userPassword: ByteArray, oValue: ByteArray, permissions: number, id: ByteArray, encryptMetadata: boolean, revision?: number): Promise<ByteArray>;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { int32ToLittleEndianBytes, removePdfPasswordPadding } from '../utils'
|
|
8
|
-
|
|
1
|
+
import { md5 } from '../../utils/algos';
|
|
2
|
+
import { concatUint8Arrays } from '../../utils/concatUint8Arrays';
|
|
3
|
+
import { rc4 } from '../ciphers/rc4';
|
|
4
|
+
import { DEFAULT_PADDING } from '../constants';
|
|
5
|
+
import { padPassword } from '../key-derivation/key-derivation';
|
|
6
|
+
import { int32ToLittleEndianBytes, removePdfPasswordPadding } from '../utils';
|
|
9
7
|
/**
|
|
10
8
|
* Encrypts data with RC4 using the provided key.
|
|
11
9
|
*
|
|
@@ -13,13 +11,9 @@ import { int32ToLittleEndianBytes, removePdfPasswordPadding } from '../utils'
|
|
|
13
11
|
* @param data - The data to encrypt.
|
|
14
12
|
* @returns A promise that resolves to the encrypted data.
|
|
15
13
|
*/
|
|
16
|
-
async function rc4EncryptWithKey(
|
|
17
|
-
key
|
|
18
|
-
data: ByteArray,
|
|
19
|
-
): Promise<ByteArray> {
|
|
20
|
-
return await rc4(key).encrypt(data)
|
|
14
|
+
async function rc4EncryptWithKey(key, data) {
|
|
15
|
+
return await rc4(key).encrypt(data);
|
|
21
16
|
}
|
|
22
|
-
|
|
23
17
|
/**
|
|
24
18
|
* Decrypts the user password from the /O value using RC4-128.
|
|
25
19
|
* Used to recover the user password when the owner password is known.
|
|
@@ -33,27 +27,20 @@ async function rc4EncryptWithKey(
|
|
|
33
27
|
* const userPassword = await decryptUserPasswordRc4_128(ownerPw, O)
|
|
34
28
|
* ```
|
|
35
29
|
*/
|
|
36
|
-
export async function decryptUserPasswordRc4_128(
|
|
37
|
-
ownerPw
|
|
38
|
-
|
|
39
|
-
): Promise<ByteArray> {
|
|
40
|
-
const ownerPad = padPassword(ownerPw)
|
|
41
|
-
let digest = await md5(ownerPad)
|
|
42
|
-
|
|
30
|
+
export async function decryptUserPasswordRc4_128(ownerPw, ownerKey) {
|
|
31
|
+
const ownerPad = padPassword(ownerPw);
|
|
32
|
+
let digest = await md5(ownerPad);
|
|
43
33
|
for (let i = 0; i < 50; i++) {
|
|
44
|
-
digest = await md5(digest)
|
|
34
|
+
digest = await md5(digest);
|
|
45
35
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
let data = ownerKey
|
|
36
|
+
const key = digest.subarray(0, 16);
|
|
37
|
+
let data = ownerKey;
|
|
49
38
|
for (let i = 0; i < 20; i++) {
|
|
50
|
-
const roundKey = key.map((b) => b ^ i)
|
|
51
|
-
data = await rc4EncryptWithKey(roundKey, data)
|
|
39
|
+
const roundKey = key.map((b) => b ^ i);
|
|
40
|
+
data = await rc4EncryptWithKey(roundKey, data);
|
|
52
41
|
}
|
|
53
|
-
|
|
54
|
-
return removePdfPasswordPadding(data)
|
|
42
|
+
return removePdfPasswordPadding(data);
|
|
55
43
|
}
|
|
56
|
-
|
|
57
44
|
/**
|
|
58
45
|
* Computes the /O value for RC4-128 PDF encryption.
|
|
59
46
|
* The /O value is used to verify the owner password.
|
|
@@ -67,30 +54,21 @@ export async function decryptUserPasswordRc4_128(
|
|
|
67
54
|
* const O = await computeOValueRc4_128(ownerPassword, userPassword)
|
|
68
55
|
* ```
|
|
69
56
|
*/
|
|
70
|
-
export async function computeOValueRc4_128(
|
|
71
|
-
ownerPassword
|
|
72
|
-
|
|
73
|
-
): Promise<ByteArray> {
|
|
74
|
-
const oPad = padPassword(ownerPassword)
|
|
75
|
-
|
|
76
|
-
let digest = await md5(oPad)
|
|
57
|
+
export async function computeOValueRc4_128(ownerPassword, userPassword) {
|
|
58
|
+
const oPad = padPassword(ownerPassword);
|
|
59
|
+
let digest = await md5(oPad);
|
|
77
60
|
for (let i = 0; i < 50; i++) {
|
|
78
|
-
digest = await md5(digest)
|
|
61
|
+
digest = await md5(digest);
|
|
79
62
|
}
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
const uPad = padPassword(userPassword)
|
|
84
|
-
let data = await rc4EncryptWithKey(key, uPad)
|
|
85
|
-
|
|
63
|
+
const key = digest.subarray(0, 16);
|
|
64
|
+
const uPad = padPassword(userPassword);
|
|
65
|
+
let data = await rc4EncryptWithKey(key, uPad);
|
|
86
66
|
for (let i = 1; i <= 19; i++) {
|
|
87
|
-
const roundKey = key.map((b) => b ^ i)
|
|
88
|
-
data = await rc4EncryptWithKey(roundKey, data)
|
|
67
|
+
const roundKey = key.map((b) => b ^ i);
|
|
68
|
+
data = await rc4EncryptWithKey(roundKey, data);
|
|
89
69
|
}
|
|
90
|
-
|
|
91
|
-
return data
|
|
70
|
+
return data;
|
|
92
71
|
}
|
|
93
|
-
|
|
94
72
|
/**
|
|
95
73
|
* Computes the 128-bit encryption key for RC4-128 PDF encryption.
|
|
96
74
|
*
|
|
@@ -102,36 +80,17 @@ export async function computeOValueRc4_128(
|
|
|
102
80
|
* @param revision - The encryption revision number.
|
|
103
81
|
* @returns A promise that resolves to the 16-byte encryption key.
|
|
104
82
|
*/
|
|
105
|
-
async function computeEncryptionKeyRc4_128(
|
|
106
|
-
|
|
107
|
-
oValue
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
encryptMetadata: boolean,
|
|
111
|
-
revision: number = 3,
|
|
112
|
-
): Promise<ByteArray> {
|
|
113
|
-
const perms = int32ToLittleEndianBytes(permissions)
|
|
114
|
-
|
|
115
|
-
let digest = await md5(
|
|
116
|
-
concatUint8Arrays(
|
|
117
|
-
userPad,
|
|
118
|
-
oValue,
|
|
119
|
-
perms,
|
|
120
|
-
id,
|
|
121
|
-
revision >= 4 && !encryptMetadata
|
|
122
|
-
? new Uint8Array([0xff, 0xff, 0xff, 0xff])
|
|
123
|
-
: new Uint8Array(),
|
|
124
|
-
),
|
|
125
|
-
)
|
|
126
|
-
|
|
83
|
+
async function computeEncryptionKeyRc4_128(userPad, oValue, permissions, id, encryptMetadata, revision = 3) {
|
|
84
|
+
const perms = int32ToLittleEndianBytes(permissions);
|
|
85
|
+
let digest = await md5(concatUint8Arrays(userPad, oValue, perms, id, revision >= 4 && !encryptMetadata
|
|
86
|
+
? new Uint8Array([0xff, 0xff, 0xff, 0xff])
|
|
87
|
+
: new Uint8Array()));
|
|
127
88
|
// 50 iterations
|
|
128
89
|
for (let i = 0; i < 50; i++) {
|
|
129
|
-
digest = await md5(digest)
|
|
90
|
+
digest = await md5(digest);
|
|
130
91
|
}
|
|
131
|
-
|
|
132
|
-
return digest.subarray(0, 16) // RC4-128
|
|
92
|
+
return digest.subarray(0, 16); // RC4-128
|
|
133
93
|
}
|
|
134
|
-
|
|
135
94
|
/**
|
|
136
95
|
* Computes the /U value for RC4-128 PDF encryption.
|
|
137
96
|
* The /U value is used to verify the user password.
|
|
@@ -149,42 +108,22 @@ async function computeEncryptionKeyRc4_128(
|
|
|
149
108
|
* const U = await computeUValueRc4_128(userPassword, O, permissions, fileId, true)
|
|
150
109
|
* ```
|
|
151
110
|
*/
|
|
152
|
-
export async function computeUValueRc4_128(
|
|
153
|
-
userPassword
|
|
154
|
-
oValue: ByteArray,
|
|
155
|
-
permissions: number,
|
|
156
|
-
id: ByteArray,
|
|
157
|
-
encryptMetadata: boolean,
|
|
158
|
-
revision?: number,
|
|
159
|
-
): Promise<ByteArray> {
|
|
160
|
-
const userPad = padPassword(userPassword)
|
|
161
|
-
|
|
111
|
+
export async function computeUValueRc4_128(userPassword, oValue, permissions, id, encryptMetadata, revision) {
|
|
112
|
+
const userPad = padPassword(userPassword);
|
|
162
113
|
// Step 1: Compute encryption key
|
|
163
|
-
const encryptionKey = await computeEncryptionKeyRc4_128(
|
|
164
|
-
userPad,
|
|
165
|
-
oValue,
|
|
166
|
-
permissions,
|
|
167
|
-
id,
|
|
168
|
-
encryptMetadata,
|
|
169
|
-
revision,
|
|
170
|
-
)
|
|
171
|
-
|
|
114
|
+
const encryptionKey = await computeEncryptionKeyRc4_128(userPad, oValue, permissions, id, encryptMetadata, revision);
|
|
172
115
|
// Step 2 & 3: MD5 of padding + file ID
|
|
173
|
-
const hash = await md5(concatUint8Arrays(DEFAULT_PADDING, id)) // 16 bytes
|
|
174
|
-
|
|
116
|
+
const hash = await md5(concatUint8Arrays(DEFAULT_PADDING, id)); // 16 bytes
|
|
175
117
|
// Step 4: First RC4 encrypt with base key
|
|
176
|
-
let data = await rc4EncryptWithKey(encryptionKey, hash)
|
|
177
|
-
|
|
118
|
+
let data = await rc4EncryptWithKey(encryptionKey, hash);
|
|
178
119
|
// Step 5: 19 more rounds of RC4 with key XOR i
|
|
179
120
|
for (let i = 1; i <= 19; i++) {
|
|
180
|
-
const roundKey = encryptionKey.map((b) => b ^ i)
|
|
181
|
-
data = await rc4EncryptWithKey(roundKey, data)
|
|
121
|
+
const roundKey = encryptionKey.map((b) => b ^ i);
|
|
122
|
+
data = await rc4EncryptWithKey(roundKey, data);
|
|
182
123
|
}
|
|
183
|
-
|
|
184
124
|
// Step 6: Append 16 more bytes (usually same padding again, or random)
|
|
185
|
-
const result = new Uint8Array(32)
|
|
186
|
-
result.set(data, 0)
|
|
187
|
-
result.set(DEFAULT_PADDING.subarray(0, 16), 16)
|
|
188
|
-
|
|
189
|
-
return result
|
|
125
|
+
const result = new Uint8Array(32);
|
|
126
|
+
result.set(data, 0);
|
|
127
|
+
result.set(DEFAULT_PADDING.subarray(0, 16), 16);
|
|
128
|
+
return result;
|
|
190
129
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ByteArray } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Decrypts the user password from the /O value using RC4-40.
|
|
4
|
+
* Used to recover the user password when the owner password is known.
|
|
5
|
+
*
|
|
6
|
+
* @param ownerPw - The owner password.
|
|
7
|
+
* @param ownerKey - The /O value from the encryption dictionary.
|
|
8
|
+
* @returns A promise that resolves to the decrypted user password (with padding removed).
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const userPassword = await decryptUserPasswordRc4_40(ownerPw, O)
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function decryptUserPasswordRc4_40(ownerPw: ByteArray, ownerKey: ByteArray): Promise<ByteArray>;
|
|
16
|
+
/**
|
|
17
|
+
* Computes the /O value for RC4-40 PDF encryption.
|
|
18
|
+
* The /O value is used to verify the owner password.
|
|
19
|
+
*
|
|
20
|
+
* @param ownerPw - The owner password.
|
|
21
|
+
* @param userPw - The user password.
|
|
22
|
+
* @returns A promise that resolves to the 32-byte /O value.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const O = await computeORc4_40(ownerPassword, userPassword)
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function computeORc4_40(ownerPw: ByteArray, userPw: ByteArray): Promise<ByteArray>;
|
|
30
|
+
/**
|
|
31
|
+
* Computes the 40-bit encryption key for RC4-40 PDF encryption.
|
|
32
|
+
*
|
|
33
|
+
* @param userPw - The user password.
|
|
34
|
+
* @param oValue - The /O value.
|
|
35
|
+
* @param permissions - The /P value (permissions flags).
|
|
36
|
+
* @param fileId - The first element of the /ID array.
|
|
37
|
+
* @returns A promise that resolves to the 5-byte (40-bit) encryption key.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const key = await computeEncryptionKeyRc4_40(userPw, O, permissions, fileId)
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function computeEncryptionKeyRc4_40(userPw: ByteArray, oValue: ByteArray, permissions: number, fileId: ByteArray): Promise<ByteArray>;
|
|
45
|
+
/**
|
|
46
|
+
* Computes the /U value for RC4-40 PDF encryption.
|
|
47
|
+
* The /U value is used to verify the user password.
|
|
48
|
+
*
|
|
49
|
+
* @param userPw - The user password.
|
|
50
|
+
* @param oValue - The /O value.
|
|
51
|
+
* @param permissions - The /P value (permissions flags).
|
|
52
|
+
* @param fileId - The first element of the /ID array.
|
|
53
|
+
* @returns A promise that resolves to the 32-byte /U value.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const U = await computeURc4_40(userPassword, O, permissions, fileId)
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function computeURc4_40(userPw: ByteArray, oValue: ByteArray, permissions: number, fileId: ByteArray): Promise<ByteArray>;
|