@e-sig/core 0.6.0 → 0.7.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 (85) hide show
  1. package/LICENSE +1 -1
  2. package/dist/index.d.ts +3 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/pem-signer.d.ts +26 -5
  7. package/dist/pem-signer.d.ts.map +1 -1
  8. package/dist/pem-signer.js +84 -13
  9. package/dist/pem-signer.js.map +1 -1
  10. package/dist/pq-seal.d.ts +53 -3
  11. package/dist/pq-seal.d.ts.map +1 -1
  12. package/dist/pq-seal.js +92 -8
  13. package/dist/pq-seal.js.map +1 -1
  14. package/dist/pq-verify.d.ts +22 -0
  15. package/dist/pq-verify.d.ts.map +1 -1
  16. package/dist/pq-verify.js +16 -0
  17. package/dist/pq-verify.js.map +1 -1
  18. package/dist/render-pdf.d.ts +5 -5
  19. package/dist/render-pdf.d.ts.map +1 -1
  20. package/dist/render-pdf.js +51 -17
  21. package/dist/render-pdf.js.map +1 -1
  22. package/dist/sign-pdf.d.ts +45 -4
  23. package/dist/sign-pdf.d.ts.map +1 -1
  24. package/dist/sign-pdf.js +24 -1
  25. package/dist/sign-pdf.js.map +1 -1
  26. package/dist/types.d.ts +36 -0
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/vendor/placeholder-plain/LICENSE-signpdf.md +47 -0
  29. package/dist/vendor/placeholder-plain/createBufferPageWithAnnotation.d.ts +6 -0
  30. package/dist/vendor/placeholder-plain/createBufferPageWithAnnotation.d.ts.map +1 -0
  31. package/dist/vendor/placeholder-plain/createBufferPageWithAnnotation.js +38 -0
  32. package/dist/vendor/placeholder-plain/createBufferPageWithAnnotation.js.map +1 -0
  33. package/dist/vendor/placeholder-plain/createBufferRootWithAcroform.d.ts +6 -0
  34. package/dist/vendor/placeholder-plain/createBufferRootWithAcroform.d.ts.map +1 -0
  35. package/dist/vendor/placeholder-plain/createBufferRootWithAcroform.js +15 -0
  36. package/dist/vendor/placeholder-plain/createBufferRootWithAcroform.js.map +1 -0
  37. package/dist/vendor/placeholder-plain/createBufferTrailer.d.ts +4 -0
  38. package/dist/vendor/placeholder-plain/createBufferTrailer.d.ts.map +1 -0
  39. package/dist/vendor/placeholder-plain/createBufferTrailer.js +26 -0
  40. package/dist/vendor/placeholder-plain/createBufferTrailer.js.map +1 -0
  41. package/dist/vendor/placeholder-plain/findObject.d.ts +4 -0
  42. package/dist/vendor/placeholder-plain/findObject.d.ts.map +1 -0
  43. package/dist/vendor/placeholder-plain/findObject.js +18 -0
  44. package/dist/vendor/placeholder-plain/findObject.js.map +1 -0
  45. package/dist/vendor/placeholder-plain/getIndexFromRef.d.ts +4 -0
  46. package/dist/vendor/placeholder-plain/getIndexFromRef.d.ts.map +1 -0
  47. package/dist/vendor/placeholder-plain/getIndexFromRef.js +13 -0
  48. package/dist/vendor/placeholder-plain/getIndexFromRef.js.map +1 -0
  49. package/dist/vendor/placeholder-plain/getPageRef.d.ts +6 -0
  50. package/dist/vendor/placeholder-plain/getPageRef.d.ts.map +1 -0
  51. package/dist/vendor/placeholder-plain/getPageRef.js +18 -0
  52. package/dist/vendor/placeholder-plain/getPageRef.js.map +1 -0
  53. package/dist/vendor/placeholder-plain/getPagesDictionaryRef.d.ts +3 -0
  54. package/dist/vendor/placeholder-plain/getPagesDictionaryRef.d.ts.map +1 -0
  55. package/dist/vendor/placeholder-plain/getPagesDictionaryRef.js +12 -0
  56. package/dist/vendor/placeholder-plain/getPagesDictionaryRef.js.map +1 -0
  57. package/dist/vendor/placeholder-plain/index.d.ts +2 -0
  58. package/dist/vendor/placeholder-plain/index.d.ts.map +1 -0
  59. package/dist/vendor/placeholder-plain/index.js +4 -0
  60. package/dist/vendor/placeholder-plain/index.js.map +1 -0
  61. package/dist/vendor/placeholder-plain/pdfObject.d.ts +13 -0
  62. package/dist/vendor/placeholder-plain/pdfObject.d.ts.map +1 -0
  63. package/dist/vendor/placeholder-plain/pdfObject.js +142 -0
  64. package/dist/vendor/placeholder-plain/pdfObject.js.map +1 -0
  65. package/dist/vendor/placeholder-plain/pdfkitAddPlaceholder.d.ts +49 -0
  66. package/dist/vendor/placeholder-plain/pdfkitAddPlaceholder.d.ts.map +1 -0
  67. package/dist/vendor/placeholder-plain/pdfkitAddPlaceholder.js +115 -0
  68. package/dist/vendor/placeholder-plain/pdfkitAddPlaceholder.js.map +1 -0
  69. package/dist/vendor/placeholder-plain/plainAddPlaceholder.d.ts +41 -0
  70. package/dist/vendor/placeholder-plain/plainAddPlaceholder.d.ts.map +1 -0
  71. package/dist/vendor/placeholder-plain/plainAddPlaceholder.js +95 -0
  72. package/dist/vendor/placeholder-plain/plainAddPlaceholder.js.map +1 -0
  73. package/dist/vendor/placeholder-plain/readPdf.d.ts +20 -0
  74. package/dist/vendor/placeholder-plain/readPdf.d.ts.map +1 -0
  75. package/dist/vendor/placeholder-plain/readPdf.js +47 -0
  76. package/dist/vendor/placeholder-plain/readPdf.js.map +1 -0
  77. package/dist/vendor/placeholder-plain/readRefTable.d.ts +17 -0
  78. package/dist/vendor/placeholder-plain/readRefTable.d.ts.map +1 -0
  79. package/dist/vendor/placeholder-plain/readRefTable.js +84 -0
  80. package/dist/vendor/placeholder-plain/readRefTable.js.map +1 -0
  81. package/dist/vendor/placeholder-plain/xrefToRefMap.d.ts +3 -0
  82. package/dist/vendor/placeholder-plain/xrefToRefMap.d.ts.map +1 -0
  83. package/dist/vendor/placeholder-plain/xrefToRefMap.js +38 -0
  84. package/dist/vendor/placeholder-plain/xrefToRefMap.js.map +1 -0
  85. package/package.json +4 -5
