ooxml-core 0.9.0 → 0.10.0

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 (286) hide show
  1. package/README.md +14 -13
  2. package/dist/crypto/aes-ecb.d.ts +13 -0
  3. package/dist/crypto/aes-ecb.d.ts.map +1 -0
  4. package/dist/crypto/decrypt.d.ts +63 -0
  5. package/dist/crypto/decrypt.d.ts.map +1 -0
  6. package/dist/crypto/detect.d.ts +56 -0
  7. package/dist/crypto/detect.d.ts.map +1 -0
  8. package/dist/crypto/encrypt.d.ts +27 -0
  9. package/dist/crypto/encrypt.d.ts.map +1 -0
  10. package/dist/crypto/encryption-info-write.d.ts +46 -0
  11. package/dist/crypto/encryption-info-write.d.ts.map +1 -0
  12. package/dist/crypto/encryption-info.d.ts +22 -0
  13. package/dist/crypto/encryption-info.d.ts.map +1 -0
  14. package/dist/crypto/errors.d.ts +39 -0
  15. package/dist/crypto/errors.d.ts.map +1 -0
  16. package/dist/crypto/index.cjs +1805 -0
  17. package/dist/crypto/index.d.ts +26 -0
  18. package/dist/crypto/index.d.ts.map +1 -0
  19. package/dist/crypto/index.mjs +1774 -0
  20. package/dist/crypto/key-derivation.d.ts +73 -0
  21. package/dist/crypto/key-derivation.d.ts.map +1 -0
  22. package/dist/crypto/types.d.ts +104 -0
  23. package/dist/crypto/types.d.ts.map +1 -0
  24. package/dist/docx/embedded.cjs +2 -0
  25. package/dist/docx/embedded.mjs +2 -0
  26. package/dist/docx/index.cjs +2 -0
  27. package/dist/docx/index.mjs +2 -0
  28. package/dist/docx/load/detect.d.ts +14 -2
  29. package/dist/docx/load/detect.d.ts.map +1 -1
  30. package/dist/docx/load/index.cjs +8995 -7728
  31. package/dist/docx/load/index.d.ts +3 -1
  32. package/dist/docx/load/index.d.ts.map +1 -1
  33. package/dist/docx/load/index.mjs +8990 -7729
  34. package/dist/docx/load/legacy-doc.d.ts.map +1 -1
  35. package/dist/index.cjs +749 -19
  36. package/dist/index.mjs +749 -19
  37. package/dist/opc/index.cjs +797 -1
  38. package/dist/opc/index.d.ts +2 -0
  39. package/dist/opc/index.d.ts.map +1 -1
  40. package/dist/opc/index.mjs +784 -3
  41. package/dist/opc/properties/app.d.ts +10 -0
  42. package/dist/opc/properties/app.d.ts.map +1 -0
  43. package/dist/opc/properties/core.d.ts +13 -0
  44. package/dist/opc/properties/core.d.ts.map +1 -0
  45. package/dist/opc/properties/custom.d.ts +15 -0
  46. package/dist/opc/properties/custom.d.ts.map +1 -0
  47. package/dist/opc/properties/index.d.ts +5 -0
  48. package/dist/opc/properties/index.d.ts.map +1 -0
  49. package/dist/opc/properties/types.d.ts +114 -0
  50. package/dist/opc/properties/types.d.ts.map +1 -0
  51. package/dist/opc/relationship-types.d.ts +1 -0
  52. package/dist/opc/relationship-types.d.ts.map +1 -1
  53. package/dist/opc/safe-href.d.ts +34 -0
  54. package/dist/opc/safe-href.d.ts.map +1 -1
  55. package/dist/opc/signature/constants.d.ts +42 -0
  56. package/dist/opc/signature/constants.d.ts.map +1 -0
  57. package/dist/opc/signature/detection.d.ts +97 -0
  58. package/dist/opc/signature/detection.d.ts.map +1 -0
  59. package/dist/opc/signature/digest.d.ts +16 -0
  60. package/dist/opc/signature/digest.d.ts.map +1 -0
  61. package/dist/opc/signature/index.d.ts +8 -0
  62. package/dist/opc/signature/index.d.ts.map +1 -0
  63. package/dist/opc/signature/inspection-status.d.ts +24 -0
  64. package/dist/opc/signature/inspection-status.d.ts.map +1 -0
  65. package/dist/opc/signature/reference-utils.d.ts +12 -0
  66. package/dist/opc/signature/reference-utils.d.ts.map +1 -0
  67. package/dist/opc/signature/types.d.ts +90 -0
  68. package/dist/opc/signature/types.d.ts.map +1 -0
  69. package/dist/opc/signature/xml-utils.d.ts +35 -0
  70. package/dist/opc/signature/xml-utils.d.ts.map +1 -0
  71. package/dist/pptx/chunks/{index-CojJtI77.d.ts → index-BWUBPGgv.d.ts} +9 -11
  72. package/dist/pptx/chunks/index-BWUBPGgv.d.ts.map +1 -0
  73. package/dist/pptx/chunks/{signature-inspection-status-Bh2oap7B.d.ts → inspection-status-B2E-jSpG.d.ts} +8 -8
  74. package/dist/pptx/chunks/inspection-status-B2E-jSpG.d.ts.map +1 -0
  75. package/dist/pptx/cli/index.cjs +1409 -895
  76. package/dist/pptx/cli/index.mjs +1409 -895
  77. package/dist/pptx/converter/index.d.ts +1 -1
  78. package/dist/pptx/index.cjs +1933 -1391
  79. package/dist/pptx/index.d.ts +20 -67
  80. package/dist/pptx/index.d.ts.map +1 -1
  81. package/dist/pptx/index.mjs +1933 -1391
  82. package/dist/pptx/signature-node/index.cjs +5 -5
  83. package/dist/pptx/signature-node/index.d.ts +1 -1
  84. package/dist/pptx/signature-node/index.mjs +5 -5
  85. package/dist/visio/edit-master-index.d.ts +10 -0
  86. package/dist/visio/edit-master-index.d.ts.map +1 -0
  87. package/dist/visio/edit-master-scope.d.ts +7 -0
  88. package/dist/visio/edit-master-scope.d.ts.map +1 -0
  89. package/dist/visio/edit-scope.d.ts.map +1 -1
  90. package/dist/visio/formula-arithmetic.d.ts +8 -0
  91. package/dist/visio/formula-arithmetic.d.ts.map +1 -0
  92. package/dist/visio/formula-evaluate.d.ts.map +1 -1
  93. package/dist/visio/formula-master.d.ts +13 -0
  94. package/dist/visio/formula-master.d.ts.map +1 -0
  95. package/dist/visio/formula-numeric-functions.d.ts +8 -0
  96. package/dist/visio/formula-numeric-functions.d.ts.map +1 -0
  97. package/dist/visio/formula.d.ts +1 -1
  98. package/dist/visio/formula.d.ts.map +1 -1
  99. package/dist/visio/index.cjs +540 -61
  100. package/dist/visio/index.mjs +540 -61
  101. package/dist/xlsx/edit/annotations.d.ts +5 -1
  102. package/dist/xlsx/edit/annotations.d.ts.map +1 -1
  103. package/dist/xlsx/edit/cell-values.d.ts +7 -2
  104. package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
  105. package/dist/xlsx/edit/clipboard.d.ts.map +1 -1
  106. package/dist/xlsx/edit/doc-properties.d.ts +14 -0
  107. package/dist/xlsx/edit/doc-properties.d.ts.map +1 -0
  108. package/dist/xlsx/edit/fill-series.d.ts.map +1 -1
  109. package/dist/xlsx/edit/find.d.ts +2 -1
  110. package/dist/xlsx/edit/find.d.ts.map +1 -1
  111. package/dist/xlsx/edit/format-lines.d.ts +22 -0
  112. package/dist/xlsx/edit/format-lines.d.ts.map +1 -0
  113. package/dist/xlsx/edit/format.d.ts +2 -1
  114. package/dist/xlsx/edit/format.d.ts.map +1 -1
  115. package/dist/xlsx/edit/history-refs.d.ts +51 -0
  116. package/dist/xlsx/edit/history-refs.d.ts.map +1 -0
  117. package/dist/xlsx/edit/history.d.ts +40 -5
  118. package/dist/xlsx/edit/history.d.ts.map +1 -1
  119. package/dist/xlsx/edit/index.d.ts +3 -0
  120. package/dist/xlsx/edit/index.d.ts.map +1 -1
  121. package/dist/xlsx/edit/input-text.d.ts +13 -0
  122. package/dist/xlsx/edit/input-text.d.ts.map +1 -0
  123. package/dist/xlsx/edit/merge.d.ts +10 -2
  124. package/dist/xlsx/edit/merge.d.ts.map +1 -1
  125. package/dist/xlsx/edit/session.d.ts.map +1 -1
  126. package/dist/xlsx/edit/sheets.d.ts.map +1 -1
  127. package/dist/xlsx/edit/shift-formulas.d.ts +2 -1
  128. package/dist/xlsx/edit/shift-formulas.d.ts.map +1 -1
  129. package/dist/xlsx/edit/shift-preserved.d.ts +17 -0
  130. package/dist/xlsx/edit/shift-preserved.d.ts.map +1 -0
  131. package/dist/xlsx/edit/shift-sheet.d.ts +2 -2
  132. package/dist/xlsx/edit/shift-sheet.d.ts.map +1 -1
  133. package/dist/xlsx/edit/structure.d.ts.map +1 -1
  134. package/dist/xlsx/edit/types.d.ts +7 -0
  135. package/dist/xlsx/edit/types.d.ts.map +1 -1
  136. package/dist/xlsx/edit/validation-list.d.ts +24 -0
  137. package/dist/xlsx/edit/validation-list.d.ts.map +1 -0
  138. package/dist/xlsx/edit/validation.d.ts +2 -1
  139. package/dist/xlsx/edit/validation.d.ts.map +1 -1
  140. package/dist/xlsx/formula/area-index.d.ts +18 -0
  141. package/dist/xlsx/formula/area-index.d.ts.map +1 -0
  142. package/dist/xlsx/formula/array-context.d.ts.map +1 -1
  143. package/dist/xlsx/formula/ast.d.ts +5 -1
  144. package/dist/xlsx/formula/ast.d.ts.map +1 -1
  145. package/dist/xlsx/formula/call.d.ts.map +1 -1
  146. package/dist/xlsx/formula/coerce.d.ts.map +1 -1
  147. package/dist/xlsx/formula/context.d.ts +5 -0
  148. package/dist/xlsx/formula/context.d.ts.map +1 -1
  149. package/dist/xlsx/formula/date-serial.d.ts +11 -4
  150. package/dist/xlsx/formula/date-serial.d.ts.map +1 -1
  151. package/dist/xlsx/formula/engine-core.d.ts +6 -0
  152. package/dist/xlsx/formula/engine-core.d.ts.map +1 -1
  153. package/dist/xlsx/formula/engine-host.d.ts +35 -3
  154. package/dist/xlsx/formula/engine-host.d.ts.map +1 -1
  155. package/dist/xlsx/formula/engine-util.d.ts.map +1 -1
  156. package/dist/xlsx/formula/engine.d.ts.map +1 -1
  157. package/dist/xlsx/formula/evaluator.d.ts.map +1 -1
  158. package/dist/xlsx/formula/functions/array-shape.d.ts.map +1 -1
  159. package/dist/xlsx/formula/functions/array.d.ts.map +1 -1
  160. package/dist/xlsx/formula/functions/criteria-index.d.ts +12 -0
  161. package/dist/xlsx/formula/functions/criteria-index.d.ts.map +1 -0
  162. package/dist/xlsx/formula/functions/criteria.d.ts +24 -16
  163. package/dist/xlsx/formula/functions/criteria.d.ts.map +1 -1
  164. package/dist/xlsx/formula/functions/date-calc.d.ts +4 -0
  165. package/dist/xlsx/formula/functions/date-calc.d.ts.map +1 -1
  166. package/dist/xlsx/formula/functions/depreciation.d.ts.map +1 -1
  167. package/dist/xlsx/formula/functions/financial.d.ts.map +1 -1
  168. package/dist/xlsx/formula/functions/helpers.d.ts.map +1 -1
  169. package/dist/xlsx/formula/functions/logical.d.ts.map +1 -1
  170. package/dist/xlsx/formula/functions/lookup-core.d.ts +14 -2
  171. package/dist/xlsx/formula/functions/lookup-core.d.ts.map +1 -1
  172. package/dist/xlsx/formula/functions/lookup.d.ts.map +1 -1
  173. package/dist/xlsx/formula/functions/math-mod.d.ts +8 -0
  174. package/dist/xlsx/formula/functions/math-mod.d.ts.map +1 -0
  175. package/dist/xlsx/formula/functions/math-sum.d.ts.map +1 -1
  176. package/dist/xlsx/formula/functions/math.d.ts.map +1 -1
  177. package/dist/xlsx/formula/functions/statistical-count.d.ts.map +1 -1
  178. package/dist/xlsx/formula/functions/statistical.d.ts.map +1 -1
  179. package/dist/xlsx/formula/functions/stats-core.d.ts +6 -0
  180. package/dist/xlsx/formula/functions/stats-core.d.ts.map +1 -1
  181. package/dist/xlsx/formula/functions/text-case.d.ts +14 -0
  182. package/dist/xlsx/formula/functions/text-case.d.ts.map +1 -0
  183. package/dist/xlsx/formula/functions/text.d.ts.map +1 -1
  184. package/dist/xlsx/formula/functions/workdays.d.ts.map +1 -1
  185. package/dist/xlsx/formula/graph-index.d.ts +15 -0
  186. package/dist/xlsx/formula/graph-index.d.ts.map +1 -0
  187. package/dist/xlsx/formula/graph.d.ts +13 -18
  188. package/dist/xlsx/formula/graph.d.ts.map +1 -1
  189. package/dist/xlsx/formula/operators.d.ts +9 -0
  190. package/dist/xlsx/formula/operators.d.ts.map +1 -1
  191. package/dist/xlsx/formula/parser.d.ts +2 -0
  192. package/dist/xlsx/formula/parser.d.ts.map +1 -1
  193. package/dist/xlsx/formula/references.d.ts +4 -1
  194. package/dist/xlsx/formula/references.d.ts.map +1 -1
  195. package/dist/xlsx/formula/text-number.d.ts.map +1 -1
  196. package/dist/xlsx/formula/transform.d.ts.map +1 -1
  197. package/dist/xlsx/formula/values.d.ts +44 -3
  198. package/dist/xlsx/formula/values.d.ts.map +1 -1
  199. package/dist/xlsx/index.cjs +4698 -1322
  200. package/dist/xlsx/index.mjs +4688 -1323
  201. package/dist/xlsx/layout/anchors.d.ts +47 -0
  202. package/dist/xlsx/layout/anchors.d.ts.map +1 -0
  203. package/dist/xlsx/layout/cf-evaluator.d.ts +1 -2
  204. package/dist/xlsx/layout/cf-evaluator.d.ts.map +1 -1
  205. package/dist/xlsx/layout/cf-helpers.d.ts +8 -1
  206. package/dist/xlsx/layout/cf-helpers.d.ts.map +1 -1
  207. package/dist/xlsx/layout/index.d.ts +1 -0
  208. package/dist/xlsx/layout/index.d.ts.map +1 -1
  209. package/dist/xlsx/load/csv.d.ts +24 -3
  210. package/dist/xlsx/load/csv.d.ts.map +1 -1
  211. package/dist/xlsx/load/detect.d.ts +39 -7
  212. package/dist/xlsx/load/detect.d.ts.map +1 -1
  213. package/dist/xlsx/load/errors.d.ts +10 -0
  214. package/dist/xlsx/load/errors.d.ts.map +1 -0
  215. package/dist/xlsx/load/index.cjs +16220 -12163
  216. package/dist/xlsx/load/index.d.ts +5 -2
  217. package/dist/xlsx/load/index.d.ts.map +1 -1
  218. package/dist/xlsx/load/index.mjs +16213 -12164
  219. package/dist/xlsx/load/text-decode.d.ts +7 -0
  220. package/dist/xlsx/load/text-decode.d.ts.map +1 -0
  221. package/dist/xlsx/model.d.ts +121 -17
  222. package/dist/xlsx/model.d.ts.map +1 -1
  223. package/dist/xlsx/numfmt/date.d.ts +7 -0
  224. package/dist/xlsx/numfmt/date.d.ts.map +1 -1
  225. package/dist/xlsx/numfmt/format.d.ts.map +1 -1
  226. package/dist/xlsx/numfmt/fraction.d.ts +5 -1
  227. package/dist/xlsx/numfmt/fraction.d.ts.map +1 -1
  228. package/dist/xlsx/numfmt/input-date.d.ts.map +1 -1
  229. package/dist/xlsx/numfmt/input.d.ts.map +1 -1
  230. package/dist/xlsx/numfmt/number.d.ts.map +1 -1
  231. package/dist/xlsx/read/conditional.d.ts.map +1 -1
  232. package/dist/xlsx/read/drawing.d.ts +2 -2
  233. package/dist/xlsx/read/drawing.d.ts.map +1 -1
  234. package/dist/xlsx/read/load.d.ts.map +1 -1
  235. package/dist/xlsx/read/package.d.ts +18 -2
  236. package/dist/xlsx/read/package.d.ts.map +1 -1
  237. package/dist/xlsx/read/sheet-data.d.ts.map +1 -1
  238. package/dist/xlsx/read/sheet-props.d.ts +15 -1
  239. package/dist/xlsx/read/sheet-props.d.ts.map +1 -1
  240. package/dist/xlsx/read/smart-art.d.ts +12 -0
  241. package/dist/xlsx/read/smart-art.d.ts.map +1 -0
  242. package/dist/xlsx/read/styles.d.ts.map +1 -1
  243. package/dist/xlsx/read/workbook-part.d.ts +5 -2
  244. package/dist/xlsx/read/workbook-part.d.ts.map +1 -1
  245. package/dist/xlsx/read/worksheet.d.ts.map +1 -1
  246. package/dist/xlsx/write/attr-merge.d.ts +10 -0
  247. package/dist/xlsx/write/attr-merge.d.ts.map +1 -0
  248. package/dist/xlsx/write/carried-refs.d.ts +61 -0
  249. package/dist/xlsx/write/carried-refs.d.ts.map +1 -0
  250. package/dist/xlsx/write/comments.d.ts +12 -2
  251. package/dist/xlsx/write/comments.d.ts.map +1 -1
  252. package/dist/xlsx/write/conditional.d.ts.map +1 -1
  253. package/dist/xlsx/write/doc-props.d.ts +30 -0
  254. package/dist/xlsx/write/doc-props.d.ts.map +1 -0
  255. package/dist/xlsx/write/drawing.d.ts +5 -0
  256. package/dist/xlsx/write/drawing.d.ts.map +1 -1
  257. package/dist/xlsx/write/metadata.d.ts +23 -0
  258. package/dist/xlsx/write/metadata.d.ts.map +1 -0
  259. package/dist/xlsx/write/package-writer.d.ts +6 -0
  260. package/dist/xlsx/write/package-writer.d.ts.map +1 -1
  261. package/dist/xlsx/write/page-setup.d.ts +8 -0
  262. package/dist/xlsx/write/page-setup.d.ts.map +1 -0
  263. package/dist/xlsx/write/save.d.ts.map +1 -1
  264. package/dist/xlsx/write/sheet-data.d.ts +8 -0
  265. package/dist/xlsx/write/sheet-data.d.ts.map +1 -1
  266. package/dist/xlsx/write/sheet-parts.d.ts +6 -0
  267. package/dist/xlsx/write/sheet-parts.d.ts.map +1 -1
  268. package/dist/xlsx/write/sheet-props.d.ts +0 -6
  269. package/dist/xlsx/write/sheet-props.d.ts.map +1 -1
  270. package/dist/xlsx/write/styles.d.ts.map +1 -1
  271. package/dist/xlsx/write/table-patch.d.ts +12 -0
  272. package/dist/xlsx/write/table-patch.d.ts.map +1 -0
  273. package/dist/xlsx/write/tables.d.ts +9 -0
  274. package/dist/xlsx/write/tables.d.ts.map +1 -1
  275. package/dist/xlsx/write/vml-ids.d.ts +29 -0
  276. package/dist/xlsx/write/vml-ids.d.ts.map +1 -0
  277. package/dist/xlsx/write/workbook-part.d.ts +1 -4
  278. package/dist/xlsx/write/workbook-part.d.ts.map +1 -1
  279. package/dist/xlsx/write/worksheet.d.ts.map +1 -1
  280. package/dist/xml/index.cjs +4 -0
  281. package/dist/xml/index.mjs +4 -0
  282. package/dist/xml/namespaces.d.ts +4 -0
  283. package/dist/xml/namespaces.d.ts.map +1 -1
  284. package/package.json +6 -1
  285. package/dist/pptx/chunks/index-CojJtI77.d.ts.map +0 -1
  286. package/dist/pptx/chunks/signature-inspection-status-Bh2oap7B.d.ts.map +0 -1
