pdf-lite 1.0.1-alpha.2 → 1.0.1-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (721) hide show
  1. package/dist/core/decoder.d.ts +39 -0
  2. package/dist/core/decoder.js +367 -0
  3. package/dist/core/generators.d.ts +37 -0
  4. package/{packages/pdf-lite/src/core/generators.ts → dist/core/generators.js} +36 -67
  5. package/dist/core/incremental-parser.d.ts +103 -0
  6. package/{packages/pdf-lite/src/core/incremental-parser.ts → dist/core/incremental-parser.js} +63 -100
  7. package/dist/core/index.d.ts +2 -0
  8. package/dist/core/index.js +2 -0
  9. package/dist/core/objects/pdf-array.d.ts +12 -0
  10. package/dist/core/objects/pdf-array.js +42 -0
  11. package/dist/core/objects/pdf-boolean.d.ts +8 -0
  12. package/dist/core/objects/pdf-boolean.js +15 -0
  13. package/dist/core/objects/pdf-comment.d.ts +18 -0
  14. package/dist/core/objects/pdf-comment.js +39 -0
  15. package/dist/core/objects/pdf-date.d.ts +5 -0
  16. package/dist/core/objects/pdf-date.js +40 -0
  17. package/dist/core/objects/pdf-dictionary.d.ts +22 -0
  18. package/dist/core/objects/pdf-dictionary.js +136 -0
  19. package/dist/core/objects/pdf-hexadecimal.d.ts +17 -0
  20. package/dist/core/objects/pdf-hexadecimal.js +42 -0
  21. package/dist/core/objects/pdf-indirect-object.d.ts +27 -0
  22. package/dist/core/objects/pdf-indirect-object.js +100 -0
  23. package/dist/core/objects/pdf-name.d.ts +8 -0
  24. package/dist/core/objects/pdf-name.js +15 -0
  25. package/dist/core/objects/pdf-null.d.ts +7 -0
  26. package/dist/core/objects/pdf-null.js +11 -0
  27. package/dist/core/objects/pdf-number.d.ts +25 -0
  28. package/dist/core/objects/pdf-number.js +77 -0
  29. package/dist/core/objects/pdf-object-reference.d.ts +9 -0
  30. package/dist/core/objects/pdf-object-reference.js +19 -0
  31. package/dist/core/objects/pdf-object.d.ts +30 -0
  32. package/dist/core/objects/pdf-object.js +77 -0
  33. package/dist/core/objects/pdf-start-xref.d.ts +10 -0
  34. package/dist/core/objects/pdf-start-xref.js +32 -0
  35. package/dist/core/objects/pdf-stream.d.ts +100 -0
  36. package/dist/core/objects/pdf-stream.js +521 -0
  37. package/dist/core/objects/pdf-string.d.ts +15 -0
  38. package/dist/core/objects/pdf-string.js +30 -0
  39. package/dist/core/objects/pdf-trailer.d.ts +26 -0
  40. package/dist/core/objects/pdf-trailer.js +33 -0
  41. package/dist/core/objects/pdf-xref-table.d.ts +48 -0
  42. package/dist/core/objects/pdf-xref-table.js +183 -0
  43. package/{packages/pdf-lite/src/core/parser.ts → dist/core/parser.d.ts} +3 -4
  44. package/dist/core/parser.js +9 -0
  45. package/dist/core/ref.d.ts +59 -0
  46. package/{packages/pdf-lite/src/core/ref.ts → dist/core/ref.js} +23 -41
  47. package/dist/core/serializer.d.ts +36 -0
  48. package/{packages/pdf-lite/src/core/serializer.ts → dist/core/serializer.js} +20 -30
  49. package/dist/core/streams/object-stream.d.ts +6 -0
  50. package/dist/core/streams/object-stream.js +15 -0
  51. package/dist/core/tokeniser.d.ts +98 -0
  52. package/dist/core/tokeniser.js +552 -0
  53. package/dist/core/tokens/boolean-token.d.ts +8 -0
  54. package/dist/core/tokens/boolean-token.js +15 -0
  55. package/dist/core/tokens/byte-offset-token.d.ts +8 -0
  56. package/dist/core/tokens/byte-offset-token.js +15 -0
  57. package/dist/core/tokens/comment-token.d.ts +10 -0
  58. package/dist/core/tokens/comment-token.js +26 -0
  59. package/dist/core/tokens/end-array-token.d.ts +4 -0
  60. package/dist/core/tokens/end-array-token.js +8 -0
  61. package/dist/core/tokens/end-dictionary-token.d.ts +4 -0
  62. package/dist/core/tokens/end-dictionary-token.js +8 -0
  63. package/dist/core/tokens/end-object-token.d.ts +4 -0
  64. package/dist/core/tokens/end-object-token.js +8 -0
  65. package/dist/core/tokens/end-stream-token.d.ts +5 -0
  66. package/dist/core/tokens/end-stream-token.js +8 -0
  67. package/dist/core/tokens/hexadecimal-token.d.ts +7 -0
  68. package/dist/core/tokens/hexadecimal-token.js +16 -0
  69. package/dist/core/tokens/name-token.d.ts +6 -0
  70. package/dist/core/tokens/name-token.js +15 -0
  71. package/dist/core/tokens/null-token.d.ts +4 -0
  72. package/dist/core/tokens/null-token.js +8 -0
  73. package/dist/core/tokens/number-token.d.ts +24 -0
  74. package/dist/core/tokens/number-token.js +104 -0
  75. package/dist/core/tokens/object-reference-token.d.ts +7 -0
  76. package/dist/core/tokens/object-reference-token.js +17 -0
  77. package/dist/core/tokens/start-array-token.d.ts +4 -0
  78. package/dist/core/tokens/start-array-token.js +8 -0
  79. package/dist/core/tokens/start-dictionary-token.d.ts +4 -0
  80. package/dist/core/tokens/start-dictionary-token.js +8 -0
  81. package/dist/core/tokens/start-object-token.d.ts +8 -0
  82. package/dist/core/tokens/start-object-token.js +17 -0
  83. package/dist/core/tokens/start-stream-token.d.ts +8 -0
  84. package/dist/core/tokens/start-stream-token.js +38 -0
  85. package/dist/core/tokens/start-xref-token.d.ts +4 -0
  86. package/dist/core/tokens/start-xref-token.js +8 -0
  87. package/dist/core/tokens/stream-chunk-token.d.ts +5 -0
  88. package/dist/core/tokens/stream-chunk-token.js +6 -0
  89. package/dist/core/tokens/string-token.d.ts +7 -0
  90. package/dist/core/tokens/string-token.js +13 -0
  91. package/dist/core/tokens/token.d.ts +10 -0
  92. package/dist/core/tokens/token.js +32 -0
  93. package/dist/core/tokens/trailer-token.d.ts +5 -0
  94. package/dist/core/tokens/trailer-token.js +10 -0
  95. package/dist/core/tokens/whitespace-token.d.ts +11 -0
  96. package/dist/core/tokens/whitespace-token.js +36 -0
  97. package/dist/core/tokens/xref-table-entry-token.d.ts +13 -0
  98. package/dist/core/tokens/xref-table-entry-token.js +40 -0
  99. package/dist/core/tokens/xref-table-section-start-token.d.ts +8 -0
  100. package/dist/core/tokens/xref-table-section-start-token.js +21 -0
  101. package/dist/core/tokens/xref-table-start-token.d.ts +5 -0
  102. package/dist/core/tokens/xref-table-start-token.js +10 -0
  103. package/dist/crypto/ciphers/aes128.d.ts +19 -0
  104. package/{packages/pdf-lite/src/crypto/ciphers/aes128.ts → dist/crypto/ciphers/aes128.js} +17 -27
  105. package/dist/crypto/ciphers/aes256.d.ts +18 -0
  106. package/{packages/pdf-lite/src/crypto/ciphers/aes256.ts → dist/crypto/ciphers/aes256.js} +14 -17
  107. package/dist/crypto/ciphers/rc4.d.ts +18 -0
  108. package/{packages/pdf-lite/src/crypto/ciphers/rc4.ts → dist/crypto/ciphers/rc4.js} +25 -30
  109. package/dist/crypto/constants.d.ts +6 -0
  110. package/{packages/pdf-lite/src/crypto/constants.ts → dist/crypto/constants.js} +1 -1
  111. package/dist/crypto/key-derivation/key-derivation-aes256.d.ts +56 -0
  112. package/dist/crypto/key-derivation/key-derivation-aes256.js +156 -0
  113. package/dist/crypto/key-derivation/key-derivation.d.ts +42 -0
  114. package/{packages/pdf-lite/src/crypto/key-derivation/key-derivation.ts → dist/crypto/key-derivation/key-derivation.js} +35 -66
  115. package/dist/crypto/key-gen/key-gen-aes256.d.ts +36 -0
  116. package/{packages/pdf-lite/src/crypto/key-gen/key-gen-aes256.ts → dist/crypto/key-gen/key-gen-aes256.js} +25 -50
  117. package/dist/crypto/key-gen/key-gen-rc4-128.d.ts +47 -0
  118. package/{packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-128.ts → dist/crypto/key-gen/key-gen-rc4-128.js} +45 -106
  119. package/dist/crypto/key-gen/key-gen-rc4-40.d.ts +60 -0
  120. package/{packages/pdf-lite/src/crypto/key-gen/key-gen-rc4-40.ts → dist/crypto/key-gen/key-gen-rc4-40.js} +26 -62
  121. package/dist/crypto/types.d.ts +5 -0
  122. package/dist/crypto/types.js +1 -0
  123. package/dist/crypto/utils.d.ts +40 -0
  124. package/{packages/pdf-lite/src/crypto/utils.ts → dist/crypto/utils.js} +27 -36
  125. package/dist/filters/ascii85.d.ts +16 -0
  126. package/{packages/pdf-lite/src/filters/ascii85.ts → dist/filters/ascii85.js} +41 -65
  127. package/dist/filters/asciihex.d.ts +16 -0
  128. package/{packages/pdf-lite/src/filters/asciihex.ts → dist/filters/asciihex.js} +18 -19
  129. package/dist/filters/flate.d.ts +15 -0
  130. package/{packages/pdf-lite/src/filters/flate.ts → dist/filters/flate.js} +7 -10
  131. package/dist/filters/lzw.d.ts +16 -0
  132. package/dist/filters/lzw.js +150 -0
  133. package/dist/filters/pass-through.d.ts +14 -0
  134. package/{packages/pdf-lite/src/filters/pass-through.ts → dist/filters/pass-through.js} +6 -9
  135. package/dist/filters/runlength.d.ts +16 -0
  136. package/{packages/pdf-lite/src/filters/runlength.ts → dist/filters/runlength.js} +36 -40
  137. package/dist/filters/types.d.ts +18 -0
  138. package/{packages/pdf-lite/src/filters/types.ts → dist/filters/types.js} +1 -10
  139. package/dist/index.d.ts +4 -0
  140. package/dist/index.js +4 -0
  141. package/dist/pdf/errors.d.ts +6 -0
  142. package/{packages/pdf-lite/src/pdf/errors.ts → dist/pdf/errors.js} +2 -1
  143. package/dist/pdf/index.d.ts +4 -0
  144. package/dist/pdf/index.js +4 -0
  145. package/dist/pdf/pdf-document.d.ts +277 -0
  146. package/{packages/pdf-lite/src/pdf/pdf-document.ts → dist/pdf/pdf-document.js} +305 -541
  147. package/dist/pdf/pdf-reader.d.ts +37 -0
  148. package/{packages/pdf-lite/src/pdf/pdf-reader.ts → dist/pdf/pdf-reader.js} +12 -22
  149. package/dist/pdf/pdf-revision.d.ts +101 -0
  150. package/{packages/pdf-lite/src/pdf/pdf-revision.ts → dist/pdf/pdf-revision.js} +70 -105
  151. package/dist/pdf/pdf-xref-lookup.d.ts +149 -0
  152. package/dist/pdf/pdf-xref-lookup.js +402 -0
  153. package/dist/security/crypt-filters/aesv2.d.ts +35 -0
  154. package/{packages/pdf-lite/src/security/crypt-filters/aesv2.ts → dist/security/crypt-filters/aesv2.js} +9 -26
  155. package/dist/security/crypt-filters/aesv3.d.ts +36 -0
  156. package/{packages/pdf-lite/src/security/crypt-filters/aesv3.ts → dist/security/crypt-filters/aesv3.js} +9 -23
  157. package/{packages/pdf-lite/src/security/crypt-filters/base.ts → dist/security/crypt-filters/base.d.ts} +21 -73
  158. package/dist/security/crypt-filters/base.js +93 -0
  159. package/dist/security/crypt-filters/identity.d.ts +28 -0
  160. package/{packages/pdf-lite/src/security/crypt-filters/identity.ts → dist/security/crypt-filters/identity.js} +9 -13
  161. package/dist/security/crypt-filters/v2.d.ts +37 -0
  162. package/{packages/pdf-lite/src/security/crypt-filters/v2.ts → dist/security/crypt-filters/v2.js} +9 -26
  163. package/dist/security/handlers/base.d.ts +304 -0
  164. package/dist/security/handlers/base.js +359 -0
  165. package/dist/security/handlers/pubSec.d.ts +164 -0
  166. package/dist/security/handlers/pubSec.js +299 -0
  167. package/dist/security/handlers/utils.d.ts +77 -0
  168. package/dist/security/handlers/utils.js +244 -0
  169. package/dist/security/handlers/v1.d.ts +81 -0
  170. package/dist/security/handlers/v1.js +135 -0
  171. package/dist/security/handlers/v2.d.ts +63 -0
  172. package/{packages/pdf-lite/src/security/handlers/v2.ts → dist/security/handlers/v2.js} +25 -62
  173. package/dist/security/handlers/v4.d.ts +121 -0
  174. package/dist/security/handlers/v4.js +257 -0
  175. package/dist/security/handlers/v5.d.ts +112 -0
  176. package/dist/security/handlers/v5.js +210 -0
  177. package/{packages/pdf-lite/src/security/types.ts → dist/security/types.d.ts} +72 -94
  178. package/dist/security/types.js +1 -0
  179. package/dist/signing/document-security-store.d.ts +108 -0
  180. package/dist/signing/document-security-store.js +156 -0
  181. package/dist/signing/index.d.ts +3 -0
  182. package/dist/signing/index.js +3 -0
  183. package/dist/signing/signatures/adbe-pkcs7-detached.d.ts +57 -0
  184. package/dist/signing/signatures/adbe-pkcs7-detached.js +117 -0
  185. package/dist/signing/signatures/adbe-pkcs7-sha1.d.ts +55 -0
  186. package/dist/signing/signatures/adbe-pkcs7-sha1.js +121 -0
  187. package/dist/signing/signatures/adbe-x509-rsa-sha1.d.ts +49 -0
  188. package/dist/signing/signatures/adbe-x509-rsa-sha1.js +81 -0
  189. package/dist/signing/signatures/base.d.ts +107 -0
  190. package/dist/signing/signatures/base.js +145 -0
  191. package/dist/signing/signatures/etsi-cades-detached.d.ts +64 -0
  192. package/dist/signing/signatures/etsi-cades-detached.js +159 -0
  193. package/dist/signing/signatures/etsi-rfc3161.d.ts +37 -0
  194. package/{packages/pdf-lite/src/signing/signatures/etsi-rfc3161.ts → dist/signing/signatures/etsi-rfc3161.js} +21 -43
  195. package/dist/signing/signatures/index.d.ts +6 -0
  196. package/dist/signing/signatures/index.js +6 -0
  197. package/dist/signing/signer.d.ts +23 -0
  198. package/dist/signing/signer.js +92 -0
  199. package/{packages/pdf-lite/src/signing/types.ts → dist/signing/types.d.ts} +40 -48
  200. package/dist/signing/types.js +1 -0
  201. package/dist/signing/utils.d.ts +32 -0
  202. package/{packages/pdf-lite/src/signing/utils.ts → dist/signing/utils.js} +12 -31
  203. package/dist/types.d.ts +23 -0
  204. package/dist/types.js +11 -0
  205. package/dist/utils/IterableReadableStream.d.ts +24 -0
  206. package/{packages/pdf-lite/src/utils/IterableReadableStream.ts → dist/utils/IterableReadableStream.js} +6 -6
  207. package/dist/utils/algos.d.ts +242 -0
  208. package/{packages/pdf-lite/src/utils/algos.ts → dist/utils/algos.js} +63 -136
  209. package/dist/utils/assert.d.ts +28 -0
  210. package/{packages/pdf-lite/src/utils/assert.ts → dist/utils/assert.js} +5 -10
  211. package/dist/utils/bytesToHex.d.ts +13 -0
  212. package/{packages/pdf-lite/src/utils/bytesToHex.ts → dist/utils/bytesToHex.js} +4 -6
  213. package/dist/utils/bytesToHexBytes.d.ts +14 -0
  214. package/{packages/pdf-lite/src/utils/bytesToHexBytes.ts → dist/utils/bytesToHexBytes.js} +7 -12
  215. package/dist/utils/bytesToString.d.ts +13 -0
  216. package/{packages/pdf-lite/src/utils/bytesToString.ts → dist/utils/bytesToString.js} +3 -5
  217. package/dist/utils/concatUint8Arrays.d.ts +16 -0
  218. package/{packages/pdf-lite/src/utils/concatUint8Arrays.ts → dist/utils/concatUint8Arrays.js} +7 -9
  219. package/dist/utils/escapeString.d.ts +14 -0
  220. package/dist/utils/escapeString.js +43 -0
  221. package/dist/utils/hexBytesToBytes.d.ts +15 -0
  222. package/{packages/pdf-lite/src/utils/hexBytesToBytes.ts → dist/utils/hexBytesToBytes.js} +4 -6
  223. package/dist/utils/hexBytesToString.d.ts +13 -0
  224. package/{packages/pdf-lite/src/utils/hexBytesToString.ts → dist/utils/hexBytesToString.js} +5 -7
  225. package/dist/utils/hexToBytes.d.ts +13 -0
  226. package/{packages/pdf-lite/src/utils/hexToBytes.ts → dist/utils/hexToBytes.js} +4 -6
  227. package/dist/utils/padBytes.d.ts +15 -0
  228. package/{packages/pdf-lite/src/utils/padBytes.ts → dist/utils/padBytes.js} +5 -9
  229. package/dist/utils/predictors.d.ts +113 -0
  230. package/{packages/pdf-lite/src/utils/predictors.ts → dist/utils/predictors.js} +103 -156
  231. package/dist/utils/replaceInBuffer.d.ts +22 -0
  232. package/{packages/pdf-lite/src/utils/replaceInBuffer.ts → dist/utils/replaceInBuffer.js} +18 -27
  233. package/dist/utils/stringToBytes.d.ts +14 -0
  234. package/{packages/pdf-lite/src/utils/stringToBytes.ts → dist/utils/stringToBytes.js} +6 -7
  235. package/dist/utils/stringToHexBytes.d.ts +15 -0
  236. package/{packages/pdf-lite/src/utils/stringToHexBytes.ts → dist/utils/stringToHexBytes.js} +5 -7
  237. package/dist/utils/unescapeString.d.ts +16 -0
  238. package/dist/utils/unescapeString.js +114 -0
  239. package/package.json +37 -34
  240. package/.commitlintrc.cjs +0 -25
  241. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
  242. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  243. package/.github/workflows/docs.yaml +0 -95
  244. package/.github/workflows/prepare-release.yaml +0 -79
  245. package/.github/workflows/release.yaml +0 -80
  246. package/.github/workflows/test.yaml +0 -35
  247. package/.husky/commit-msg +0 -1
  248. package/.husky/pre-commit +0 -1
  249. package/.prettierignore +0 -4
  250. package/.prettierrc +0 -4
  251. package/CONTRIBUTING.md +0 -109
  252. package/EXAMPLES.md +0 -1512
  253. package/docs/README.md +0 -127
  254. package/docs/core/README.md +0 -43
  255. package/docs/core/decoder/README.md +0 -11
  256. package/docs/core/decoder/classes/PdfDecoder.md +0 -362
  257. package/docs/core/generators/README.md +0 -14
  258. package/docs/core/generators/functions/bytesToPdfObjects.md +0 -26
  259. package/docs/core/generators/functions/pdfDecoder.md +0 -36
  260. package/docs/core/generators/functions/pdfDecoderAsync.md +0 -26
  261. package/docs/core/generators/functions/stringToPdfObjects.md +0 -25
  262. package/docs/core/incremental-parser/README.md +0 -13
  263. package/docs/core/incremental-parser/classes/EofReachedError.md +0 -55
  264. package/docs/core/incremental-parser/classes/IncrementalParser.md +0 -299
  265. package/docs/core/incremental-parser/classes/NoMoreTokensError.md +0 -55
  266. package/docs/core/objects/pdf-array/README.md +0 -11
  267. package/docs/core/objects/pdf-array/classes/PdfArray.md +0 -305
  268. package/docs/core/objects/pdf-boolean/README.md +0 -11
  269. package/docs/core/objects/pdf-boolean/classes/PdfBoolean.md +0 -265
  270. package/docs/core/objects/pdf-comment/README.md +0 -11
  271. package/docs/core/objects/pdf-comment/classes/PdfComment.md +0 -329
  272. package/docs/core/objects/pdf-date/README.md +0 -11
  273. package/docs/core/objects/pdf-date/classes/PdfDate.md +0 -317
  274. package/docs/core/objects/pdf-dictionary/README.md +0 -17
  275. package/docs/core/objects/pdf-dictionary/classes/PdfDictionary.md +0 -396
  276. package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryEntries.md +0 -9
  277. package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryEntry.md +0 -9
  278. package/docs/core/objects/pdf-dictionary/type-aliases/PdfDictionaryMap.md +0 -9
  279. package/docs/core/objects/pdf-hexadecimal/README.md +0 -11
  280. package/docs/core/objects/pdf-hexadecimal/classes/PdfHexadecimal.md +0 -320
  281. package/docs/core/objects/pdf-indirect-object/README.md +0 -11
  282. package/docs/core/objects/pdf-indirect-object/classes/PdfIndirectObject.md +0 -411
  283. package/docs/core/objects/pdf-name/README.md +0 -11
  284. package/docs/core/objects/pdf-name/classes/PdfName.md +0 -271
  285. package/docs/core/objects/pdf-null/README.md +0 -11
  286. package/docs/core/objects/pdf-null/classes/PdfNull.md +0 -259
  287. package/docs/core/objects/pdf-number/README.md +0 -12
  288. package/docs/core/objects/pdf-number/classes/PdfByteOffsetNumber.md +0 -369
  289. package/docs/core/objects/pdf-number/classes/PdfNumber.md +0 -345
  290. package/docs/core/objects/pdf-object/README.md +0 -11
  291. package/docs/core/objects/pdf-object/classes/PdfObject.md +0 -214
  292. package/docs/core/objects/pdf-object-reference/README.md +0 -11
  293. package/docs/core/objects/pdf-object-reference/classes/PdfObjectReference.md +0 -279
  294. package/docs/core/objects/pdf-start-xref/README.md +0 -11
  295. package/docs/core/objects/pdf-start-xref/classes/PdfStartXRef.md +0 -265
  296. package/docs/core/objects/pdf-stream/README.md +0 -23
  297. package/docs/core/objects/pdf-stream/classes/PdfObjStream.md +0 -699
  298. package/docs/core/objects/pdf-stream/classes/PdfStream.md +0 -570
  299. package/docs/core/objects/pdf-stream/classes/PdfXRefStream.md +0 -723
  300. package/docs/core/objects/pdf-stream/classes/PdfXRefStreamCompressedEntry.md +0 -51
  301. package/docs/core/objects/pdf-stream/type-aliases/PdfXRefStreamEntry.md +0 -9
  302. package/docs/core/objects/pdf-stream/type-aliases/PdfXRefStreamStandardEntry.md +0 -9
  303. package/docs/core/objects/pdf-stream/variables/PdfXRefStreamStandardEntry.md +0 -9
  304. package/docs/core/objects/pdf-string/README.md +0 -11
  305. package/docs/core/objects/pdf-string/classes/PdfString.md +0 -301
  306. package/docs/core/objects/pdf-trailer/README.md +0 -16
  307. package/docs/core/objects/pdf-trailer/classes/PdfTrailer.md +0 -271
  308. package/docs/core/objects/pdf-trailer/type-aliases/PdfTrailerDictionary.md +0 -9
  309. package/docs/core/objects/pdf-trailer/type-aliases/PdfTrailerEntries.md +0 -51
  310. package/docs/core/objects/pdf-xref-table/README.md +0 -13
  311. package/docs/core/objects/pdf-xref-table/classes/PdfXRefTable.md +0 -331
  312. package/docs/core/objects/pdf-xref-table/classes/PdfXRefTableEntry.md +0 -297
  313. package/docs/core/objects/pdf-xref-table/classes/PdfXRefTableSectionHeader.md +0 -277
  314. package/docs/core/parser/README.md +0 -11
  315. package/docs/core/parser/classes/Parser.md +0 -74
  316. package/docs/core/ref/README.md +0 -15
  317. package/docs/core/ref/classes/Ref.md +0 -149
  318. package/docs/core/ref/type-aliases/RefUpdateCallback.md +0 -33
  319. package/docs/core/serializer/README.md +0 -11
  320. package/docs/core/serializer/classes/PdfTokenSerializer.md +0 -106
  321. package/docs/core/streams/object-stream/README.md +0 -11
  322. package/docs/core/streams/object-stream/classes/PdfObjectStream.md +0 -69
  323. package/docs/core/tokeniser/README.md +0 -21
  324. package/docs/core/tokeniser/classes/PdfByteStreamTokeniser.md +0 -366
  325. package/docs/core/tokeniser/classes/PdfObjectTokeniser.md +0 -69
  326. package/docs/core/tokeniser/functions/objectToTokens.md +0 -25
  327. package/docs/core/tokeniser/functions/pdfObjectStreamTokeniser.md +0 -27
  328. package/docs/core/tokeniser/type-aliases/PdfTokeniser.md +0 -11
  329. package/docs/core/tokens/boolean-token/README.md +0 -11
  330. package/docs/core/tokens/boolean-token/classes/PdfBooleanToken.md +0 -139
  331. package/docs/core/tokens/byte-offset-token/README.md +0 -11
  332. package/docs/core/tokens/byte-offset-token/classes/PdfByteOffsetToken.md +0 -153
  333. package/docs/core/tokens/comment-token/README.md +0 -11
  334. package/docs/core/tokens/comment-token/classes/PdfCommentToken.md +0 -161
  335. package/docs/core/tokens/end-array-token/README.md +0 -11
  336. package/docs/core/tokens/end-array-token/classes/PdfEndArrayToken.md +0 -115
  337. package/docs/core/tokens/end-dictionary-token/README.md +0 -11
  338. package/docs/core/tokens/end-dictionary-token/classes/PdfEndDictionaryToken.md +0 -115
  339. package/docs/core/tokens/end-object-token/README.md +0 -11
  340. package/docs/core/tokens/end-object-token/classes/PdfEndObjectToken.md +0 -115
  341. package/docs/core/tokens/end-stream-token/README.md +0 -11
  342. package/docs/core/tokens/end-stream-token/classes/PdfEndStreamToken.md +0 -121
  343. package/docs/core/tokens/hexadecimal-token/README.md +0 -11
  344. package/docs/core/tokens/hexadecimal-token/classes/PdfHexadecimalToken.md +0 -127
  345. package/docs/core/tokens/name-token/README.md +0 -11
  346. package/docs/core/tokens/name-token/classes/PdfNameToken.md +0 -127
  347. package/docs/core/tokens/null-token/README.md +0 -11
  348. package/docs/core/tokens/null-token/classes/PdfNullToken.md +0 -115
  349. package/docs/core/tokens/number-token/README.md +0 -11
  350. package/docs/core/tokens/number-token/classes/PdfNumberToken.md +0 -271
  351. package/docs/core/tokens/object-reference-token/README.md +0 -11
  352. package/docs/core/tokens/object-reference-token/classes/PdfObjectReferenceToken.md +0 -137
  353. package/docs/core/tokens/start-array-token/README.md +0 -11
  354. package/docs/core/tokens/start-array-token/classes/PdfStartArrayToken.md +0 -115
  355. package/docs/core/tokens/start-dictionary-token/README.md +0 -11
  356. package/docs/core/tokens/start-dictionary-token/classes/PdfStartDictionaryToken.md +0 -115
  357. package/docs/core/tokens/start-object-token/README.md +0 -11
  358. package/docs/core/tokens/start-object-token/classes/PdfStartObjectToken.md +0 -147
  359. package/docs/core/tokens/start-stream-token/README.md +0 -11
  360. package/docs/core/tokens/start-stream-token/classes/PdfStartStreamToken.md +0 -147
  361. package/docs/core/tokens/start-xref-token/README.md +0 -11
  362. package/docs/core/tokens/start-xref-token/classes/PdfStartXRefToken.md +0 -115
  363. package/docs/core/tokens/stream-chunk-token/README.md +0 -11
  364. package/docs/core/tokens/stream-chunk-token/classes/PdfStreamChunkToken.md +0 -121
  365. package/docs/core/tokens/string-token/README.md +0 -11
  366. package/docs/core/tokens/string-token/classes/PdfStringToken.md +0 -127
  367. package/docs/core/tokens/token/README.md +0 -11
  368. package/docs/core/tokens/token/classes/PdfToken.md +0 -116
  369. package/docs/core/tokens/trailer-token/README.md +0 -11
  370. package/docs/core/tokens/trailer-token/classes/PdfTrailerToken.md +0 -127
  371. package/docs/core/tokens/whitespace-token/README.md +0 -11
  372. package/docs/core/tokens/whitespace-token/classes/PdfWhitespaceToken.md +0 -161
  373. package/docs/core/tokens/xref-table-entry-token/README.md +0 -11
  374. package/docs/core/tokens/xref-table-entry-token/classes/PdfXRefTableEntryToken.md +0 -157
  375. package/docs/core/tokens/xref-table-section-start-token/README.md +0 -11
  376. package/docs/core/tokens/xref-table-section-start-token/classes/PdfXRefTableSectionStartToken.md +0 -137
  377. package/docs/core/tokens/xref-table-start-token/README.md +0 -11
  378. package/docs/core/tokens/xref-table-start-token/classes/PdfXRefTableStartToken.md +0 -127
  379. package/docs/crypto/ciphers/aes128/README.md +0 -11
  380. package/docs/crypto/ciphers/aes128/functions/aes128.md +0 -39
  381. package/docs/crypto/ciphers/aes256/README.md +0 -11
  382. package/docs/crypto/ciphers/aes256/functions/aes256.md +0 -35
  383. package/docs/crypto/ciphers/rc4/README.md +0 -11
  384. package/docs/crypto/ciphers/rc4/functions/rc4.md +0 -35
  385. package/docs/crypto/constants/README.md +0 -11
  386. package/docs/crypto/constants/variables/DEFAULT_PADDING.md +0 -13
  387. package/docs/crypto/key-derivation/key-derivation/README.md +0 -13
  388. package/docs/crypto/key-derivation/key-derivation/functions/computeMasterKey.md +0 -57
  389. package/docs/crypto/key-derivation/key-derivation/functions/deriveObjectKey.md +0 -50
  390. package/docs/crypto/key-derivation/key-derivation/functions/padPassword.md +0 -33
  391. package/docs/crypto/key-derivation/key-derivation-aes256/README.md +0 -13
  392. package/docs/crypto/key-derivation/key-derivation-aes256/functions/computeAlgorithm2bHash.md +0 -45
  393. package/docs/crypto/key-derivation/key-derivation-aes256/functions/getFileKey.md +0 -66
  394. package/docs/crypto/key-derivation/key-derivation-aes256/functions/validatePasswordHash.md +0 -52
  395. package/docs/crypto/key-gen/key-gen-aes256/README.md +0 -12
  396. package/docs/crypto/key-gen/key-gen-aes256/functions/generateOandOe.md +0 -44
  397. package/docs/crypto/key-gen/key-gen-aes256/functions/generateUandUe.md +0 -38
  398. package/docs/crypto/key-gen/key-gen-rc4-128/README.md +0 -13
  399. package/docs/crypto/key-gen/key-gen-rc4-128/functions/computeOValueRc4_128.md +0 -38
  400. package/docs/crypto/key-gen/key-gen-rc4-128/functions/computeUValueRc4_128.md +0 -62
  401. package/docs/crypto/key-gen/key-gen-rc4-128/functions/decryptUserPasswordRc4_128.md +0 -38
  402. package/docs/crypto/key-gen/key-gen-rc4-40/README.md +0 -14
  403. package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeEncryptionKeyRc4_40.md +0 -49
  404. package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeORc4_40.md +0 -38
  405. package/docs/crypto/key-gen/key-gen-rc4-40/functions/computeURc4_40.md +0 -50
  406. package/docs/crypto/key-gen/key-gen-rc4-40/functions/decryptUserPasswordRc4_40.md +0 -38
  407. package/docs/crypto/types/README.md +0 -11
  408. package/docs/crypto/types/interfaces/Cipher.md +0 -39
  409. package/docs/crypto/utils/README.md +0 -13
  410. package/docs/crypto/utils/functions/int32ToLittleEndianBytes.md +0 -31
  411. package/docs/crypto/utils/functions/padPassword.md +0 -33
  412. package/docs/crypto/utils/functions/removePdfPasswordPadding.md +0 -32
  413. package/docs/filters/ascii85/README.md +0 -11
  414. package/docs/filters/ascii85/functions/ascii85.md +0 -27
  415. package/docs/filters/asciihex/README.md +0 -11
  416. package/docs/filters/asciihex/functions/asciiHex.md +0 -27
  417. package/docs/filters/flate/README.md +0 -11
  418. package/docs/filters/flate/functions/flate.md +0 -26
  419. package/docs/filters/lzw/README.md +0 -11
  420. package/docs/filters/lzw/functions/lzw.md +0 -27
  421. package/docs/filters/pass-through/README.md +0 -11
  422. package/docs/filters/pass-through/functions/passthroughFilter.md +0 -25
  423. package/docs/filters/runlength/README.md +0 -11
  424. package/docs/filters/runlength/functions/runLength.md +0 -27
  425. package/docs/filters/types/README.md +0 -19
  426. package/docs/filters/types/interfaces/PdfFilter.md +0 -39
  427. package/docs/filters/types/type-aliases/PdfStreamFilterType.md +0 -9
  428. package/docs/filters/types/variables/PDF_FILTER_TYPES.md +0 -51
  429. package/docs/index/README.md +0 -235
  430. package/docs/pdf/README.md +0 -31
  431. package/docs/pdf/errors/README.md +0 -11
  432. package/docs/pdf/errors/classes/FoundCompressedObjectError.md +0 -56
  433. package/docs/pdf/pdf-document/README.md +0 -11
  434. package/docs/pdf/pdf-document/classes/PdfDocument.md +0 -876
  435. package/docs/pdf/pdf-reader/README.md +0 -11
  436. package/docs/pdf/pdf-reader/classes/PdfReader.md +0 -82
  437. package/docs/pdf/pdf-revision/README.md +0 -11
  438. package/docs/pdf/pdf-revision/classes/PdfRevision.md +0 -508
  439. package/docs/pdf/pdf-xref-lookup/README.md +0 -11
  440. package/docs/pdf/pdf-xref-lookup/classes/PdfXrefLookup.md +0 -421
  441. package/docs/security/crypt-filters/aesv2/README.md +0 -11
  442. package/docs/security/crypt-filters/aesv2/classes/AesV2CryptFilter.md +0 -274
  443. package/docs/security/crypt-filters/aesv3/README.md +0 -11
  444. package/docs/security/crypt-filters/aesv3/classes/AesV3CryptFilter.md +0 -275
  445. package/docs/security/crypt-filters/base/README.md +0 -15
  446. package/docs/security/crypt-filters/base/classes/PdfCryptFilter.md +0 -221
  447. package/docs/security/crypt-filters/base/type-aliases/CryptFilterOptions.md +0 -43
  448. package/docs/security/crypt-filters/identity/README.md +0 -11
  449. package/docs/security/crypt-filters/identity/classes/IdentityCryptFilter.md +0 -249
  450. package/docs/security/crypt-filters/v2/README.md +0 -11
  451. package/docs/security/crypt-filters/v2/classes/V2CryptFilter.md +0 -279
  452. package/docs/security/handlers/base/README.md +0 -17
  453. package/docs/security/handlers/base/classes/PdfSecurityHandler.md +0 -384
  454. package/docs/security/handlers/base/classes/PdfStandardSecurityHandler.md +0 -694
  455. package/docs/security/handlers/base/type-aliases/PdfSecurityHandlerOptions.md +0 -27
  456. package/docs/security/handlers/base/type-aliases/PdfStandardSecurityHandlerOptions.md +0 -43
  457. package/docs/security/handlers/pubSec/README.md +0 -11
  458. package/docs/security/handlers/pubSec/classes/PdfPublicKeySecurityHandler.md +0 -503
  459. package/docs/security/handlers/utils/README.md +0 -14
  460. package/docs/security/handlers/utils/functions/createFromDictionary.md +0 -56
  461. package/docs/security/handlers/utils/functions/createFromEncryptionOptions.md +0 -40
  462. package/docs/security/handlers/utils/functions/createStandardSecurityHandlerFromDictionary.md +0 -55
  463. package/docs/security/handlers/utils/functions/getCryptFilter.md +0 -35
  464. package/docs/security/handlers/v1/README.md +0 -11
  465. package/docs/security/handlers/v1/classes/PdfV1SecurityHandler.md +0 -779
  466. package/docs/security/handlers/v2/README.md +0 -11
  467. package/docs/security/handlers/v2/classes/PdfV2SecurityHandler.md +0 -783
  468. package/docs/security/handlers/v4/README.md +0 -11
  469. package/docs/security/handlers/v4/classes/PdfV4SecurityHandler.md +0 -907
  470. package/docs/security/handlers/v5/README.md +0 -11
  471. package/docs/security/handlers/v5/classes/PdfV5SecurityHandler.md +0 -926
  472. package/docs/security/types/README.md +0 -19
  473. package/docs/security/types/type-aliases/CryptFilterType.md +0 -15
  474. package/docs/security/types/type-aliases/PdfCryptFilterDictionary.md +0 -12
  475. package/docs/security/types/type-aliases/PdfEncryptionAlgorithmOptions.md +0 -11
  476. package/docs/security/types/type-aliases/PdfEncryptionAlgorithmType.md +0 -17
  477. package/docs/security/types/type-aliases/PdfEncryptionDictionary.md +0 -13
  478. package/docs/security/types/type-aliases/PdfEncryptionDictionaryObject.md +0 -11
  479. package/docs/security/types/type-aliases/PdfEncryptionOptions.md +0 -90
  480. package/docs/security/types/type-aliases/PdfEncryptionRecipient.md +0 -24
  481. package/docs/security/types/type-aliases/PdfId.md +0 -13
  482. package/docs/signing/README.md +0 -127
  483. package/docs/signing/document-security-store/README.md +0 -19
  484. package/docs/signing/document-security-store/classes/PdfCertObject.md +0 -443
  485. package/docs/signing/document-security-store/classes/PdfCrlObject.md +0 -443
  486. package/docs/signing/document-security-store/classes/PdfDocumentSecurityStoreDictionary.md +0 -416
  487. package/docs/signing/document-security-store/classes/PdfDocumentSecurityStoreObject.md +0 -563
  488. package/docs/signing/document-security-store/classes/PdfOcspObject.md +0 -443
  489. package/docs/signing/document-security-store/type-aliases/PdfVriObject.md +0 -12
  490. package/docs/signing/signatures/README.md +0 -55
  491. package/docs/signing/signatures/adbe-pkcs7-detached/README.md +0 -11
  492. package/docs/signing/signatures/adbe-pkcs7-detached/classes/PdfAdbePkcs7DetachedSignatureObject.md +0 -669
  493. package/docs/signing/signatures/adbe-pkcs7-sha1/README.md +0 -11
  494. package/docs/signing/signatures/adbe-pkcs7-sha1/classes/PdfAdbePkcs7Sha1SignatureObject.md +0 -667
  495. package/docs/signing/signatures/adbe-x509-rsa-sha1/README.md +0 -11
  496. package/docs/signing/signatures/adbe-x509-rsa-sha1/classes/PdfAdbePkcsX509RsaSha1SignatureObject.md +0 -651
  497. package/docs/signing/signatures/base/README.md +0 -16
  498. package/docs/signing/signatures/base/classes/PdfSignatureDictionary.md +0 -420
  499. package/docs/signing/signatures/base/classes/PdfSignatureObject.md +0 -584
  500. package/docs/signing/signatures/base/type-aliases/PdfSignatureSignOptions.md +0 -51
  501. package/docs/signing/signatures/etsi-cades-detached/README.md +0 -11
  502. package/docs/signing/signatures/etsi-cades-detached/classes/PdfEtsiCadesDetachedSignatureObject.md +0 -693
  503. package/docs/signing/signatures/etsi-rfc3161/README.md +0 -11
  504. package/docs/signing/signatures/etsi-rfc3161/classes/PdfEtsiRfc3161SignatureObject.md +0 -614
  505. package/docs/signing/signer/README.md +0 -11
  506. package/docs/signing/signer/classes/PdfSigner.md +0 -58
  507. package/docs/signing/types/README.md +0 -16
  508. package/docs/signing/types/type-aliases/PdfSignatureDictionaryEntries.md +0 -95
  509. package/docs/signing/types/type-aliases/PdfSignatureSubType.md +0 -17
  510. package/docs/signing/types/type-aliases/PdfSignatureType.md +0 -14
  511. package/docs/signing/types/type-aliases/RevocationInfo.md +0 -43
  512. package/docs/signing/types/type-aliases/SignaturePolicyDocument.md +0 -35
  513. package/docs/signing/types/type-aliases/TimeStampAuthority.md +0 -35
  514. package/docs/signing/utils/README.md +0 -11
  515. package/docs/signing/utils/functions/fetchRevocationInfo.md +0 -70
  516. package/docs/types/README.md +0 -21
  517. package/docs/types/type-aliases/ByteArray.md +0 -9
  518. package/docs/types/type-aliases/ChangeType.md +0 -9
  519. package/docs/types/type-aliases/DecodeParms.md +0 -33
  520. package/docs/types/type-aliases/HashAlgorithm.md +0 -9
  521. package/docs/types/type-aliases/PdfEncryptionAlgorithm.md +0 -9
  522. package/docs/types/type-aliases/PdfPermissions.md +0 -63
  523. package/docs/types/type-aliases/PdfVersion.md +0 -9
  524. package/docs/types/variables/PERMISSION_FLAGS.md +0 -9
  525. package/docs/utils/IterableReadableStream/README.md +0 -11
  526. package/docs/utils/IterableReadableStream/classes/IterableReadableStream.md +0 -103
  527. package/docs/utils/algos/README.md +0 -28
  528. package/docs/utils/algos/functions/aes128CbcNoPaddingEncrypt.md +0 -43
  529. package/docs/utils/algos/functions/aes128cbcDecrypt.md +0 -47
  530. package/docs/utils/algos/functions/aes128cbcEncrypt.md +0 -47
  531. package/docs/utils/algos/functions/aes256CbcNoPaddingDecrypt.md +0 -43
  532. package/docs/utils/algos/functions/aes256CbcNoPaddingEncrypt.md +0 -43
  533. package/docs/utils/algos/functions/aes256cbcDecrypt.md +0 -43
  534. package/docs/utils/algos/functions/aes256cbcEncrypt.md +0 -43
  535. package/docs/utils/algos/functions/aes256ecbDecrypt.md +0 -41
  536. package/docs/utils/algos/functions/aes256ecbEncrypt.md +0 -41
  537. package/docs/utils/algos/functions/deflateData.md +0 -31
  538. package/docs/utils/algos/functions/getRandomBytes.md +0 -35
  539. package/docs/utils/algos/functions/hash.md +0 -41
  540. package/docs/utils/algos/functions/inflateData.md +0 -35
  541. package/docs/utils/algos/functions/md5.md +0 -31
  542. package/docs/utils/algos/functions/sha1.md +0 -31
  543. package/docs/utils/algos/functions/sha256.md +0 -31
  544. package/docs/utils/algos/functions/sha384.md +0 -31
  545. package/docs/utils/algos/functions/sha512.md +0 -31
  546. package/docs/utils/assert/README.md +0 -12
  547. package/docs/utils/assert/functions/assert.md +0 -39
  548. package/docs/utils/assert/functions/assertIfDefined.md +0 -46
  549. package/docs/utils/bytesToHex/README.md +0 -11
  550. package/docs/utils/bytesToHex/functions/bytesToHex.md +0 -31
  551. package/docs/utils/bytesToHexBytes/README.md +0 -11
  552. package/docs/utils/bytesToHexBytes/functions/bytesToHexBytes.md +0 -32
  553. package/docs/utils/bytesToString/README.md +0 -11
  554. package/docs/utils/bytesToString/functions/bytesToString.md +0 -31
  555. package/docs/utils/concatUint8Arrays/README.md +0 -11
  556. package/docs/utils/concatUint8Arrays/functions/concatUint8Arrays.md +0 -31
  557. package/docs/utils/escapeString/README.md +0 -11
  558. package/docs/utils/escapeString/functions/escapeString.md +0 -32
  559. package/docs/utils/hexBytesToBytes/README.md +0 -11
  560. package/docs/utils/hexBytesToBytes/functions/hexBytesToBytes.md +0 -33
  561. package/docs/utils/hexBytesToString/README.md +0 -11
  562. package/docs/utils/hexBytesToString/functions/hexBytesToString.md +0 -31
  563. package/docs/utils/hexToBytes/README.md +0 -11
  564. package/docs/utils/hexToBytes/functions/hexToBytes.md +0 -31
  565. package/docs/utils/padBytes/README.md +0 -11
  566. package/docs/utils/padBytes/functions/padBytes.md +0 -41
  567. package/docs/utils/predictors/README.md +0 -11
  568. package/docs/utils/predictors/classes/Predictor.md +0 -306
  569. package/docs/utils/replaceInBuffer/README.md +0 -11
  570. package/docs/utils/replaceInBuffer/functions/replaceInBuffer.md +0 -65
  571. package/docs/utils/stringToBytes/README.md +0 -11
  572. package/docs/utils/stringToBytes/functions/stringToBytes.md +0 -32
  573. package/docs/utils/stringToHexBytes/README.md +0 -11
  574. package/docs/utils/stringToHexBytes/functions/stringToHexBytes.md +0 -33
  575. package/docs/utils/unescapeString/README.md +0 -11
  576. package/docs/utils/unescapeString/functions/unescapeString.md +0 -34
  577. package/examples/001-create-pdf.ts +0 -112
  578. package/examples/002-create-encrypted-pdf.ts +0 -121
  579. package/examples/003-sign-pdf.ts +0 -347
  580. package/examples/004-incremental-update.ts +0 -206
  581. package/examples/005-modify-acroform.ts +0 -374
  582. package/examples/006-tokeniser-example.ts +0 -131
  583. package/examples/007-decoder-example.ts +0 -197
  584. package/packages/pdf-lite/README.md +0 -3
  585. package/packages/pdf-lite/node_modules/.bin/playwright +0 -16
  586. package/packages/pdf-lite/node_modules/.bin/tsc +0 -16
  587. package/packages/pdf-lite/node_modules/.bin/tsserver +0 -16
  588. package/packages/pdf-lite/node_modules/.bin/vitest +0 -16
  589. package/packages/pdf-lite/package.json +0 -68
  590. package/packages/pdf-lite/scripts/create-encryption-tests.sh +0 -41
  591. package/packages/pdf-lite/scripts/gen-signing-keys.sh +0 -290
  592. package/packages/pdf-lite/scripts/generate-all-signing-keys.sh +0 -70
  593. package/packages/pdf-lite/src/core/decoder.ts +0 -454
  594. package/packages/pdf-lite/src/core/index.ts +0 -2
  595. package/packages/pdf-lite/src/core/objects/pdf-array.ts +0 -54
  596. package/packages/pdf-lite/src/core/objects/pdf-boolean.ts +0 -19
  597. package/packages/pdf-lite/src/core/objects/pdf-comment.ts +0 -50
  598. package/packages/pdf-lite/src/core/objects/pdf-date.ts +0 -74
  599. package/packages/pdf-lite/src/core/objects/pdf-dictionary.ts +0 -171
  600. package/packages/pdf-lite/src/core/objects/pdf-hexadecimal.ts +0 -54
  601. package/packages/pdf-lite/src/core/objects/pdf-indirect-object.ts +0 -137
  602. package/packages/pdf-lite/src/core/objects/pdf-name.ts +0 -19
  603. package/packages/pdf-lite/src/core/objects/pdf-null.ts +0 -15
  604. package/packages/pdf-lite/src/core/objects/pdf-number.ts +0 -98
  605. package/packages/pdf-lite/src/core/objects/pdf-object-reference.ts +0 -30
  606. package/packages/pdf-lite/src/core/objects/pdf-object.ts +0 -107
  607. package/packages/pdf-lite/src/core/objects/pdf-start-xref.ts +0 -39
  608. package/packages/pdf-lite/src/core/objects/pdf-stream.ts +0 -687
  609. package/packages/pdf-lite/src/core/objects/pdf-string.ts +0 -38
  610. package/packages/pdf-lite/src/core/objects/pdf-trailer.ts +0 -57
  611. package/packages/pdf-lite/src/core/objects/pdf-xref-table.ts +0 -264
  612. package/packages/pdf-lite/src/core/streams/object-stream.ts +0 -20
  613. package/packages/pdf-lite/src/core/tokeniser.ts +0 -687
  614. package/packages/pdf-lite/src/core/tokens/boolean-token.ts +0 -20
  615. package/packages/pdf-lite/src/core/tokens/byte-offset-token.ts +0 -20
  616. package/packages/pdf-lite/src/core/tokens/comment-token.ts +0 -32
  617. package/packages/pdf-lite/src/core/tokens/end-array-token.ts +0 -10
  618. package/packages/pdf-lite/src/core/tokens/end-dictionary-token.ts +0 -10
  619. package/packages/pdf-lite/src/core/tokens/end-object-token.ts +0 -10
  620. package/packages/pdf-lite/src/core/tokens/end-stream-token.ts +0 -11
  621. package/packages/pdf-lite/src/core/tokens/hexadecimal-token.ts +0 -22
  622. package/packages/pdf-lite/src/core/tokens/name-token.ts +0 -19
  623. package/packages/pdf-lite/src/core/tokens/null-token.ts +0 -9
  624. package/packages/pdf-lite/src/core/tokens/number-token.ts +0 -164
  625. package/packages/pdf-lite/src/core/tokens/object-reference-token.ts +0 -24
  626. package/packages/pdf-lite/src/core/tokens/start-array-token.ts +0 -10
  627. package/packages/pdf-lite/src/core/tokens/start-dictionary-token.ts +0 -10
  628. package/packages/pdf-lite/src/core/tokens/start-object-token.ts +0 -28
  629. package/packages/pdf-lite/src/core/tokens/start-stream-token.ts +0 -52
  630. package/packages/pdf-lite/src/core/tokens/start-xref-token.ts +0 -10
  631. package/packages/pdf-lite/src/core/tokens/stream-chunk-token.ts +0 -8
  632. package/packages/pdf-lite/src/core/tokens/string-token.ts +0 -17
  633. package/packages/pdf-lite/src/core/tokens/token.ts +0 -43
  634. package/packages/pdf-lite/src/core/tokens/trailer-token.ts +0 -12
  635. package/packages/pdf-lite/src/core/tokens/whitespace-token.ts +0 -43
  636. package/packages/pdf-lite/src/core/tokens/xref-table-entry-token.ts +0 -65
  637. package/packages/pdf-lite/src/core/tokens/xref-table-section-start-token.ts +0 -31
  638. package/packages/pdf-lite/src/core/tokens/xref-table-start-token.ts +0 -13
  639. package/packages/pdf-lite/src/crypto/key-derivation/key-derivation-aes256.ts +0 -213
  640. package/packages/pdf-lite/src/crypto/types.ts +0 -6
  641. package/packages/pdf-lite/src/filters/lzw.ts +0 -144
  642. package/packages/pdf-lite/src/index.ts +0 -4
  643. package/packages/pdf-lite/src/pdf/index.ts +0 -4
  644. package/packages/pdf-lite/src/pdf/pdf-xref-lookup.ts +0 -527
  645. package/packages/pdf-lite/src/security/handlers/base.ts +0 -625
  646. package/packages/pdf-lite/src/security/handlers/pubSec.ts +0 -413
  647. package/packages/pdf-lite/src/security/handlers/utils.ts +0 -304
  648. package/packages/pdf-lite/src/security/handlers/v1.ts +0 -225
  649. package/packages/pdf-lite/src/security/handlers/v4.ts +0 -379
  650. package/packages/pdf-lite/src/security/handlers/v5.ts +0 -298
  651. package/packages/pdf-lite/src/signing/document-security-store.ts +0 -224
  652. package/packages/pdf-lite/src/signing/index.ts +0 -3
  653. package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-detached.ts +0 -154
  654. package/packages/pdf-lite/src/signing/signatures/adbe-pkcs7-sha1.ts +0 -161
  655. package/packages/pdf-lite/src/signing/signatures/adbe-x509-rsa-sha1.ts +0 -106
  656. package/packages/pdf-lite/src/signing/signatures/base.ts +0 -229
  657. package/packages/pdf-lite/src/signing/signatures/etsi-cades-detached.ts +0 -229
  658. package/packages/pdf-lite/src/signing/signatures/index.ts +0 -6
  659. package/packages/pdf-lite/src/signing/signer.ts +0 -120
  660. package/packages/pdf-lite/src/types.ts +0 -44
  661. package/packages/pdf-lite/src/utils/escapeString.ts +0 -49
  662. package/packages/pdf-lite/src/utils/unescapeString.ts +0 -123
  663. package/packages/pdf-lite/test/acceptance/__snapshots__/versions.node.test.ts.snap +0 -60766
  664. package/packages/pdf-lite/test/acceptance/fixtures/1.3/basic.pdf +0 -0
  665. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-128.pdf +0 -0
  666. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-aes-256.pdf +0 -0
  667. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-128.pdf +0 -0
  668. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic-rc4-40.pdf +0 -0
  669. package/packages/pdf-lite/test/acceptance/fixtures/1.4/basic.pdf +0 -0
  670. package/packages/pdf-lite/test/acceptance/fixtures/1.5/basic.pdf +0 -0
  671. package/packages/pdf-lite/test/acceptance/fixtures/1.6/basic.pdf +0 -0
  672. package/packages/pdf-lite/test/acceptance/fixtures/1.7/basic.pdf +0 -0
  673. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-128.pdf +0 -43
  674. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-aes-256.pdf +0 -43
  675. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-128.pdf +0 -43
  676. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic-rc4-40.pdf +0 -44
  677. package/packages/pdf-lite/test/acceptance/fixtures/2.0/basic.pdf +0 -79
  678. package/packages/pdf-lite/test/acceptance/versions.node.test.ts +0 -41
  679. package/packages/pdf-lite/test/unit/__snapshots__/decoder.node.test.ts.snap +0 -86947
  680. package/packages/pdf-lite/test/unit/__snapshots__/tokeniser.node.test.ts.snap +0 -131829
  681. package/packages/pdf-lite/test/unit/ciphers.test.ts +0 -61
  682. package/packages/pdf-lite/test/unit/decoder.node.test.ts +0 -21
  683. package/packages/pdf-lite/test/unit/decoder.test.ts +0 -567
  684. package/packages/pdf-lite/test/unit/filters.test.ts +0 -67
  685. package/packages/pdf-lite/test/unit/fixtures/basic.pdf +0 -0
  686. package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-128.pdf +0 -0
  687. package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-aes-256.pdf +0 -0
  688. package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-128.pdf +0 -0
  689. package/packages/pdf-lite/test/unit/fixtures/encrypted_v1/basic-rc4-40.pdf +0 -43
  690. package/packages/pdf-lite/test/unit/fixtures/protectedAdobeLivecycle.pdf +0 -0
  691. package/packages/pdf-lite/test/unit/fixtures/rsa-2048/index.ts +0 -187
  692. package/packages/pdf-lite/test/unit/fixtures/template.pdf +0 -0
  693. package/packages/pdf-lite/test/unit/incremental-update.test.ts +0 -0
  694. package/packages/pdf-lite/test/unit/objects.test.ts +0 -0
  695. package/packages/pdf-lite/test/unit/pdf-document-signing.test.ts +0 -0
  696. package/packages/pdf-lite/test/unit/pdf-revision.test.ts +0 -195
  697. package/packages/pdf-lite/test/unit/pdf.browser.test.ts +0 -0
  698. package/packages/pdf-lite/test/unit/predictors.test.ts +0 -226
  699. package/packages/pdf-lite/test/unit/ref.test.ts +0 -158
  700. package/packages/pdf-lite/test/unit/security-handlers.test.ts +0 -645
  701. package/packages/pdf-lite/test/unit/serializer.test.ts +0 -81
  702. package/packages/pdf-lite/test/unit/signature-objects.test.ts +0 -814
  703. package/packages/pdf-lite/test/unit/string-escaping.test.ts +0 -84
  704. package/packages/pdf-lite/test/unit/tokeniser.node.test.ts +0 -38
  705. package/packages/pdf-lite/test/unit/tokeniser.test.ts +0 -1213
  706. package/packages/pdf-lite/test/unit/utils.test.ts +0 -248
  707. package/packages/pdf-lite/test/unit/xref-lookup.test.ts +0 -72
  708. package/packages/pdf-lite/tsconfig.json +0 -4
  709. package/packages/pdf-lite/tsconfig.prod.json +0 -8
  710. package/packages/pdf-lite/typedoc.json +0 -14
  711. package/packages/pdf-lite/vitest.config.ts +0 -43
  712. package/pnpm-workspace.yaml +0 -2
  713. package/renovate.json +0 -34
  714. package/scripts/build-examples.ts +0 -30
  715. package/scripts/bump-version.sh +0 -56
  716. package/scripts/gen-html-docs.sh +0 -21
  717. package/scripts/gen-md-docs.sh +0 -15
  718. package/scripts/prepare-release.sh +0 -33
  719. package/tsconfig.json +0 -22
  720. package/tsconfig.prod.json +0 -12
  721. package/typedoc.json +0 -34