@@ -0,0 +1,95 @@
1
+ // Vendored from @signpdf/placeholder-plain@3.3.0 (MIT). See LICENSE-signpdf.md.
2
+ // Faithful TypeScript port — logic and byte-emitting paths are unchanged.
3
+ /* eslint-disable no-underscore-dangle */
4
+ import { DEFAULT_SIGNATURE_LENGTH, SUBFILTER_ADOBE_PKCS7_DETACHED, removeTrailingNewLine, PDFKitReferenceMock, } from "@signpdf/utils";
5
+ // NOT @signpdf/utils' PDFObject: that one splices any value containing "<<"
6
+ // into the dictionary raw and emits names unescaped, which lets caller-supplied
7
+ // option strings inject keys into the signature dictionary. See pdfObject.ts.
8
+ import { PDFObject } from "./pdfObject.js";
9
+ import { pdfkitAddPlaceholder } from "./pdfkitAddPlaceholder.js";
10
+ import getIndexFromRef from "./getIndexFromRef.js";
11
+ import readPdf from "./readPdf.js";
12
+ import getPageRef from "./getPageRef.js";
13
+ import createBufferRootWithAcroform from "./createBufferRootWithAcroform.js";
14
+ import createBufferPageWithAnnotation from "./createBufferPageWithAnnotation.js";
15
+ import createBufferTrailer from "./createBufferTrailer.js";
16
+ const getAcroFormRef = (slice) => {
17
+ const bufferRootWithAcroformRefRegex = /\/AcroForm\s+(\d+\s\d+\sR)/g;
18
+ const match = bufferRootWithAcroformRefRegex.exec(slice);
19
+ if (match != null && match[1] != null && match[1] !== "") {
20
+ return match[1];
21
+ }
22
+ return undefined;
23
+ };
24
+ /**
25
+ * Adds a signature placeholder to a PDF Buffer.
26
+ *
27
+ * This contrasts with the default pdfkit-based implementation.
28
+ * Parsing is done using simple string operations.
29
+ * Adding is done with `Buffer.concat`.
30
+ * This allows node-signpdf to be used on any PDF and
31
+ * not only on a freshly created through PDFKit one.
32
+ */
33
+ export const plainAddPlaceholder = ({ pdfBuffer, reason, contactInfo, name, location, signingTime = undefined, signatureLength = DEFAULT_SIGNATURE_LENGTH, subFilter = SUBFILTER_ADOBE_PKCS7_DETACHED, widgetRect = [0, 0, 0, 0], appName = undefined, }) => {
34
+ let pdf = removeTrailingNewLine(pdfBuffer);
35
+ const info = readPdf(pdf);
36
+ const pageRef = getPageRef(pdf, info);
37
+ const pageIndex = getIndexFromRef(info.xref, pageRef);
38
+ const addedReferences = new Map();
39
+ const pdfKitMock = {
40
+ ref: (input, knownIndex) => {
41
+ info.xref.maxIndex += 1;
42
+ const index = knownIndex != null ? knownIndex : info.xref.maxIndex;
43
+ addedReferences.set(index, pdf.length + 1); // + 1 new line
44
+ pdf = Buffer.concat([
45
+ pdf,
46
+ Buffer.from("\n"),
47
+ Buffer.from(`${index} 0 obj\n`),
48
+ Buffer.from(PDFObject.convert(input)),
49
+ Buffer.from("\nendobj\n"),
50
+ ]);
51
+ return new PDFKitReferenceMock(info.xref.maxIndex);
52
+ },
53
+ page: {
54
+ dictionary: new PDFKitReferenceMock(pageIndex, {
55
+ data: {
56
+ Annots: [],
57
+ },
58
+ }),
59
+ },
60
+ _root: {
61
+ data: {},
62
+ },
63
+ };
64
+ const acroFormRef = getAcroFormRef(info.root);
65
+ if (acroFormRef) {
66
+ pdfKitMock._root.data.AcroForm = acroFormRef;
67
+ }
68
+ const { form, widget } = pdfkitAddPlaceholder({
69
+ pdf: pdfKitMock,
70
+ pdfBuffer,
71
+ reason,
72
+ contactInfo,
73
+ name,
74
+ location,
75
+ signingTime,
76
+ signatureLength,
77
+ subFilter,
78
+ widgetRect,
79
+ appName,
80
+ });
81
+ if (!getAcroFormRef(pdf.toString())) {
82
+ const rootIndex = getIndexFromRef(info.xref, info.rootRef);
83
+ addedReferences.set(rootIndex, pdf.length + 1);
84
+ pdf = Buffer.concat([pdf, Buffer.from("\n"), createBufferRootWithAcroform(pdf, info, form)]);
85
+ }
86
+ addedReferences.set(pageIndex, pdf.length + 1);
87
+ pdf = Buffer.concat([
88
+ pdf,
89
+ Buffer.from("\n"),
90
+ createBufferPageWithAnnotation(pdf, info, pageRef, widget),
91
+ ]);
92
+ pdf = Buffer.concat([pdf, Buffer.from("\n"), createBufferTrailer(pdf, info, addedReferences)]);
93
+ return pdf;
94
+ };
95
+ //# sourceMappingURL=plainAddPlaceholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plainAddPlaceholder.js","sourceRoot":"","sources":["../../../src/vendor/placeholder-plain/plainAddPlaceholder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type ReadRefTableReturnType } from "./readRefTable.js";
2
+ export declare const getValue: (trailer: Buffer, key: string) => string | undefined;
3
+ export interface ReadPdfReturnType {
4
+ xref: ReadRefTableReturnType;
5
+ rootRef: string;
6
+ root: string;
7
+ infoRef: string | undefined;
8
+ trailerStart: number;
9
+ previousXrefs: unknown[];
10
+ xRefPosition: number;
11
+ }
12
+ /**
13
+ * Simplified parsing of a PDF Buffer.
14
+ * Extracts reference table, root info and trailer start.
15
+ *
16
+ * See section 7.5.5 (File Trailer) of the PDF specs.
17
+ */
18
+ declare const readPdf: (pdfBuffer: Buffer) => ReadPdfReturnType;
19
+ export default readPdf;
20
+ //# sourceMappingURL=readPdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readPdf.d.ts","sourceRoot":"","sources":["../../../src/vendor/placeholder-plain/readPdf.ts"],"names":[],"mappings":"AAEA,OAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG9E,eAAO,MAAM,QAAQ,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,KAAG,MAAM,GAAG,SAchE,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,QAAA,MAAM,OAAO,GAAI,WAAW,MAAM,KAAG,iBAqBpC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,47 @@
1
+ // Vendored from @signpdf/placeholder-plain@3.3.0 (MIT). See LICENSE-signpdf.md.
2
+ // Faithful TypeScript port — logic and byte-emitting paths are unchanged.
3
+ import readRefTable from "./readRefTable.js";
4
+ import findObject from "./findObject.js";
5
+ export const getValue = (trailer, key) => {
6
+ let index = trailer.indexOf(key);
7
+ if (index === -1) {
8
+ return undefined;
9
+ }
10
+ const slice = trailer.slice(index);
11
+ index = slice.indexOf("/", 1);
12
+ if (index === -1) {
13
+ index = slice.indexOf(">", 1);
14
+ }
15
+ return slice
16
+ .slice(key.length + 1, index)
17
+ .toString()
18
+ .trim(); // key + at least one space
19
+ };
20
+ /**
21
+ * Simplified parsing of a PDF Buffer.
22
+ * Extracts reference table, root info and trailer start.
23
+ *
24
+ * See section 7.5.5 (File Trailer) of the PDF specs.
25
+ */
26
+ const readPdf = (pdfBuffer) => {
27
+ // Extract the trailer dictionary.
28
+ const trailerStart = pdfBuffer.lastIndexOf("trailer");
29
+ // The trailer is followed by xref. Then an EOF. EOF's length is 6 characters.
30
+ const trailer = pdfBuffer.slice(trailerStart, pdfBuffer.length - 6);
31
+ const xRefPosition = parseInt(trailer.slice(trailer.lastIndexOf("startxref") + 10).toString());
32
+ const refTable = readRefTable(pdfBuffer);
33
+ const rootRef = getValue(trailer, "/Root");
34
+ const root = findObject(pdfBuffer, refTable, rootRef).toString();
35
+ const infoRef = getValue(trailer, "/Info");
36
+ return {
37
+ xref: refTable,
38
+ rootRef,
39
+ root,
40
+ infoRef,
41
+ trailerStart,
42
+ previousXrefs: [],
43
+ xRefPosition,
44
+ };
45
+ };
46
+ export default readPdf;
47
+ //# sourceMappingURL=readPdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readPdf.js","sourceRoot":"","sources":["../../../src/vendor/placeholder-plain/readPdf.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,OAAO,YAA6C,MAAM,mBAAmB,CAAC;AAC9E,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAEzC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,GAAW,EAAsB,EAAE;IAC3E,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC;SAC5B,QAAQ,EAAE;SACV,IAAI,EAAE,CAAC,CAAC,2BAA2B;AACxC,CAAC,CAAC;AAYF;;;;;GAKG;AACH,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAqB,EAAE;IACvD,kCAAkC;IAClC,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACtD,8EAA8E;IAC9E,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,QAAQ,CAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAChE,CAAC;IACF,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAW,CAAC;IACrD,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,IAAI;QACJ,OAAO;QACP,YAAY;QACZ,aAAa,EAAE,EAAE;QACjB,YAAY;KACb,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,17 @@
1
+ export type FullXrefTable = Map<number, number>;
2
+ export interface ReadRefTableReturnType {
3
+ startingIndex: number;
4
+ maxIndex: number;
5
+ offsets: FullXrefTable;
6
+ }
7
+ interface GetXrefReturnType {
8
+ size: number;
9
+ prev: number | undefined;
10
+ xRefContent: Map<number, number>;
11
+ }
12
+ export declare const getLastTrailerPosition: (pdf: Buffer) => number;
13
+ export declare const getXref: (pdf: Buffer, position: number) => GetXrefReturnType;
14
+ export declare const getFullXrefTable: (pdf: Buffer) => FullXrefTable;
15
+ declare const readRefTable: (pdf: Buffer) => ReadRefTableReturnType;
16
+ export default readRefTable;
17
+ //# sourceMappingURL=readRefTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readRefTable.d.ts","sourceRoot":"","sources":["../../../src/vendor/placeholder-plain/readRefTable.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,sBAAsB,GAAI,KAAK,MAAM,KAAG,MAOpD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,KAAG,iBAsDvD,CAAC;AAYF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,aAG9C,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,sBASnC,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,84 @@
1
+ // Vendored from @signpdf/placeholder-plain@3.3.0 (MIT). See LICENSE-signpdf.md.
2
+ // Faithful TypeScript port — logic and byte-emitting paths are unchanged.
3
+ // (Upstream carried `prev` as the matched digit string and let Buffer.slice
4
+ // coerce it; parseInt of an all-digit string yields the identical position.)
5
+ import { SignPdfError } from "@signpdf/utils";
6
+ import xrefToRefMap from "./xrefToRefMap.js";
7
+ export const getLastTrailerPosition = (pdf) => {
8
+ const trailerStart = pdf.lastIndexOf(Buffer.from("trailer", "utf8"));
9
+ const trailer = pdf.slice(trailerStart, pdf.length - 6);
10
+ const xRefPosition = trailer
11
+ .slice(trailer.lastIndexOf(Buffer.from("startxref", "utf8")) + 10)
12
+ .toString();
13
+ return parseInt(xRefPosition);
14
+ };
15
+ export const getXref = (pdf, position) => {
16
+ let refTable = pdf.slice(position); // slice starting from where xref starts
17
+ const realPosition = refTable.indexOf(Buffer.from("xref", "utf8"));
18
+ if (realPosition === -1) {
19
+ throw new SignPdfError(`Could not find xref anywhere at or after ${position}.`, SignPdfError.TYPE_PARSE);
20
+ }
21
+ if (realPosition > 0) {
22
+ const prefix = refTable.slice(0, realPosition);
23
+ if (prefix.toString().replace(/\s*/g, "") !== "") {
24
+ throw new SignPdfError(`Expected xref at ${position} but found other content.`, SignPdfError.TYPE_PARSE);
25
+ }
26
+ }
27
+ const nextEofPosition = refTable.indexOf(Buffer.from("%%EOF", "utf8"));
28
+ if (nextEofPosition === -1) {
29
+ throw new SignPdfError("Expected EOF after xref and trailer but could not find one.", SignPdfError.TYPE_PARSE);
30
+ }
31
+ refTable = refTable.slice(0, nextEofPosition);
32
+ refTable = refTable.slice(realPosition + 4); // move ahead with the "xref"
33
+ refTable = refTable.slice(refTable.indexOf("\n") + 1); // move after the next new line
34
+ // extract the size
35
+ const sizeString = refTable.toString().split("/Size")[1];
36
+ if (!sizeString) {
37
+ throw new SignPdfError("Size not found in xref table.", SignPdfError.TYPE_PARSE);
38
+ }
39
+ const sizeMatch = /^\s*(\d+)/.exec(sizeString);
40
+ if (sizeMatch === null) {
41
+ throw new SignPdfError("Failed to parse size of xref table.", SignPdfError.TYPE_PARSE);
42
+ }
43
+ const size = parseInt(sizeMatch[1]);
44
+ const [objects, infos] = refTable.toString().split("trailer");
45
+ const isContainingPrev = infos.split("/Prev")[1] != null;
46
+ let prev;
47
+ if (isContainingPrev) {
48
+ const pagesRefRegex = /Prev (\d+)/g;
49
+ const match = pagesRefRegex.exec(infos);
50
+ const [, prevPosition] = match;
51
+ prev = parseInt(prevPosition);
52
+ }
53
+ const xRefContent = xrefToRefMap(objects);
54
+ return {
55
+ size,
56
+ prev,
57
+ xRefContent,
58
+ };
59
+ };
60
+ const getFullXref = (pdf, xRefPosition) => {
61
+ const lastXrefTable = getXref(pdf, xRefPosition);
62
+ if (lastXrefTable.prev === undefined) {
63
+ return lastXrefTable.xRefContent;
64
+ }
65
+ const partOfXrefTable = getFullXref(pdf, lastXrefTable.prev);
66
+ const mergedXrefTable = new Map([...partOfXrefTable, ...lastXrefTable.xRefContent]);
67
+ return mergedXrefTable;
68
+ };
69
+ export const getFullXrefTable = (pdf) => {
70
+ const lastTrailerPosition = getLastTrailerPosition(pdf);
71
+ return getFullXref(pdf, lastTrailerPosition);
72
+ };
73
+ const readRefTable = (pdf) => {
74
+ const fullXrefTable = getFullXrefTable(pdf);
75
+ const startingIndex = 0;
76
+ const maxIndex = Math.max(...fullXrefTable.keys());
77
+ return {
78
+ startingIndex,
79
+ maxIndex,
80
+ offsets: fullXrefTable,
81
+ };
82
+ };
83
+ export default readRefTable;
84
+ //# sourceMappingURL=readRefTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readRefTable.js","sourceRoot":"","sources":["../../../src/vendor/placeholder-plain/readRefTable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const xrefToRefMap: (xrefString: string) => Map<number, number>;
2
+ export default xrefToRefMap;
3
+ //# sourceMappingURL=xrefToRefMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xrefToRefMap.d.ts","sourceRoot":"","sources":["../../../src/vendor/placeholder-plain/xrefToRefMap.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,YAAY,GAAI,YAAY,MAAM,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAmC5D,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,38 @@
1
+ // Vendored from @signpdf/placeholder-plain@3.3.0 (MIT). See LICENSE-signpdf.md.
2
+ // Faithful TypeScript port — logic and byte-emitting paths are unchanged.
3
+ import { SignPdfError } from "@signpdf/utils";
4
+ const xrefToRefMap = (xrefString) => {
5
+ const lines = xrefString.split("\n").filter((l) => l !== "");
6
+ let index = 0;
7
+ let expectedLines = 0;
8
+ const xref = new Map();
9
+ lines.forEach((line) => {
10
+ const split = line.split(" ");
11
+ if (split.length === 2) {
12
+ index = parseInt(split[0]);
13
+ expectedLines = parseInt(split[1]);
14
+ return;
15
+ }
16
+ if (expectedLines <= 0) {
17
+ throw new SignPdfError("Too many lines in xref table.", SignPdfError.TYPE_PARSE);
18
+ }
19
+ expectedLines -= 1;
20
+ const [offset, , inUse] = split;
21
+ if (inUse.trim() === "f") {
22
+ index += 1;
23
+ return;
24
+ }
25
+ if (inUse.trim() !== "n") {
26
+ throw new SignPdfError(`Unknown in-use flag "${inUse}". Expected "n" or "f".`, SignPdfError.TYPE_PARSE);
27
+ }
28
+ if (!/^\d+$/.test(offset.trim())) {
29
+ throw new SignPdfError(`Expected integer offset. Got "${offset}".`, SignPdfError.TYPE_PARSE);
30
+ }
31
+ const storeOffset = parseInt(offset.trim());
32
+ xref.set(index, storeOffset);
33
+ index += 1;
34
+ });
35
+ return xref;
36
+ };
37
+ export default xrefToRefMap;
38
+ //# sourceMappingURL=xrefToRefMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xrefToRefMap.js","sourceRoot":"","sources":["../../../src/vendor/placeholder-plain/xrefToRefMap.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAuB,EAAE;IAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QACD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,YAAY,CAAC,+BAA+B,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QACnF,CAAC;QACD,aAAa,IAAI,CAAC,CAAC;QACnB,MAAM,CAAC,MAAM,EAAE,AAAD,EAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAChC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC;YACX,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CACpB,wBAAwB,KAAK,yBAAyB,EACtD,YAAY,CAAC,UAAU,CACxB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,YAAY,CAAC,iCAAiC,MAAM,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@e-sig/core",
3
- "version": "0.6.0",
4
- "description": "Self-contained PKCS#7 PDF signing no SaaS, no metering, no per-doc fees. Render→sign→verify engine + pluggable persistence interfaces + end-to-end signDocument() orchestrator.",
3
+ "version": "0.7.0",
4
+ "description": "Self-contained PKCS#7 PDF signing \u2014 no SaaS, no metering, no per-doc fees. Render\u2192sign\u2192verify engine + pluggable persistence interfaces + end-to-end signDocument() orchestrator.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -41,7 +41,7 @@
41
41
  "LICENSE"