@@ -0,0 +1,73 @@
1
+ /**
2
+ * OOXML encryption key derivation ([MS-OFFCRYPTO] 2.3.4.7 and 2.3.4.11).
3
+ *
4
+ * The password spin (100,000 rounds for agile, 50,000 for Standard) runs on the synchronous
5
+ * digests of the shared `digest` area when the hash is one it computes, so a key is derived
6
+ * without awaiting Web Crypto once per round; other hashes fall back to Web Crypto.
7
+ *
8
+ * Moved from `src/pptx/core/utils/ooxml-crypto-key-derivation.ts` (see PROVENANCE.md).
9
+ */
10
+ /** Well-known block keys for agile encryption as defined in [MS-OFFCRYPTO]. */
11
+ export declare const BLOCK_KEYS: {
12
+ readonly verifierHashInput: Uint8Array<ArrayBuffer>;
13
+ readonly verifierHashValue: Uint8Array<ArrayBuffer>;
14
+ readonly encryptedKeyValue: Uint8Array<ArrayBuffer>;
15
+ readonly dataIntegrityHmacKey: Uint8Array<ArrayBuffer>;
16
+ readonly dataIntegrityHmacValue: Uint8Array<ArrayBuffer>;
17
+ };
18
+ /** The largest spin count honoured; Office writes 100,000, far more is a hostile file. */
19
+ export declare const MAX_SPIN_COUNT = 10000000;
20
+ /**
21
+ * The spun password hash for agile key derivation (the expensive part). Derive several block
22
+ * keys from one base with {@link deriveAgileKeyFromBase} instead of spinning again for each.
23
+ */
24
+ export declare function computeAgileKeyBase(password: string, salt: Uint8Array, spinCount: number, hashAlgorithm: string): Promise<Uint8Array>;
25
+ /** Finishes agile key derivation for one block key: Hfinal = H(base + blockKey), sized. */
26
+ export declare function deriveAgileKeyFromBase(base: Uint8Array, hashAlgorithm: string, blockKey: Uint8Array, keyBits: number, hashSize: number): Promise<Uint8Array>;
27
+ /**
28
+ * Derive an encryption key from a password using the OOXML agile encryption key derivation
29
+ * algorithm.
30
+ *
31
+ * @param password - User's password.
32
+ * @param salt - Salt from EncryptionInfo.
33
+ * @param spinCount - Number of hash iterations.
34
+ * @param hashAlgorithm - Hash algorithm name (e.g. "SHA-512").
35
+ * @param blockKey - Block key for deriving specific sub-keys.
36
+ * @param keyBits - Desired key length in bits.
37
+ * @param hashSize - Hash output size in bytes.
38
+ * @returns Derived key of keyBits/8 bytes.
39
+ */
40
+ export declare function deriveAgileKey(password: string, salt: Uint8Array, spinCount: number, hashAlgorithm: string, blockKey: Uint8Array, keyBits: number, hashSize: number): Promise<Uint8Array>;
41
+ /**
42
+ * Compute the expensive, password/salt-dependent part of Standard Encryption key derivation:
43
+ * `H50000`, the result of hashing salt+password and then iterating 50,000 times.
44
+ *
45
+ * Only OOXML Standard Encryption spins. The legacy `.ppt` "RC4 CryptoAPI" scheme has no spin
46
+ * rounds and lives in the pptx area (`ppt/rc4-cryptoapi-key.ts`).
47
+ */
48
+ export declare function computeStandardKeyBase(password: string, salt: Uint8Array): Promise<Uint8Array>;
49
+ /**
50
+ * Finish Standard Encryption key derivation for one block, given the expensive base from
51
+ * {@link computeStandardKeyBase}: `Hfinal = H(H50000 + blockKey)`, then always the X1/X2/X3
52
+ * extension, of which the key is the first `keySize` bits ([MS-OFFCRYPTO] 2.3.4.7). Unlike the
53
+ * binary-document RC4 CryptoAPI derivation (2.3.5.2), a 128-bit key is not a plain truncation of
54
+ * Hfinal.
55
+ */
56
+ export declare function deriveStandardKeyFromBase(base: Uint8Array, keySize: number, blockNumber?: number): Promise<Uint8Array>;
57
+ /**
58
+ * Derive the encryption key for OOXML Standard Encryption (Office 2007), [MS-OFFCRYPTO]
59
+ * 2.3.4.7 (50,000 spin rounds).
60
+ *
61
+ * @param password - User's password.
62
+ * @param salt - Salt from the verifier.
63
+ * @param keySize - Key size in bits (e.g. 128).
64
+ * @param _algIdHash - Algorithm ID for hashing (always SHA-1 in practice).
65
+ * @param blockNumber - Block number (0 for Standard Encryption).
66
+ */
67
+ export declare function deriveStandardKey(password: string, salt: Uint8Array, keySize: number, _algIdHash: number, blockNumber?: number): Promise<Uint8Array>;
68
+ /**
69
+ * Generate an IV for agile encryption: H(salt + blockKey), truncated to `blockSize` or padded
70
+ * with 0x36.
71
+ */
72
+ export declare function generateIV(hashAlgorithm: string, salt: Uint8Array, blockKey: Uint8Array, blockSize: number): Promise<Uint8Array>;
73
+ //# sourceMappingURL=key-derivation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-derivation.d.ts","sourceRoot":"","sources":["../../src/crypto/key-derivation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,+EAA+E;AAC/E,eAAO,MAAM,UAAU;;;;;;CAMb,CAAC;AAEX,0FAA0F;AAC1F,eAAO,MAAM,cAAc,WAAa,CAAC;AA+CzC;;;GAGG;AACH,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC,CAErB;AAED,2FAA2F;AAC3F,wBAAsB,sBAAsB,CAC3C,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAKrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAE9F;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,SAAI,GACb,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,SAAI,GACb,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC/B,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAMrB"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Type definitions for OOXML package encryption and decryption.
3
+ *
4
+ * Moved from `src/pptx/core/utils/ooxml-crypto-types.ts` (see PROVENANCE.md).
5
+ */
6
+ /** Supported encryption algorithms. */
7
+ export type EncryptionAlgorithm = 'AES128' | 'AES256';
8
+ /**
9
+ * Which OOXML encryption scheme to write when creating a password-protected
10
+ * file. Office can write and open either scheme; this library defaults to
11
+ * 'agile' (Office 2010+), matching Office's own default.
12
+ */
13
+ export type EncryptionScheme = 'agile' | 'standard';
14
+ /** Parsed encryption info from the EncryptionInfo stream (agile format). */
15
+ export interface EncryptionInfo {
16
+ /** Encryption version (major.minor). */
17
+ version: {
18
+ major: number;
19
+ minor: number;
20
+ };
21
+ /** Whether this is agile encryption. */
22
+ isAgile: boolean;
23
+ /** Key encryption data. */
24
+ keyData: {
25
+ saltSize: number;
26
+ blockSize: number;
27
+ keyBits: number;
28
+ hashSize: number;
29
+ cipherAlgorithm: string;
30
+ cipherChaining: string;
31
+ hashAlgorithm: string;
32
+ saltValue: Uint8Array;
33
+ };
34
+ /** Data integrity verification. */
35
+ dataIntegrity?: {
36
+ encryptedHmacKey: Uint8Array;
37
+ encryptedHmacValue: Uint8Array;
38
+ };
39
+ /** Password verifier encryption data. */
40
+ passwordKeyEncryptor: {
41
+ saltSize: number;
42
+ blockSize: number;
43
+ keyBits: number;
44
+ hashSize: number;
45
+ cipherAlgorithm: string;
46
+ cipherChaining: string;
47
+ hashAlgorithm: string;
48
+ saltValue: Uint8Array;
49
+ spinCount: number;
50
+ encryptedVerifierHashInput: Uint8Array;
51
+ encryptedVerifierHashValue: Uint8Array;
52
+ encryptedKeyValue: Uint8Array;
53
+ };
54
+ }
55
+ /**
56
+ * Standard encryption info (Office 2007 format, versions 2.x/3.x/4.x).
57
+ */
58
+ export interface StandardEncryptionInfo {
59
+ /** Encryption version (major.minor). */
60
+ version: {
61
+ major: number;
62
+ minor: number;
63
+ };
64
+ /** Always false for standard encryption. */
65
+ isAgile: false;
66
+ /** Always true for standard encryption. */
67
+ isStandard: true;
68
+ /** Encryption flags. */
69
+ flags: number;
70
+ /** Size of the encryption header in bytes. */
71
+ headerSize: number;
72
+ /** Encryption header describing algorithm and provider. */
73
+ header: {
74
+ flags: number;
75
+ algId: number;
76
+ algIdHash: number;
77
+ keySize: number;
78
+ providerType: number;
79
+ cspName: string;
80
+ };
81
+ /** Password verifier data. */
82
+ verifier: {
83
+ saltSize: number;
84
+ salt: Uint8Array;
85
+ encryptedVerifier: Uint8Array;
86
+ verifierHashSize: number;
87
+ encryptedVerifierHash: Uint8Array;
88
+ };
89
+ }
90
+ /** Encryption options for creating encrypted files. */
91
+ export interface EncryptionOptions {
92
+ /** The encryption algorithm to use (defaults to AES256). */
93
+ algorithm?: EncryptionAlgorithm;
94
+ /** Number of hash iterations for key derivation (defaults to 100000). Lower values speed up tests. */
95
+ spinCount?: number;
96
+ /**
97
+ * Which encryption scheme to write (defaults to 'agile'). 'standard'
98
+ * writes the ECMA-376 Standard scheme (Office 2007-compatible: a single
99
+ * password-derived AES-CBC key with a zero IV over the whole package),
100
+ * mirroring the scheme this library already knows how to decrypt.
101
+ */
102
+ encryptionScheme?: EncryptionScheme;
103
+ }
104
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/crypto/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uCAAuC;AACvC,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,CAAC;AAEpD,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC9B,wCAAwC;IACxC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,OAAO,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,UAAU,CAAC;KACtB,CAAC;IACF,mCAAmC;IACnC,aAAa,CAAC,EAAE;QACf,gBAAgB,EAAE,UAAU,CAAC;QAC7B,kBAAkB,EAAE,UAAU,CAAC;KAC/B,CAAC;IACF,yCAAyC;IACzC,oBAAoB,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,UAAU,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,0BAA0B,EAAE,UAAU,CAAC;QACvC,0BAA0B,EAAE,UAAU,CAAC;QACvC,iBAAiB,EAAE,UAAU,CAAC;KAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,wCAAwC;IACxC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,4CAA4C;IAC5C,OAAO,EAAE,KAAK,CAAC;IACf,2CAA2C;IAC3C,UAAU,EAAE,IAAI,CAAC;IACjB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,MAAM,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,8BAA8B;IAC9B,QAAQ,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,UAAU,CAAC;QACjB,iBAAiB,EAAE,UAAU,CAAC;QAC9B,gBAAgB,EAAE,MAAM,CAAC;QACzB,qBAAqB,EAAE,UAAU,CAAC;KAClC,CAAC;CACF;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IACjC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACpC"}
@@ -1071,6 +1071,8 @@ function isSafeHyperlinkHref(href) {
1071
1071
  const scheme = /^([a-z][a-z0-9+.-]*:)/i.exec(href.trim())?.[1];
1072
1072
  return scheme !== void 0 && SAFE_SCHEMES.has(scheme.toLowerCase());
1073
1073
  }