@@ -1,814 +0,0 @@
1
- import {
2
- describe,
3
- it,
4
- expect,
5
- vi,
6
- beforeEach,
7
- afterEach,
8
- beforeAll,
9
- } from 'vitest'
10
- import {
11
- PdfSignatureDictionary,
12
- PdfSignatureObject,
13
- } from '../../src/signing/signatures/base'
14
- import { PdfAdbePkcs7DetachedSignatureObject } from '../../src/signing/signatures/adbe-pkcs7-detached'
15
- import { PdfAdbePkcs7Sha1SignatureObject } from '../../src/signing/signatures/adbe-pkcs7-sha1'
16
- import { PdfAdbePkcsX509RsaSha1SignatureObject } from '../../src/signing/signatures/adbe-x509-rsa-sha1'
17
- import { PdfEtsiCadesDetachedSignatureObject } from '../../src/signing/signatures/etsi-cades-detached'
18
- import { PdfEtsiRfc3161SignatureObject } from '../../src/signing/signatures/etsi-rfc3161'
19
- import { PdfName } from '../../src/core/objects/pdf-name'
20
- import { PdfString } from '../../src/core/objects/pdf-string'
21
- import { PdfDate } from '../../src/core/objects/pdf-date'
22
- import { PdfArray } from '../../src/core/objects/pdf-array'
23
- import { PdfNumber } from '../../src/core/objects/pdf-number'
24
- import { PdfHexadecimal } from '../../src/core/objects/pdf-hexadecimal'
25
- import { rsaSigningKeys } from './fixtures/rsa-2048'
26
- import { stringToBytes } from '../../src/utils/stringToBytes'
27
- import { SignedData } from 'pki-lite/pkcs7/SignedData'
28
- import { RevocationInfoArchival } from 'pki-lite/adobe/RevocationInfoArchival'
29
- import { OIDs } from 'pki-lite/core/OIDs'
30
- import { bytesToHex } from '../../src/utils/bytesToHex'
31
-
32
- describe('PdfSignatureDictionary', () => {
33
- it('should create a signature dictionary with required fields', () => {
34
- const dict = new PdfSignatureDictionary({
35
- Type: new PdfName('Sig'),
36
- Filter: new PdfName('Adobe.PPKLite'),
37
- SubFilter: new PdfName('adbe.pkcs7.detached'),
38
- })
39
-
40
- expect(dict.get('Type')).toBeInstanceOf(PdfName)
41
- expect(dict.get('Type')?.toString()).toBe('/Sig')
42
- expect(dict.get('Filter')).toBeInstanceOf(PdfName)
43
- expect(dict.get('Filter')?.toString()).toBe('/Adobe.PPKLite')
44
- expect(dict.get('SubFilter')).toBeInstanceOf(PdfName)
45
- expect(dict.get('SubFilter')?.toString()).toBe('/adbe.pkcs7.detached')
46
- })
47
-
48
- it('should automatically add ByteRange placeholder', () => {
49
- const dict = new PdfSignatureDictionary({
50
- Type: new PdfName('Sig'),
51
- Filter: new PdfName('Adobe.PPKLite'),
52
- SubFilter: new PdfName('adbe.pkcs7.detached'),
53
- })
54
-
55
- const byteRange = dict.get('ByteRange')
56
- expect(byteRange).toBeInstanceOf(PdfArray)
57
- expect(byteRange?.items.length).toBe(4)
58
- expect(byteRange?.items[0]).toBeInstanceOf(PdfNumber)
59
- })
60
-
61
- it('should automatically add Contents placeholder', () => {
62
- const dict = new PdfSignatureDictionary({
63
- Type: new PdfName('Sig'),
64
- Filter: new PdfName('Adobe.PPKLite'),
65
- SubFilter: new PdfName('adbe.pkcs7.detached'),
66
- })
67
-
68
- const contents = dict.get('Contents')
69
- expect(contents).toBeInstanceOf(PdfHexadecimal)
70
- expect((contents as PdfHexadecimal).bytes.length).toBeGreaterThan(0)
71
- })
72
-
73
- it('should accept optional metadata fields', () => {
74
- const testDate = new Date('2024-01-01T12:00:00Z')
75
- const dict = new PdfSignatureDictionary({
76
- Type: new PdfName('Sig'),
77
- Filter: new PdfName('Adobe.PPKLite'),
78
- SubFilter: new PdfName('adbe.pkcs7.detached'),
79
- Name: new PdfString('John Doe'),
80
- Reason: new PdfString('I approve this document'),
81
- Location: new PdfString('New York'),
82
- ContactInfo: new PdfString('john@example.com'),
83
- M: new PdfDate(testDate),
84
- })
85
-
86
- expect(dict.get('Name')?.toString()).toContain('John Doe')
87
- expect(dict.get('Reason')?.toString()).toContain(
88
- 'I approve this document',
89
- )
90
- expect(dict.get('Location')?.toString()).toContain('New York')
91
- expect(dict.get('ContactInfo')?.toString()).toContain(
92
- 'john@example.com',
93
- )
94
- expect(dict.get('M')).toBeInstanceOf(PdfDate)
95
- })
96
- })
97
-
98
- describe('PdfSignatureObject', () => {
99
- class TestSignatureObject extends PdfSignatureObject {
100
- async sign() {
101
- return {
102
- signedBytes: stringToBytes('test-signature'),
103
- }
104
- }
105
- }
106
-
107
- it('should set signed bytes correctly', async () => {
108
- const sigObj = new TestSignatureObject(
109
- new PdfSignatureDictionary({
110
- Type: new PdfName('Sig'),
111
- Filter: new PdfName('Adobe.PPKLite'),
112
- SubFilter: new PdfName('adbe.pkcs7.detached'),
113
- }),
114
- )
115
-
116
- const testSignature = stringToBytes('test-signature-data')
117
- sigObj.setSignedBytes(testSignature)
118
-
119
- const contents = sigObj.content.get('Contents') as PdfHexadecimal
120
- expect(contents).toBeInstanceOf(PdfHexadecimal)
121
- // Signature should be padded to match placeholder length
122
- expect(contents.bytes.length).toBeGreaterThanOrEqual(
123
- testSignature.length,
124
- )
125
- })
126
-
127
- it('should set byte range correctly', () => {
128
- const sigObj = new TestSignatureObject(
129
- new PdfSignatureDictionary({
130
- Type: new PdfName('Sig'),
131
- Filter: new PdfName('Adobe.PPKLite'),
132
- SubFilter: new PdfName('adbe.pkcs7.detached'),
133
- }),
134
- )
135
-
136
- const byteRange = [0, 1234, 5678, 9012]
137
- sigObj.setByteRange(byteRange)
138
-
139
- const byteRangeObj = sigObj.content.get('ByteRange') as PdfArray
140
- expect(byteRangeObj).toBeInstanceOf(PdfArray)
141
- expect(byteRangeObj.items.length).toBe(4)
142
- expect((byteRangeObj.items[0] as PdfNumber).value).toBe(0)
143
- expect((byteRangeObj.items[1] as PdfNumber).value).toBe(1234)
144
- expect((byteRangeObj.items[2] as PdfNumber).value).toBe(5678)
145
- expect((byteRangeObj.items[3] as PdfNumber).value).toBe(9012)
146
- })
147
-
148
- it('should throw error when setting signed bytes without Contents', () => {
149
- const sigObj = new TestSignatureObject(
150
- new PdfSignatureDictionary({
151
- Type: new PdfName('Sig'),
152
- Filter: new PdfName('Adobe.PPKLite'),
153
- SubFilter: new PdfName('adbe.pkcs7.detached'),
154
- }),
155
- )
156
-
157
- // Remove Contents to trigger error
158
- sigObj.content.delete('Contents')
159
-
160
- expect(() => {
161
- sigObj.setSignedBytes(stringToBytes('test'))
162
- }).toThrow('Signature dictionary is missing Contents entry')
163
- })
164
-
165
- it('should throw error when setting byte range without ByteRange', () => {
166
- const sigObj = new TestSignatureObject(
167
- new PdfSignatureDictionary({
168
- Type: new PdfName('Sig'),
169
- Filter: new PdfName('Adobe.PPKLite'),
170
- SubFilter: new PdfName('adbe.pkcs7.detached'),
171
- }),
172
- )
173
-
174
- // Remove ByteRange to trigger error
175
- sigObj.content.delete('ByteRange')
176
-
177
- expect(() => {
178
- sigObj.setByteRange([0, 100, 200, 300])
179
- }).toThrow('Signature dictionary is missing ByteRange entry')
180
- })
181
- })
182
-
183
- describe('PdfAdbePkcs7DetachedSignatureObject', () => {
184
- beforeAll(() => {
185
- vi.stubGlobal('fetch', vi.fn(fetch))
186
- })
187
-
188
- it('should create Adobe PKCS7 signature with required properties', () => {
189
- const sigObj = new PdfAdbePkcs7DetachedSignatureObject({
190
- privateKey: rsaSigningKeys.privateKey,
191
- certificate: rsaSigningKeys.cert,
192
- })
193
-
194
- expect(sigObj.content.get('Filter')?.toString()).toBe('/Adobe.PPKLite')
195
- expect(sigObj.content.get('SubFilter')?.toString()).toBe(
196
- '/adbe.pkcs7.detached',
197
- )
198
- expect(sigObj.content.get('Type')?.toString()).toBe('/Sig')
199
- })
200
-
201
- it('should include optional metadata in signature dictionary', () => {
202
- const testDate = new Date('2024-01-01T12:00:00Z')
203
- const sigObj = new PdfAdbePkcs7DetachedSignatureObject({
204
- privateKey: rsaSigningKeys.privateKey,
205
- certificate: rsaSigningKeys.cert,
206
- name: 'Jake Shirley',
207
- reason: 'I am the author',
208
- location: 'Earth',
209
- contactInfo: 'test@test.com',
210
- date: testDate,
211
- })
212
-
213
- expect(sigObj.content.get('Name')?.toString()).toContain('Jake Shirley')
214
- expect(sigObj.content.get('Reason')?.toString()).toContain(
215
- 'I am the author',
216
- )
217
- expect(sigObj.content.get('Location')?.toString()).toContain('Earth')
218
- expect(sigObj.content.get('ContactInfo')?.toString()).toContain(
219
- 'test@test.com',
220
- )
221
- expect(sigObj.content.get('M')).toBeInstanceOf(PdfDate)
222
- })
223
-
224
- it('should accept additional certificates', async () => {
225
- const sigObj = new PdfAdbePkcs7DetachedSignatureObject({
226
- privateKey: rsaSigningKeys.privateKey,
227
- certificate: rsaSigningKeys.cert,
228
- issuerCertificate: rsaSigningKeys.caCert,
229
- additionalCertificates: [rsaSigningKeys.caCert],
230
- })
231
-
232
- const signed = await sigObj.sign({ bytes: stringToBytes('test') })
233
- const signedData = SignedData.fromCms(signed.signedBytes)
234
-
235
- expect(signedData.certificates).toHaveLength(2)
236
- expect(signedData.certificates?.[0].toDer()).toEqual(
237
- rsaSigningKeys.cert,
238
- )
239
- expect(signedData.certificates?.[1].toDer()).toEqual(
240
- rsaSigningKeys.caCert,
241
- )
242
- })
243
-
244
- it('should support revocation info configuration', async () => {
245
- const sigObj = new PdfAdbePkcs7DetachedSignatureObject({
246
- privateKey: rsaSigningKeys.privateKey,
247
- certificate: rsaSigningKeys.cert,
248
- revocationInfo: {
249
- crls: [rsaSigningKeys.caCrl],
250
- ocsps: [rsaSigningKeys.ocspResponse],
251
- otherRevInfo: [],
252
- },
253
- })
254
-
255
- const signed = await sigObj.sign({
256
- bytes: stringToBytes('test'),
257
- embedRevocationInfo: true,
258
- })
259
- const signedData = SignedData.fromCms(signed.signedBytes)
260
- const revocationInfoAttribute =
261
- signedData.signerInfos[0].signedAttrs?.find((x) =>
262
- x.type.is(OIDs.ADOBE.REVOCATION_INFO_ARCHIVAL),
263
- )
264
- const revocationInfo = revocationInfoAttribute?.values[0].parseAs(
265
- RevocationInfoArchival,
266
- )
267
-
268
- expect(revocationInfo?.crls?.[0].toDer()).toEqual(rsaSigningKeys.caCrl)
269
- expect(revocationInfo?.ocsps?.[0].toDer()).toEqual(
270
- rsaSigningKeys.ocspResponse,
271
- )
272
- })
273
-
274
- it('should support automatic revocation info fetching', async () => {
275
- const sigObj = new PdfAdbePkcs7DetachedSignatureObject({
276
- privateKey: rsaSigningKeys.privateKey,
277
- certificate: rsaSigningKeys.cert,
278
- revocationInfo: 'fetch',
279
- })
280
-
281
- await sigObj.sign({ bytes: stringToBytes('test') })
282
- expect(fetch).toHaveBeenCalledWith('http://localhost:8080/ca.crl')
283
- expect(fetch).toHaveBeenCalledWith('http://localhost:8080/ca.crt')
284
- })
285
-
286
- it('should support custom timestamp authority URL', async () => {
287
- const customTSA = {
288
- url: 'https://freetsa.org/tsr',
289
- }
290
- const sigObj = new PdfAdbePkcs7DetachedSignatureObject({
291
- privateKey: rsaSigningKeys.privateKey,
292
- certificate: rsaSigningKeys.cert,
293
- timeStampAuthority: customTSA,
294
- })
295
-
296
- const signed = await sigObj.sign({ bytes: stringToBytes('test') })
297
- const signedData = SignedData.fromCms(signed.signedBytes)
298
- const tsaAttr = signedData.signerInfos[0].unsignedAttrs?.find((attr) =>
299
- attr.type.is('1.2.840.113549.1.9.16.2.14'),
300
- )
301
- expect(tsaAttr).toBeDefined()
302
- })
303
-
304
- it('should generate valid PKCS7 signature', async () => {
305
- const sigObj = new PdfAdbePkcs7DetachedSignatureObject({
306
- privateKey: rsaSigningKeys.privateKey,
307
- certificate: rsaSigningKeys.cert,
308
- issuerCertificate: rsaSigningKeys.caCert,
309
- date: new Date('2024-01-01T12:00:00Z'),
310
- })
311
-
312
- const testData = stringToBytes('Hello, PDF!')
313
- const result = await sigObj.sign({ bytes: testData })
314
-
315
- expect(result.signedBytes).toBeInstanceOf(Uint8Array)
316
- expect(result.signedBytes.length).toBeGreaterThan(0)
317
- // PKCS7 signature should start with DER sequence tag (0x30)
318
- expect(result.signedBytes[0]).toBe(0x30)
319
- expect(bytesToHex(result.signedBytes)).toMatchInlineSnapshot(
320
- `"308207D106092A864886F70D010702A08207C2308207BE020101310D300B0609608648016503040201300B06092A864886F70D010701A082058F3082058B30820373A00302010202140AD1000D5C4FCFA5D3F51739F2FACAE3817A281A300D06092A864886F70D01010B0500305C310B3009060355040613025553310D300B06035504080C0454657374310E300C06035504070C054C6F63616C310E300C060355040A0C054D794F7267310B3009060355040B0C0243413111300F06035504030C084D79526F6F744341301E170D3235313132343137333835345A170D3236313132343137333835345A3061310B3009060355040613025553310D300B06035504080C0454657374310E300C06035504070C054C6F63616C310E300C060355040A0C054D794F72673110300E060355040B0C075369676E696E673111300F06035504030C084A6F686E20446F6530820122300D06092A864886F70D01010105000382010F003082010A028201010091E6734DB5BC6DA8AE1833DEE522762929E6354EF53FF06B1BD576AC87FA48161F52A14BE2D622505232539B5BB47E6CF09021057230E6D62076DFD26856128378AE7FE79F62E1EBCBC9C47A2BE752794844460A31E5887A19F03A6B2569EEC91E80718F18E7E5EF78DC33E100CE2ED50BC1C358F43AC93EDA3F77E78A97E0B089A917E9A36F3734E51D1C63CFB5C2504E77FC227AAE881624033468B8BE3E1F0A5C6E2D20528CAD7DAEA7E2A6EC7A4DCF846A97174827EF48D0166720A089CA20F765479C44945E91503B3F071DF3D7EE795CB04C43876D3B52872DF135116AC52621DFEAA2691ADC84960F76EAD089B591798F67D6F96DC75483B4BB5CC7930203010001A382013E3082013A30090603551D1304023000300B0603551D0F0404030206C0301D0603551D250416301406082B0601050507030406082B06010505070303302D0603551D1F042630243022A020A01E861C687474703A2F2F6C6F63616C686F73743A383038302F63612E63726C30819106082B06010505070101048184308181302806082B06010505073002861C687474703A2F2F6C6F63616C686F73743A383038302F63612E637274302606082B06010505073001861A687474703A2F2F6C6F63616C686F73743A383038302F6F637370302D06082B060105050730018621687474703A2F2F6C6F63616C686F73743A383038302F6F6373702D6261636B7570301D0603551D0E0416041478EA1C24BC756EA767DE5CF44A03051DAD58B62F301F0603551D23041830168014DC7B208D7FEA5ED9121A13C45A99C460131D070E300D06092A864886F70D01010B050003820201007E1585A5069BA843EAEC6CD15D6791AF98F02E745DAF15CEF93F69E92BE04FC2DDF096FD85C249A3026CF780877398D0A371ECF9A2E02F91FD3C75FA20B47207E3F0DE25AA2B8E444F07B237394D4DF5F98D3745EFCE5AEFF583C6A3C9EFF384EB692F6F3650483C0F7F0309AC2A9A741E75406710DA7154E501641445781E0404AA9D36EC862DA1E36B345D4B31B3E97C2DCC39C330A7FA79149D79E7E44B83646D697B0E3E017ACFAE3B202408CD4D7B9BA60CEB0019F977AD0C75C34BE24479CB4EE81ADF0ECE6FDB17C2A0B0DF04EE198602207B235AF7F782642D0B29373F48D2E593C13290880F66EF79B0877B68464B86016506BB63FEB9D611703FFD0DD239A992C77CF17A0E92DC79045B2287EF0B6CDF60C01A99B11841AA484FFE0FB8904DF223A498B90DF88B523893E997930517E644E269BA4624EB99B087D0CB1B4D30720C3466CB6771F2B6CE573B1D134EE3C7A3BF2B65166EC04214D8C65EDE29B148DFC61214CDB9DCC57D36E3B8AC97FBA1019BBDD61BE18B80E32E06C11D3DDA962B23578106C617847819C1AAC61BDC2273D061586DE08B2FA62721F563EB6C20C0C19AC21D6557514ECEC10E09E44D0C160DA5FF99724405983FE17103D5E7F9EF3C3AD49D3B7880FE26003DBC2E1E98DA255BBFC3BD75B2AEE178BFD7565924014A23372BDD04CE79B824FABDDB55338FF9B8AD9BDB1E43F3229531820208308202040201013074305C310B3009060355040613025553310D300B06035504080C0454657374310E300C06035504070C054C6F63616C310E300C060355040A0C054D794F7267310B3009060355040B0C0243413111300F06035504030C084D79526F6F74434102140AD1000D5C4FCFA5D3F51739F2FACAE3817A281A300B0609608648016503040201A069301C06092A864886F70D010905310F170D3234303130313132303030305A302F06092A864886F70D01090431220420E21FC8BC54A9E118BA076002544A1D20CA18D9E6DF08AC308D89CE63DE7D445B301806092A864886F70D010903310B06092A864886F70D010701300D06092A864886F70D01010B050004820100399254CB4C285A24EAFAB474523813F665CEC1BA920AE2FF877A468014E7A863AB6FE2057FD4320200999285926693EC1206598074FF08F8E7366973C46D749D63CC3BF484C16888CAAA66D54450F76B78A307667F2E90C2D18B283FFE36C7FDC06D561683765A8684B22E2062D535C333C655AF70E481BB49E0F06B9B20E24E54FCA7089D18059FB6A7D08DAC30B066ABC3CE9BB3A544D45EA8F0A2864506A461B89C4AB0DD14266AA00F6AE8C7FD2445D2BF74097CC831B03EF18260DFFFE429AC52A4505D8AE4B46C6D61DAAB9DEA84C5D9D95354FE6C54317637CC5919A2E5EA6BAE9A8D457BE01D5CC98E99016D9BF78C9A636D42BF1AB6EE487226AA46"`,
321
- )
322
- })
323
- })
324
-
325
- describe('PdfEtsiCadesDetachedSignatureObject', () => {
326
- it('should create ETSI CAdES signature with required properties', () => {
327
- const sigObj = new PdfEtsiCadesDetachedSignatureObject({
328
- privateKey: rsaSigningKeys.privateKey,
329
- certificate: rsaSigningKeys.cert,
330
- })
331
-
332
- expect(sigObj.content.get('Filter')?.toString()).toBe('/Adobe.PPKLite')
333
- expect(sigObj.content.get('SubFilter')?.toString()).toBe(
334
- '/ETSI.CAdES.detached',
335
- )
336
- expect(sigObj.content.get('Type')?.toString()).toBe('/Sig')
337
- })
338
-
339
- it('should include optional metadata in signature dictionary', () => {
340
- const testDate = new Date('2024-01-01T12:00:00Z')
341
- const sigObj = new PdfEtsiCadesDetachedSignatureObject({
342
- privateKey: rsaSigningKeys.privateKey,
343
- certificate: rsaSigningKeys.cert,
344
- name: 'Jake Shirley',
345
- reason: 'Approval',
346
- location: 'Earth',
347
- contactInfo: 'test@test.com',
348
- date: testDate,
349
- })
350
-
351
- expect(sigObj.content.get('Name')?.toString()).toContain('Jake Shirley')
352
- expect(sigObj.content.get('ContactInfo')?.toString()).toContain(
353
- 'test@test.com',
354
- )
355
- expect(sigObj.content.get('M')).toBeInstanceOf(PdfDate)
356
- expect(sigObj.reason).toBe('Approval')
357
- expect(sigObj.location).toBe('Earth')
358
- })
359
-
360
- it('should support signature policy document', () => {
361
- const policyDoc = {
362
- oid: '1.2.3.4.5',
363
- hash: new Uint8Array([1, 2, 3, 4]),
364
- hashAlgorithm: 'SHA-256' as const,
365
- }
366
-
367
- const sigObj = new PdfEtsiCadesDetachedSignatureObject({
368
- privateKey: rsaSigningKeys.privateKey,
369
- certificate: rsaSigningKeys.cert,
370
- policyDocument: policyDoc,
371
- })
372
-
373
- expect(sigObj.policyDocument).toEqual(policyDoc)
374
- })
375
-
376
- it('should generate valid CAdES signature', async () => {
377
- const sigObj = new PdfEtsiCadesDetachedSignatureObject({
378
- privateKey: rsaSigningKeys.privateKey,
379
- certificate: rsaSigningKeys.cert,
380
- issuerCertificate: rsaSigningKeys.caCert,
381
- date: new Date('2024-01-01T12:00:00Z'),
382
- })
383
-
384
- const testData = stringToBytes('Hello, PDF!')
385
- const result = await sigObj.sign({ bytes: testData })
386
-
387
- expect(result.signedBytes).toBeInstanceOf(Uint8Array)
388
- expect(result.signedBytes.length).toBeGreaterThan(0)
389
- // CAdES signature should start with DER sequence tag (0x30)
390
- expect(result.signedBytes[0]).toBe(0x30)
391
- })
392
-
393
- it('should accept additional certificates', async () => {
394
- const sigObj = new PdfEtsiCadesDetachedSignatureObject({
395
- privateKey: rsaSigningKeys.privateKey,
396
- certificate: rsaSigningKeys.cert,
397
- issuerCertificate: rsaSigningKeys.caCert,
398
- additionalCertificates: [rsaSigningKeys.caCert],
399
- })
400
-
401
- const signed = await sigObj.sign({ bytes: stringToBytes('test') })
402
- const signedData = SignedData.fromCms(signed.signedBytes)
403
-
404
- expect(signedData.certificates).toHaveLength(2)
405
- expect(signedData.certificates?.[0].toDer()).toEqual(
406
- rsaSigningKeys.cert,
407
- )
408
- expect(signedData.certificates?.[1].toDer()).toEqual(
409
- rsaSigningKeys.caCert,
410
- )
411
- })
412
-
413
- it('should support revocation info configuration', async () => {
414
- const sigObj = new PdfEtsiCadesDetachedSignatureObject({
415
- privateKey: rsaSigningKeys.privateKey,
416
- certificate: rsaSigningKeys.cert,
417
- revocationInfo: {
418
- crls: [rsaSigningKeys.caCrl],
419
- ocsps: [rsaSigningKeys.ocspResponse],
420
- otherRevInfo: [],
421
- },
422
- })
423
-
424
- const signed = await sigObj.sign({
425
- bytes: stringToBytes('test'),
426
- embedRevocationInfo: true,
427
- })
428
- const signedData = SignedData.fromCms(signed.signedBytes)
429
- const revocationInfoAttribute =
430
- signedData.signerInfos[0].signedAttrs?.find((x) =>
431
- x.type.is(OIDs.ADOBE.REVOCATION_INFO_ARCHIVAL),
432
- )
433
- const revocationInfo = revocationInfoAttribute?.values[0].parseAs(
434
- RevocationInfoArchival,
435
- )
436
-
437
- expect(revocationInfo?.crls?.[0].toDer()).toEqual(rsaSigningKeys.caCrl)
438
- expect(revocationInfo?.ocsps?.[0].toDer()).toEqual(
439
- rsaSigningKeys.ocspResponse,
440
- )
441
- })
442
-
443
- it('should support automatic revocation info fetching', async () => {
444
- const sigObj = new PdfEtsiCadesDetachedSignatureObject({
445
- privateKey: rsaSigningKeys.privateKey,
446
- certificate: rsaSigningKeys.cert,
447
- revocationInfo: 'fetch',
448
- })
449
-
450
- await sigObj.sign({ bytes: stringToBytes('test') })
451
- expect(fetch).toHaveBeenCalledWith('http://localhost:8080/ca.crl')
452
- expect(fetch).toHaveBeenCalledWith('http://localhost:8080/ca.crt')
453
- })
454
-
455
- it('should support custom timestamp authority URL', async () => {
456
- const customTSA = {
457
- url: 'https://freetsa.org/tsr',
458
- }
459
- const sigObj = new PdfEtsiCadesDetachedSignatureObject({
460
- privateKey: rsaSigningKeys.privateKey,
461
- certificate: rsaSigningKeys.cert,
462
- timeStampAuthority: customTSA,
463
- })
464
-
465
- const signed = await sigObj.sign({ bytes: stringToBytes('test') })
466
- const signedData = SignedData.fromCms(signed.signedBytes)
467
- const tsaAttr = signedData.signerInfos[0].unsignedAttrs?.find((attr) =>
468
- attr.type.is('1.2.840.113549.1.9.16.2.14'),
469
- )
470
- expect(tsaAttr).toBeDefined()
471
- })
472
-
473
- it('should generate valid PKCS7 signature', async () => {
474
- const sigObj = new PdfEtsiCadesDetachedSignatureObject({
475
- privateKey: rsaSigningKeys.privateKey,
476
- certificate: rsaSigningKeys.cert,
477
- issuerCertificate: rsaSigningKeys.caCert,
478
- date: new Date('2024-01-01T12:00:00Z'),
479
- })
480
-
481
- const testData = stringToBytes('Hello, PDF!')
482
- const result = await sigObj.sign({ bytes: testData })
483
-
484
- expect(result.signedBytes).toBeInstanceOf(Uint8Array)
485
- expect(result.signedBytes.length).toBeGreaterThan(0)
486
- // PKCS7 signature should start with DER sequence tag (0x30)
487
- expect(result.signedBytes[0]).toBe(0x30)
488
- expect(bytesToHex(result.signedBytes)).toMatchInlineSnapshot(
489
- `"3082089806092A864886F70D010702A082088930820885020101310D300B0609608648016503040201300B06092A864886F70D010701A082058F3082058B30820373A00302010202140AD1000D5C4FCFA5D3F51739F2FACAE3817A281A300D06092A864886F70D01010B0500305C310B3009060355040613025553310D300B06035504080C0454657374310E300C06035504070C054C6F63616C310E300C060355040A0C054D794F7267310B3009060355040B0C0243413111300F06035504030C084D79526F6F744341301E170D3235313132343137333835345A170D3236313132343137333835345A3061310B3009060355040613025553310D300B06035504080C0454657374310E300C06035504070C054C6F63616C310E300C060355040A0C054D794F72673110300E060355040B0C075369676E696E673111300F06035504030C084A6F686E20446F6530820122300D06092A864886F70D01010105000382010F003082010A028201010091E6734DB5BC6DA8AE1833DEE522762929E6354EF53FF06B1BD576AC87FA48161F52A14BE2D622505232539B5BB47E6CF09021057230E6D62076DFD26856128378AE7FE79F62E1EBCBC9C47A2BE752794844460A31E5887A19F03A6B2569EEC91E80718F18E7E5EF78DC33E100CE2ED50BC1C358F43AC93EDA3F77E78A97E0B089A917E9A36F3734E51D1C63CFB5C2504E77FC227AAE881624033468B8BE3E1F0A5C6E2D20528CAD7DAEA7E2A6EC7A4DCF846A97174827EF48D0166720A089CA20F765479C44945E91503B3F071DF3D7EE795CB04C43876D3B52872DF135116AC52621DFEAA2691ADC84960F76EAD089B591798F67D6F96DC75483B4BB5CC7930203010001A382013E3082013A30090603551D1304023000300B0603551D0F0404030206C0301D0603551D250416301406082B0601050507030406082B06010505070303302D0603551D1F042630243022A020A01E861C687474703A2F2F6C6F63616C686F73743A383038302F63612E63726C30819106082B06010505070101048184308181302806082B06010505073002861C687474703A2F2F6C6F63616C686F73743A383038302F63612E637274302606082B06010505073001861A687474703A2F2F6C6F63616C686F73743A383038302F6F637370302D06082B060105050730018621687474703A2F2F6C6F63616C686F73743A383038302F6F6373702D6261636B7570301D0603551D0E0416041478EA1C24BC756EA767DE5CF44A03051DAD58B62F301F0603551D23041830168014DC7B208D7FEA5ED9121A13C45A99C460131D070E300D06092A864886F70D01010B050003820201007E1585A5069BA843EAEC6CD15D6791AF98F02E745DAF15CEF93F69E92BE04FC2DDF096FD85C249A3026CF780877398D0A371ECF9A2E02F91FD3C75FA20B47207E3F0DE25AA2B8E444F07B237394D4DF5F98D3745EFCE5AEFF583C6A3C9EFF384EB692F6F3650483C0F7F0309AC2A9A741E75406710DA7154E501641445781E0404AA9D36EC862DA1E36B345D4B31B3E97C2DCC39C330A7FA79149D79E7E44B83646D697B0E3E017ACFAE3B202408CD4D7B9BA60CEB0019F977AD0C75C34BE24479CB4EE81ADF0ECE6FDB17C2A0B0DF04EE198602207B235AF7F782642D0B29373F48D2E593C13290880F66EF79B0877B68464B86016506BB63FEB9D611703FFD0DD239A992C77CF17A0E92DC79045B2287EF0B6CDF60C01A99B11841AA484FFE0FB8904DF223A498B90DF88B523893E997930517E644E269BA4624EB99B087D0CB1B4D30720C3466CB6771F2B6CE573B1D134EE3C7A3BF2B65166EC04214D8C65EDE29B148DFC61214CDB9DCC57D36E3B8AC97FBA1019BBDD61BE18B80E32E06C11D3DDA962B23578106C617847819C1AAC61BDC2273D061586DE08B2FA62721F563EB6C20C0C19AC21D6557514ECEC10E09E44D0C160DA5FF99724405983FE17103D5E7F9EF3C3AD49D3B7880FE26003DBC2E1E98DA255BBFC3BD75B2AEE178BFD7565924014A23372BDD04CE79B824FABDDB55338FF9B8AD9BDB1E43F32295318202CF308202CB0201013074305C310B3009060355040613025553310D300B06035504080C0454657374310E300C06035504070C054C6F63616C310E300C060355040A0C054D794F7267310B3009060355040B0C0243413111300F06035504030C084D79526F6F74434102140AD1000D5C4FCFA5D3F51739F2FACAE3817A281A300B0609608648016503040201A082012E3081C2060B2A864886F70D010910022F3181B23081AF3081AC3081A9300B060960864801650304020104205CE7808A4A328A9D1568A6EF6B030D44B7D1C7FFA3BC25F881DA700A199C73EC30783060A45E305C310B3009060355040613025553310D300B06035504080C0454657374310E300C06035504070C054C6F63616C310E300C060355040A0C054D794F7267310B3009060355040B0C0243413111300F06035504030C084D79526F6F74434102140AD1000D5C4FCFA5D3F51739F2FACAE3817A281A301C06092A864886F70D010905310F170D3234303130313132303030305A302F06092A864886F70D01090431220420E21FC8BC54A9E118BA076002544A1D20CA18D9E6DF08AC308D89CE63DE7D445B301806092A864886F70D010903310B06092A864886F70D010701300D06092A864886F70D01010B05000482010087C1548CA434BC1F45B70E3015C1F3679FC24B1EBBB3AAF12F5A84A118B8FDB6C3CED71E1D919DCE9CC3336BD04B2A16CA7645AE533078AB927718B541840CCBAF29F26BAB815820D28ED42DA33E1C39CCB19A8FF57D5ECED1E826505D1818759183CE5DB94ABD81235288476B852EB0AC4DF9CC204E40FB5F001F63A3A070A378D0D8D42A6CA7BFAC96FCE3ED302D46CB97FC7FB76F21C09B2FEBE3623144C292B83118DF862DEB6059A4AD3157F26E9650862FD96C80A4B79C135592F6FC5269488A1A22C90B215BC150FEB75E21E276DB24D7D3037C6F5D88FF2F97F282FD482B57CEAB28D533C885D2B06C9BA05A162260F1041B45E2BEE067C4C8B43A0A"`,
490
- )
491
- })
492
- })
493
-
494
- describe('PdfAdbePkcs7Sha1SignatureObject', () => {
495
- beforeAll(() => {
496
- vi.stubGlobal('fetch', vi.fn(fetch))
497
- })
498
-
499
- it('should create Adobe PKCS7 SHA1 signature with required properties', () => {
500
- const sigObj = new PdfAdbePkcs7Sha1SignatureObject({
501
- privateKey: rsaSigningKeys.privateKey,
502
- certificate: rsaSigningKeys.cert,
503
- })
504
-
505
- expect(sigObj.content.get('Filter')?.toString()).toBe('/Adobe.PPKLite')
506
- expect(sigObj.content.get('SubFilter')?.toString()).toBe(
507
- '/adbe.pkcs7.sha1',
508
- )
509
- expect(sigObj.content.get('Type')?.toString()).toBe('/Sig')
510
- })
511
-
512
- it('should include optional metadata in signature dictionary', () => {
513
- const testDate = new Date('2024-01-01T12:00:00Z')
514
- const sigObj = new PdfAdbePkcs7Sha1SignatureObject({
515
- privateKey: rsaSigningKeys.privateKey,
516
- certificate: rsaSigningKeys.cert,
517
- name: 'Jake Shirley',
518
- reason: 'PKCS7 SHA1 Approval',
519
- location: 'Earth',
520
- contactInfo: 'test@test.com',
521
- date: testDate,
522
- })
523
-
524
- expect(sigObj.content.get('Name')?.toString()).toContain('Jake Shirley')
525
- expect(sigObj.content.get('Reason')?.toString()).toContain(
526
- 'PKCS7 SHA1 Approval',
527
- )
528
- expect(sigObj.content.get('Location')?.toString()).toContain('Earth')
529
- expect(sigObj.content.get('ContactInfo')?.toString()).toContain(
530
- 'test@test.com',
531
- )
532
- expect(sigObj.content.get('M')).toBeInstanceOf(PdfDate)
533
- })
534
-
535
- it('should accept additional certificates', async () => {
536
- const sigObj = new PdfAdbePkcs7Sha1SignatureObject({
537
- privateKey: rsaSigningKeys.privateKey,
538
- certificate: rsaSigningKeys.cert,
539
- issuerCertificate: rsaSigningKeys.caCert,
540
- additionalCertificates: [rsaSigningKeys.caCert],
541
- })
542
-
543
- const signed = await sigObj.sign({ bytes: stringToBytes('test') })
544
- const signedData = SignedData.fromCms(signed.signedBytes)
545
-
546
- expect(signedData.certificates).toHaveLength(2)
547
- expect(signedData.certificates?.[0].toDer()).toEqual(
548
- rsaSigningKeys.cert,
549
- )
550
- expect(signedData.certificates?.[1].toDer()).toEqual(
551
- rsaSigningKeys.caCert,
552
- )
553
- })
554
-
555
- it('should support revocation info configuration', async () => {
556
- const sigObj = new PdfAdbePkcs7Sha1SignatureObject({
557
- privateKey: rsaSigningKeys.privateKey,
558
- certificate: rsaSigningKeys.cert,
559
- revocationInfo: {
560
- crls: [rsaSigningKeys.caCrl],
561
- ocsps: [rsaSigningKeys.ocspResponse],
562
- otherRevInfo: [],
563
- },
564
- })
565
-
566
- const signed = await sigObj.sign({
567
- bytes: stringToBytes('test'),
568
- embedRevocationInfo: true,
569
- })
570
- const signedData = SignedData.fromCms(signed.signedBytes)
571
- const revocationInfoAttribute =
572
- signedData.signerInfos[0].signedAttrs?.find((x) =>
573
- x.type.is(OIDs.ADOBE.REVOCATION_INFO_ARCHIVAL),
574
- )
575
- const revocationInfo = revocationInfoAttribute?.values[0].parseAs(
576
- RevocationInfoArchival,
577
- )
578
-
579
- expect(revocationInfo?.crls?.[0].toDer()).toEqual(rsaSigningKeys.caCrl)
580
- expect(revocationInfo?.ocsps?.[0].toDer()).toEqual(
581
- rsaSigningKeys.ocspResponse,
582
- )
583
- })
584
-
585
- it('should support automatic revocation info fetching', async () => {
586
- const sigObj = new PdfAdbePkcs7Sha1SignatureObject({
587
- privateKey: rsaSigningKeys.privateKey,
588
- certificate: rsaSigningKeys.cert,
589
- revocationInfo: 'fetch',
590
- })
591
-
592
- await sigObj.sign({ bytes: stringToBytes('test') })
593
- expect(fetch).toHaveBeenCalledWith('http://localhost:8080/ca.crl')
594
- expect(fetch).toHaveBeenCalledWith('http://localhost:8080/ca.crt')
595
- })
596
-
597
- it('should support custom timestamp authority URL', async () => {
598
- const customTSA = {
599
- url: 'https://freetsa.org/tsr',
600
- }
601
- const sigObj = new PdfAdbePkcs7Sha1SignatureObject({
602
- privateKey: rsaSigningKeys.privateKey,
603
- certificate: rsaSigningKeys.cert,
604
- timeStampAuthority: customTSA,
605
- })
606
-
607
- const signed = await sigObj.sign({ bytes: stringToBytes('test') })
608
- const signedData = SignedData.fromCms(signed.signedBytes)
609
- const tsaAttr = signedData.signerInfos[0].unsignedAttrs?.find((attr) =>
610
- attr.type.is('1.2.840.113549.1.9.16.2.14'),
611
- )
612
- expect(tsaAttr).toBeDefined()
613
- })
614
-
615
- it('should generate valid PKCS7 SHA1 signature', async () => {
616
- const sigObj = new PdfAdbePkcs7Sha1SignatureObject({
617
- privateKey: rsaSigningKeys.privateKey,
618
- certificate: rsaSigningKeys.cert,
619
- issuerCertificate: rsaSigningKeys.caCert,
620
- date: new Date('2024-01-01T12:00:00Z'),
621
- })
622
-
623
- const testData = stringToBytes('Hello, PDF!')
624
- const result = await sigObj.sign({ bytes: testData })
625
-
626
- expect(result.signedBytes).toBeInstanceOf(Uint8Array)
627
- expect(result.signedBytes.length).toBeGreaterThan(0)
628
- // PKCS7 signature should start with DER sequence tag (0x30)
629
- expect(result.signedBytes[0]).toBe(0x30)
630
- })
631
- })
632
-
633
- describe('PdfAdbePkcsX509RsaSha1SignatureObject', () => {
634
- beforeAll(() => {
635
- vi.stubGlobal('fetch', vi.fn(fetch))
636
- })
637
-
638
- it('should create Adobe X509 RSA SHA1 signature with required properties', () => {
639
- const sigObj = new PdfAdbePkcsX509RsaSha1SignatureObject({
640
- privateKey: rsaSigningKeys.privateKey,
641
- certificate: rsaSigningKeys.cert,
642
- })
643
-
644
- expect(sigObj.content.get('Filter')?.toString()).toBe('/Adobe.PPKLite')
645
- expect(sigObj.content.get('SubFilter')?.toString()).toBe(
646
- '/adbe.x509.rsa_sha1',
647
- )
648
- expect(sigObj.content.get('Type')?.toString()).toBe('/Sig')
649
- })
650
-
651
- it('should include optional metadata in signature dictionary', () => {
652
- const testDate = new Date('2024-01-01T12:00:00Z')
653
- const sigObj = new PdfAdbePkcsX509RsaSha1SignatureObject({
654
- privateKey: rsaSigningKeys.privateKey,
655
- certificate: rsaSigningKeys.cert,
656
- name: 'Jake Shirley',
657
- reason: 'X509 RSA SHA1 Approval',
658
- location: 'Earth',
659
- contactInfo: 'test@test.com',
660
- date: testDate,
661
- })
662
-
663
- expect(sigObj.content.get('Name')?.toString()).toContain('Jake Shirley')
664
- expect(sigObj.content.get('Reason')?.toString()).toContain(
665
- 'X509 RSA SHA1 Approval',
666
- )
667
- expect(sigObj.content.get('Location')?.toString()).toContain('Earth')
668
- expect(sigObj.content.get('ContactInfo')?.toString()).toContain(
669
- 'test@test.com',
670
- )
671
- expect(sigObj.content.get('M')).toBeInstanceOf(PdfDate)
672
- })
673
-
674
- it('should include certificate in Cert array', () => {
675
- const sigObj = new PdfAdbePkcsX509RsaSha1SignatureObject({
676
- privateKey: rsaSigningKeys.privateKey,
677
- certificate: rsaSigningKeys.cert,
678
- })
679
-
680
- const certArray = sigObj.content.get('Cert') as PdfArray
681
- expect(certArray).toBeInstanceOf(PdfArray)
682
- expect(certArray.items.length).toBeGreaterThanOrEqual(1)
683
- })
684
-
685
- it('should accept additional certificates', () => {
686
- const sigObj = new PdfAdbePkcsX509RsaSha1SignatureObject({
687
- privateKey: rsaSigningKeys.privateKey,
688
- certificate: rsaSigningKeys.cert,
689
- additionalCertificates: [rsaSigningKeys.caCert],
690
- })
691
-
692
- const certArray = sigObj.content.get('Cert') as PdfArray
693
- expect(certArray).toBeInstanceOf(PdfArray)
694
- expect(certArray.items.length).toBe(2)
695
- })
696
-
697
- it('should support revocation info configuration', async () => {
698
- const sigObj = new PdfAdbePkcsX509RsaSha1SignatureObject({
699
- privateKey: rsaSigningKeys.privateKey,
700
- certificate: rsaSigningKeys.cert,
701
- revocationInfo: {
702
- crls: [rsaSigningKeys.caCrl],
703
- ocsps: [rsaSigningKeys.ocspResponse],
704
- otherRevInfo: [],
705
- },
706
- })
707
-
708
- const signed = await sigObj.sign({ bytes: stringToBytes('test') })
709
-
710
- expect(signed.revocationInfo?.crls?.[0]).toEqual(rsaSigningKeys.caCrl)
711
- expect(signed.revocationInfo?.ocsps?.[0]).toEqual(
712
- rsaSigningKeys.ocspResponse,
713
- )
714
- })
715
-
716
- it('should support automatic revocation info fetching', async () => {
717
- const sigObj = new PdfAdbePkcsX509RsaSha1SignatureObject({
718
- privateKey: rsaSigningKeys.privateKey,
719
- certificate: rsaSigningKeys.cert,
720
- revocationInfo: 'fetch',
721
- })
722
-
723
- await sigObj.sign({ bytes: stringToBytes('test') })
724
- expect(fetch).toHaveBeenCalledWith('http://localhost:8080/ca.crl')
725
- expect(fetch).toHaveBeenCalledWith('http://localhost:8080/ca.crt')
726
- })
727
-
728
- it('should generate valid X509 RSA SHA1 signature', async () => {
729
- const sigObj = new PdfAdbePkcsX509RsaSha1SignatureObject({
730
- privateKey: rsaSigningKeys.privateKey,
731
- certificate: rsaSigningKeys.cert,
732
- date: new Date('2024-01-01T12:00:00Z'),
733
- })
734
-
735
- const testData = stringToBytes('Hello, PDF!')
736
- const result = await sigObj.sign({ bytes: testData })
737
-
738
- expect(result.signedBytes).toBeInstanceOf(Uint8Array)
739
- expect(result.signedBytes.length).toBeGreaterThan(0)
740
- // OctetString starts with 0x04 tag
741
- expect(result.signedBytes[0]).toBe(0x04)
742
- })
743
- })
744
-
745
- describe('PdfEtsiRfc3161SignatureObject', () => {
746
- it('should create ETSI RFC3161 signature with required properties', () => {
747
- const sigObj = new PdfEtsiRfc3161SignatureObject({})
748
-
749
- expect(sigObj.content.get('Filter')?.toString()).toBe('/Adobe.PPKLite')
750
- expect(sigObj.content.get('SubFilter')?.toString()).toBe(
751
- '/ETSI.RFC3161',
752
- )
753
- expect(sigObj.content.get('Type')?.toString()).toBe('/Sig')
754
- })
755
-
756
- it('should use default timestamp authority URL', () => {
757
- const sigObj = new PdfEtsiRfc3161SignatureObject({})
758
-
759
- expect(sigObj.timeStampAuthority.url).toBe('https://freetsa.org/tsr')
760
- })
761
-
762
- it('should accept custom timestamp authority URL', () => {
763
- const customTSA = {
764
- url: 'https://custom-tsa.example.com/tsr',
765
- username: 'user',
766
- password: 'pass',
767
- }
768
- const sigObj = new PdfEtsiRfc3161SignatureObject({
769
- timeStampAuthority: customTSA,
770
- })
771
-
772
- expect(sigObj.timeStampAuthority.url).toBe(
773
- 'https://custom-tsa.example.com/tsr',
774
- )
775
- expect(sigObj.timeStampAuthority.username).toBe('user')
776
- expect(sigObj.timeStampAuthority.password).toBe('pass')
777
- })
778
-
779
- it('should include optional metadata in signature dictionary', () => {
780
- const sigObj = new PdfEtsiRfc3161SignatureObject({
781
- name: 'Timestamp Authority',
782
- reason: 'Document Timestamping',
783
- location: 'Server',
784
- contactInfo: 'timestamp@example.com',
785
- })
786
-
787
- expect(sigObj.content.get('Name')?.toString()).toContain(
788
- 'Timestamp Authority',
789
- )
790
- expect(sigObj.content.get('Reason')?.toString()).toContain(
791
- 'Document Timestamping',
792
- )
793
- expect(sigObj.content.get('Location')?.toString()).toContain('Server')
794
- expect(sigObj.content.get('ContactInfo')?.toString()).toContain(
795
- 'timestamp@example.com',
796
- )
797
- })
798
-
799
- it('should generate valid RFC3161 timestamp signature', async () => {
800
- const sigObj = new PdfEtsiRfc3161SignatureObject({
801
- timeStampAuthority: {
802
- url: 'https://freetsa.org/tsr',
803
- },
804
- })
805
-
806
- const testData = stringToBytes('Hello, PDF!')
807
- const result = await sigObj.sign({ bytes: testData })
808
-
809
- expect(result.signedBytes).toBeInstanceOf(Uint8Array)
810
- expect(result.signedBytes.length).toBeGreaterThan(0)
811
- // Timestamp token starts with DER sequence tag (0x30)
812
- expect(result.signedBytes[0]).toBe(0x30)
813
- })
814
- })