42
42
  ],
43
43
  "scripts": {
44
- "build": "tsc -p tsconfig.build.json",
44
+ "build": "tsc -p tsconfig.build.json && node -e \"fs.copyFileSync('src/vendor/placeholder-plain/LICENSE-signpdf.md','dist/vendor/placeholder-plain/LICENSE-signpdf.md')\"",
45
45
  "clean": "rm -rf dist",
46
46
  "prepublishOnly": "npm run clean && npm run build",
47
47
  "pretest": "npm run build",
@@ -75,7 +75,6 @@
75
75
  "homepage": "https://github.com/vmvtech/esig-suite/tree/main/packages/esig-core#readme",
76
76
  "dependencies": {
77
77
  "@noble/post-quantum": "^0.6.1",
78
- "@signpdf/placeholder-plain": "^3.3.0",
79
78
  "@signpdf/signpdf": "^3.3.0",
80
79
  "@signpdf/utils": "^3.3.0",
81
80
  "node-forge": "^1.4.0",
@@ -94,7 +93,7 @@
94
93
  "@types/node": "^22.0.0",
95
94
  "@types/node-forge": "^1.3.0",
96
95
  "typescript": "^5.4.0",
97
- "vitest": "^2.1.9"
96
+ "vitest": "^4.1.10"
98
97
  },
99
98
  "publishConfig": {
100
99
  "registry": "https://registry.npmjs.org",