1074
+ var OPEN_SCHEMES = /* @__PURE__ */ new Set(["http", "https", "mailto"]);
1075
+ /* @__PURE__ */ new Set([...OPEN_SCHEMES, "ftp", "file"]);
1074
1076
 
1075
1077
  // src/docx/zip-parts.ts
1076
1078
  var DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels";
@@ -1065,6 +1065,8 @@ function isSafeHyperlinkHref(href) {
1065
1065
  const scheme = /^([a-z][a-z0-9+.-]*:)/i.exec(href.trim())?.[1];
1066
1066
  return scheme !== void 0 && SAFE_SCHEMES.has(scheme.toLowerCase());
1067
1067
  }
1068
+ var OPEN_SCHEMES = /* @__PURE__ */ new Set(["http", "https", "mailto"]);
1069
+ /* @__PURE__ */ new Set([...OPEN_SCHEMES, "ftp", "file"]);
1068
1070
 
1069
1071
  // src/docx/zip-parts.ts
1070
1072
  var DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels";
@@ -1708,6 +1708,8 @@ function isSafeHyperlinkHref(href) {
1708
1708
  const scheme = /^([a-z][a-z0-9+.-]*:)/i.exec(href.trim())?.[1];
1709
1709
  return scheme !== void 0 && SAFE_SCHEMES.has(scheme.toLowerCase());
1710
1710
  }
1711
+ var OPEN_SCHEMES = /* @__PURE__ */ new Set(["http", "https", "mailto"]);
1712
+ /* @__PURE__ */ new Set([...OPEN_SCHEMES, "ftp", "file"]);
1711
1713
 
1712
1714
  // src/docx/zip-parts.ts
1713
1715
  var DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels";
@@ -1702,6 +1702,8 @@ function isSafeHyperlinkHref(href) {
1702
1702
  const scheme = /^([a-z][a-z0-9+.-]*:)/i.exec(href.trim())?.[1];
1703
1703
  return scheme !== void 0 && SAFE_SCHEMES.has(scheme.toLowerCase());
1704
1704
  }
1705
+ var OPEN_SCHEMES = /* @__PURE__ */ new Set(["http", "https", "mailto"]);
1706
+ /* @__PURE__ */ new Set([...OPEN_SCHEMES, "ftp", "file"]);
1705
1707
 
1706
1708
  // src/docx/zip-parts.ts
1707
1709
  var DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels";
@@ -1,6 +1,18 @@
1
1
  import type { LoadedDocument } from '../model.js';
2
- export type DocumentFormat = 'docx' | 'doc';
2
+ /**
3
+ * A detected document format. `'encrypted'` is a .docx saved with a password to open (a compound
4
+ * file holding EncryptionInfo and EncryptedPackage), not a Word 97-2003 .doc.
5
+ */
6
+ export type DocumentFormat = 'docx' | 'doc' | 'encrypted';
3
7
  export declare function detectDocumentFormat(input: Uint8Array | ArrayBuffer): DocumentFormat;
8
+ export interface LoadDocumentOptions {
9
+ /**
10
+ * The password to open an encrypted (password-protected) .docx. Without it such a file throws
11
+ * `PasswordRequiredError` (`code: 'password-required'`); a wrong one throws
12
+ * `IncorrectPasswordError` (`code: 'incorrect-password'`).
13
+ */
14
+ password?: string;
15
+ }
4
16
  /** Sniff content, never trust a user-supplied filename extension. */
5
- export declare function loadDocument(input: Uint8Array | ArrayBuffer): Promise<LoadedDocument>;
17
+ export declare function loadDocument(input: Uint8Array | ArrayBuffer, options?: LoadDocumentOptions): Promise<LoadedDocument>;
6
18
  //# sourceMappingURL=detect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/docx/load/detect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC;AAC5C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,CASpF;AACD,qEAAqE;AACrE,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAE3F"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/docx/load/detect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;AAK1D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,CAQpF;AAED,MAAM,WAAW,mBAAmB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,qEAAqE;AACrE,wBAAsB,YAAY,CACjC,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,OAAO,GAAE,mBAAwB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAczB"}