@e-sig/core 0.4.0 → 0.5.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.
- package/dist/adapters.d.ts +1 -1
- package/dist/adapters.d.ts.map +1 -1
- package/dist/envelope.d.ts +135 -0
- package/dist/envelope.d.ts.map +1 -0
- package/dist/envelope.js +208 -0
- package/dist/envelope.js.map +1 -0
- package/dist/fs-adapters.d.ts +49 -0
- package/dist/fs-adapters.d.ts.map +1 -0
- package/dist/fs-adapters.js +204 -0
- package/dist/fs-adapters.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/signature-block.js +1 -1
- package/dist/signature-block.js.map +1 -1
- package/dist/verify-pdf.d.ts.map +1 -1
- package/dist/verify-pdf.js +30 -2
- package/dist/verify-pdf.js.map +1 -1
- package/package.json +6 -1
package/dist/adapters.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export interface CertStore {
|
|
|
39
39
|
* Standard action vocabulary. Implementations should allow these at minimum
|
|
40
40
|
* but may extend the set (caller passes the action string through).
|
|
41
41
|
*/
|
|
42
|
-
export type EsigAuditAction = "cert.created" | "cert.rotated" | "cert.deactivated" | "pdf.rendered" | "pdf.signed" | "pdf.verified" | "consent.recorded";
|
|
42
|
+
export type EsigAuditAction = "cert.created" | "cert.rotated" | "cert.deactivated" | "pdf.rendered" | "pdf.signed" | "pdf.verified" | "consent.recorded" | "envelope.created" | "envelope.signed" | "envelope.declined" | "envelope.voided" | "envelope.completed";
|
|
43
43
|
export interface AuditLogEntry {
|
|
44
44
|
tenantId: string;
|
|
45
45
|
action: EsigAuditAction | string;
|
package/dist/adapters.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,eAAe,EAAE,UAAU,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,aAAa,CAAC;QACzB,eAAe,EAAE,UAAU,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAExB,sDAAsD;IACtD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,mGAAmG;IACnG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CACzD;AAID;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,YAAY,GACZ,cAAc,GACd,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,eAAe,EAAE,UAAU,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,aAAa,CAAC;QACzB,eAAe,EAAE,UAAU,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAExB,sDAAsD;IACtD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,mGAAmG;IACnG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CACzD;AAID;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,GAAG,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACpD;AAID;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,MAAM,CAAC,KAAK,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,UAAU,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9B"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
export type EnvelopeStatus = "sent" | "partially_signed" | "completed" | "voided" | "expired";
|
|
2
|
+
export type EnvelopeSignerStatus = "pending" | "signed" | "declined";
|
|
3
|
+
export interface EnvelopeSigner {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
email: string;
|
|
7
|
+
/** Optional role shown above the signature block ("Witness", "CEO", ...). */
|
|
8
|
+
roleLabel?: string;
|
|
9
|
+
/** 1-based signing order; equal values sign in parallel. Default 1. */
|
|
10
|
+
order: number;
|
|
11
|
+
status: EnvelopeSignerStatus;
|
|
12
|
+
/** SHA-256 (hex) of the signing token. The raw token is never persisted. */
|
|
13
|
+
tokenHash: string;
|
|
14
|
+
signedAt?: Date;
|
|
15
|
+
/** Drawn signature (data:image/... URL), set when the signer signs. */
|
|
16
|
+
signatureImageDataUrl?: string;
|
|
17
|
+
declinedAt?: Date;
|
|
18
|
+
declineReason?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface Envelope {
|
|
21
|
+
id: string;
|
|
22
|
+
tenantId: string;
|
|
23
|
+
title: string;
|
|
24
|
+
/** Base document HTML; signature blocks are appended at completion. */
|
|
25
|
+
html: string;
|
|
26
|
+
status: EnvelopeStatus;
|
|
27
|
+
signers: EnvelopeSigner[];
|
|
28
|
+
createdAt: Date;
|
|
29
|
+
expiresAt?: Date;
|
|
30
|
+
completedAt?: Date;
|
|
31
|
+
voidedAt?: Date;
|
|
32
|
+
metadata?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
export interface EnvelopeStore {
|
|
35
|
+
insert(envelope: Envelope): Promise<Envelope>;
|
|
36
|
+
/** Full-envelope replace by id. Apply optimistic concurrency here if needed. */
|
|
37
|
+
update(envelope: Envelope): Promise<Envelope>;
|
|
38
|
+
findById(tenantId: string, id: string): Promise<Envelope | null>;
|
|
39
|
+
/** Look up the envelope containing a signer with this token hash (unique). */
|
|
40
|
+
findByTokenHash(tokenHash: string): Promise<Envelope | null>;
|
|
41
|
+
}
|
|
42
|
+
export declare class EnvelopeError extends Error {
|
|
43
|
+
code: "invalid_input" | "invalid_token" | "not_your_turn" | "already_signed" | "not_signable" | "not_complete";
|
|
44
|
+
constructor(code: "invalid_input" | "invalid_token" | "not_your_turn" | "already_signed" | "not_signable" | "not_complete", message: string);
|
|
45
|
+
}
|
|
46
|
+
export interface CreateEnvelopeInput {
|
|
47
|
+
store: EnvelopeStore;
|
|
48
|
+
tenantId: string;
|
|
49
|
+
title: string;
|
|
50
|
+
html: string;
|
|
51
|
+
signers: Array<{
|
|
52
|
+
name: string;
|
|
53
|
+
email: string;
|
|
54
|
+
roleLabel?: string;
|
|
55
|
+
order?: number;
|
|
56
|
+
}>;
|
|
57
|
+
expiresAt?: Date;
|
|
58
|
+
metadata?: Record<string, unknown>;
|
|
59
|
+
}
|
|
60
|
+
export interface CreateEnvelopeResult {
|
|
61
|
+
envelope: Envelope;
|
|
62
|
+
/**
|
|
63
|
+
* The raw signing tokens, ONE PER SIGNER, returned only here. Deliver each
|
|
64
|
+
* to its signer out-of-band (email link etc.) — they cannot be recovered.
|
|
65
|
+
*/
|
|
66
|
+
signingTokens: Array<{
|
|
67
|
+
signerId: string;
|
|
68
|
+
email: string;
|
|
69
|
+
token: string;
|
|
70
|
+
}>;
|
|
71
|
+
}
|
|
72
|
+
export declare function createEnvelope(input: CreateEnvelopeInput): Promise<CreateEnvelopeResult>;
|
|
73
|
+
export type TokenResolution = {
|
|
74
|
+
status: "ok";
|
|
75
|
+
envelope: Envelope;
|
|
76
|
+
signer: EnvelopeSigner;
|
|
77
|
+
} | {
|
|
78
|
+
status: "not_your_turn";
|
|
79
|
+
envelope: Envelope;
|
|
80
|
+
signer: EnvelopeSigner;
|
|
81
|
+
waitingOn: EnvelopeSigner[];
|
|
82
|
+
} | {
|
|
83
|
+
status: "already_signed";
|
|
84
|
+
envelope: Envelope;
|
|
85
|
+
signer: EnvelopeSigner;
|
|
86
|
+
} | {
|
|
87
|
+
status: "completed" | "voided" | "expired";
|
|
88
|
+
envelope: Envelope;
|
|
89
|
+
signer: EnvelopeSigner;
|
|
90
|
+
} | {
|
|
91
|
+
status: "invalid";
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Resolve a raw signing token to its envelope + signer, applying every gate a
|
|
95
|
+
* signing surface needs: token validity, envelope liveness (expiry is applied
|
|
96
|
+
* lazily and persisted), single-use, and signing order.
|
|
97
|
+
*/
|
|
98
|
+
export declare function resolveSigningToken(input: {
|
|
99
|
+
store: EnvelopeStore;
|
|
100
|
+
token: string;
|
|
101
|
+
}): Promise<TokenResolution>;
|
|
102
|
+
/**
|
|
103
|
+
* Record a signer's drawn signature. Enforces the same gates as
|
|
104
|
+
* `resolveSigningToken`; on the last signature the envelope flips to
|
|
105
|
+
* `completed` (compose + seal with `composeEnvelopeHtml` + `signDocument`).
|
|
106
|
+
*/
|
|
107
|
+
export declare function recordSignature(input: {
|
|
108
|
+
store: EnvelopeStore;
|
|
109
|
+
token: string;
|
|
110
|
+
signatureImageDataUrl: string;
|
|
111
|
+
signedAt?: Date;
|
|
112
|
+
}): Promise<Envelope>;
|
|
113
|
+
/** Decline on behalf of the token's signer; the whole envelope becomes voided. */
|
|
114
|
+
export declare function declineEnvelope(input: {
|
|
115
|
+
store: EnvelopeStore;
|
|
116
|
+
token: string;
|
|
117
|
+
reason?: string;
|
|
118
|
+
}): Promise<Envelope>;
|
|
119
|
+
/** Sender-side cancellation (no token — tenant + id addressed). */
|
|
120
|
+
export declare function voidEnvelope(input: {
|
|
121
|
+
store: EnvelopeStore;
|
|
122
|
+
tenantId: string;
|
|
123
|
+
envelopeId: string;
|
|
124
|
+
}): Promise<Envelope>;
|
|
125
|
+
/**
|
|
126
|
+
* Compose the final signature-embedded HTML for a COMPLETED envelope: the base
|
|
127
|
+
* document plus one rendered block per signer (name, role, image, timestamp).
|
|
128
|
+
* Feed the result to `signDocument()` (or `renderHtmlToPdf` + `signPdf`) to
|
|
129
|
+
* apply the single cryptographic seal.
|
|
130
|
+
*/
|
|
131
|
+
export declare function composeEnvelopeHtml(envelope: Envelope, opts?: {
|
|
132
|
+
platformLabel?: string;
|
|
133
|
+
platformUrl?: string;
|
|
134
|
+
}): string;
|
|
135
|
+
//# sourceMappingURL=envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"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"}
|
package/dist/envelope.js
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
// envelope.ts
|
|
2
|
+
//
|
|
3
|
+
// Multi-signer envelopes + tokenized signing links, storage-agnostic.
|
|
4
|
+
//
|
|
5
|
+
// An Envelope tracks N signers over one HTML document. Each signer gets an
|
|
6
|
+
// opaque single-use signing token (32-byte CSPRNG, base64url) minted at
|
|
7
|
+
// creation and returned to the caller EXACTLY ONCE — only its SHA-256 hash is
|
|
8
|
+
// persisted, so a leaked store cannot forge signing links. Signing order is a
|
|
9
|
+
// 1-based integer; equal order signs in parallel, lower orders gate higher ones.
|
|
10
|
+
//
|
|
11
|
+
// Cryptographic model (deliberate, documented): signatures are collected as
|
|
12
|
+
// drawn images per signer; when the LAST signer completes, the caller composes
|
|
13
|
+
// the final document (`composeEnvelopeHtml`) — the base HTML plus every
|
|
14
|
+
// signer's block — and applies ONE cryptographic seal over the whole thing
|
|
15
|
+
// (e.g. via `signDocument()`). Sequential *PDF* re-signing is intentionally out
|
|
16
|
+
// of scope: the current signer/verifier pair handles a single /ByteRange, so a
|
|
17
|
+
// second incremental signature would be invisible to `verifyPdfSignature`.
|
|
18
|
+
//
|
|
19
|
+
// Persistence is bring-your-own via `EnvelopeStore` (same pattern as
|
|
20
|
+
// CertStore). Stores that expect concurrent signers should apply optimistic
|
|
21
|
+
// concurrency in `update()` (e.g. a version column) — core performs
|
|
22
|
+
// read-modify-write.
|
|
23
|
+
import crypto from "node:crypto";
|
|
24
|
+
import { assertImageDataUrl, renderSignatureBlocksHtml } from "./signature-block.js";
|
|
25
|
+
// ---------- Errors ----------
|
|
26
|
+
export class EnvelopeError extends Error {
|
|
27
|
+
code;
|
|
28
|
+
constructor(code, message) {
|
|
29
|
+
super(message);
|
|
30
|
+
this.code = code;
|
|
31
|
+
this.name = "EnvelopeError";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export async function createEnvelope(input) {
|
|
35
|
+
if (!input.tenantId)
|
|
36
|
+
throw new EnvelopeError("invalid_input", "tenantId is required");
|
|
37
|
+
if (!input.html?.trim())
|
|
38
|
+
throw new EnvelopeError("invalid_input", "html must be non-empty");
|
|
39
|
+
if (!input.signers?.length)
|
|
40
|
+
throw new EnvelopeError("invalid_input", "at least one signer is required");
|
|
41
|
+
if (input.expiresAt && input.expiresAt.getTime() <= Date.now()) {
|
|
42
|
+
throw new EnvelopeError("invalid_input", "expiresAt must be in the future");
|
|
43
|
+
}
|
|
44
|
+
const signingTokens = [];
|
|
45
|
+
const signers = input.signers.map((s) => {
|
|
46
|
+
if (!s.name?.trim())
|
|
47
|
+
throw new EnvelopeError("invalid_input", "signer name must be non-empty");
|
|
48
|
+
if (!s.email?.includes("@"))
|
|
49
|
+
throw new EnvelopeError("invalid_input", `signer email looks invalid: ${s.email}`);
|
|
50
|
+
const order = s.order ?? 1;
|
|
51
|
+
if (!Number.isInteger(order) || order < 1) {
|
|
52
|
+
throw new EnvelopeError("invalid_input", "signer order must be a positive integer");
|
|
53
|
+
}
|
|
54
|
+
const token = crypto.randomBytes(32).toString("base64url");
|
|
55
|
+
const signer = {
|
|
56
|
+
id: crypto.randomUUID(),
|
|
57
|
+
name: s.name,
|
|
58
|
+
email: s.email,
|
|
59
|
+
roleLabel: s.roleLabel,
|
|
60
|
+
order,
|
|
61
|
+
status: "pending",
|
|
62
|
+
tokenHash: hashToken(token),
|
|
63
|
+
};
|
|
64
|
+
signingTokens.push({ signerId: signer.id, email: signer.email, token });
|
|
65
|
+
return signer;
|
|
66
|
+
});
|
|
67
|
+
const envelope = {
|
|
68
|
+
id: crypto.randomUUID(),
|
|
69
|
+
tenantId: input.tenantId,
|
|
70
|
+
title: input.title,
|
|
71
|
+
html: input.html,
|
|
72
|
+
status: "sent",
|
|
73
|
+
signers,
|
|
74
|
+
createdAt: new Date(),
|
|
75
|
+
expiresAt: input.expiresAt,
|
|
76
|
+
metadata: input.metadata,
|
|
77
|
+
};
|
|
78
|
+
return { envelope: await input.store.insert(envelope), signingTokens };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Resolve a raw signing token to its envelope + signer, applying every gate a
|
|
82
|
+
* signing surface needs: token validity, envelope liveness (expiry is applied
|
|
83
|
+
* lazily and persisted), single-use, and signing order.
|
|
84
|
+
*/
|
|
85
|
+
export async function resolveSigningToken(input) {
|
|
86
|
+
const envelope = await input.store.findByTokenHash(hashToken(input.token));
|
|
87
|
+
if (!envelope)
|
|
88
|
+
return { status: "invalid" };
|
|
89
|
+
const signer = envelope.signers.find((s) => s.tokenHash === hashToken(input.token));
|
|
90
|
+
if (!signer)
|
|
91
|
+
return { status: "invalid" };
|
|
92
|
+
if (envelope.status === "sent" || envelope.status === "partially_signed") {
|
|
93
|
+
if (envelope.expiresAt && envelope.expiresAt.getTime() <= Date.now()) {
|
|
94
|
+
envelope.status = "expired";
|
|
95
|
+
await input.store.update(envelope);
|
|
96
|
+
return { status: "expired", envelope, signer };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (envelope.status === "completed")
|
|
100
|
+
return { status: "completed", envelope, signer };
|
|
101
|
+
if (envelope.status === "voided")
|
|
102
|
+
return { status: "voided", envelope, signer };
|
|
103
|
+
if (envelope.status === "expired")
|
|
104
|
+
return { status: "expired", envelope, signer };
|
|
105
|
+
if (signer.status === "signed")
|
|
106
|
+
return { status: "already_signed", envelope, signer };
|
|
107
|
+
const waitingOn = envelope.signers.filter((s) => s.order < signer.order && s.status !== "signed");
|
|
108
|
+
if (waitingOn.length > 0)
|
|
109
|
+
return { status: "not_your_turn", envelope, signer, waitingOn };
|
|
110
|
+
return { status: "ok", envelope, signer };
|
|
111
|
+
}
|
|
112
|
+
// ---------- Signing / declining / voiding ----------
|
|
113
|
+
/**
|
|
114
|
+
* Record a signer's drawn signature. Enforces the same gates as
|
|
115
|
+
* `resolveSigningToken`; on the last signature the envelope flips to
|
|
116
|
+
* `completed` (compose + seal with `composeEnvelopeHtml` + `signDocument`).
|
|
117
|
+
*/
|
|
118
|
+
export async function recordSignature(input) {
|
|
119
|
+
const res = await resolveSigningToken({ store: input.store, token: input.token });
|
|
120
|
+
if (res.status === "invalid")
|
|
121
|
+
throw new EnvelopeError("invalid_token", "unknown signing token");
|
|
122
|
+
if (res.status === "not_your_turn") {
|
|
123
|
+
throw new EnvelopeError("not_your_turn", `waiting on ${res.waitingOn.length} earlier signer(s)`);
|
|
124
|
+
}
|
|
125
|
+
if (res.status === "already_signed")
|
|
126
|
+
throw new EnvelopeError("already_signed", "token already used");
|
|
127
|
+
if (res.status !== "ok")
|
|
128
|
+
throw new EnvelopeError("not_signable", `envelope is ${res.status}`);
|
|
129
|
+
// Same guard the block renderer applies at seal time, applied early so a bad
|
|
130
|
+
// image is rejected at signing time. Throws on anything but a base64 image
|
|
131
|
+
// data URL; returns the whitespace-compacted form we persist.
|
|
132
|
+
let imageDataUrl;
|
|
133
|
+
try {
|
|
134
|
+
imageDataUrl = assertImageDataUrl(input.signatureImageDataUrl);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
throw new EnvelopeError("invalid_input", "signatureImageDataUrl must be a base64 image data URL (data:image/png;base64,…)");
|
|
138
|
+
}
|
|
139
|
+
const { envelope, signer } = res;
|
|
140
|
+
signer.status = "signed";
|
|
141
|
+
signer.signedAt = input.signedAt ?? new Date();
|
|
142
|
+
signer.signatureImageDataUrl = imageDataUrl;
|
|
143
|
+
const allSigned = envelope.signers.every((s) => s.status === "signed");
|
|
144
|
+
envelope.status = allSigned ? "completed" : "partially_signed";
|
|
145
|
+
if (allSigned)
|
|
146
|
+
envelope.completedAt = new Date();
|
|
147
|
+
return input.store.update(envelope);
|
|
148
|
+
}
|
|
149
|
+
/** Decline on behalf of the token's signer; the whole envelope becomes voided. */
|
|
150
|
+
export async function declineEnvelope(input) {
|
|
151
|
+
const res = await resolveSigningToken({ store: input.store, token: input.token });
|
|
152
|
+
if (res.status === "invalid")
|
|
153
|
+
throw new EnvelopeError("invalid_token", "unknown signing token");
|
|
154
|
+
if (res.status === "already_signed" || res.status === "completed") {
|
|
155
|
+
throw new EnvelopeError("not_signable", "cannot decline after signing");
|
|
156
|
+
}
|
|
157
|
+
if (res.status === "voided" || res.status === "expired") {
|
|
158
|
+
throw new EnvelopeError("not_signable", `envelope is ${res.status}`);
|
|
159
|
+
}
|
|
160
|
+
const { envelope, signer } = res;
|
|
161
|
+
signer.status = "declined";
|
|
162
|
+
signer.declinedAt = new Date();
|
|
163
|
+
signer.declineReason = input.reason;
|
|
164
|
+
envelope.status = "voided";
|
|
165
|
+
envelope.voidedAt = new Date();
|
|
166
|
+
return input.store.update(envelope);
|
|
167
|
+
}
|
|
168
|
+
/** Sender-side cancellation (no token — tenant + id addressed). */
|
|
169
|
+
export async function voidEnvelope(input) {
|
|
170
|
+
const envelope = await input.store.findById(input.tenantId, input.envelopeId);
|
|
171
|
+
if (!envelope)
|
|
172
|
+
throw new EnvelopeError("invalid_input", "envelope not found");
|
|
173
|
+
if (envelope.status === "completed") {
|
|
174
|
+
throw new EnvelopeError("not_signable", "cannot void a completed envelope");
|
|
175
|
+
}
|
|
176
|
+
envelope.status = "voided";
|
|
177
|
+
envelope.voidedAt = new Date();
|
|
178
|
+
return input.store.update(envelope);
|
|
179
|
+
}
|
|
180
|
+
// ---------- Completion ----------
|
|
181
|
+
/**
|
|
182
|
+
* Compose the final signature-embedded HTML for a COMPLETED envelope: the base
|
|
183
|
+
* document plus one rendered block per signer (name, role, image, timestamp).
|
|
184
|
+
* Feed the result to `signDocument()` (or `renderHtmlToPdf` + `signPdf`) to
|
|
185
|
+
* apply the single cryptographic seal.
|
|
186
|
+
*/
|
|
187
|
+
export function composeEnvelopeHtml(envelope, opts = {}) {
|
|
188
|
+
if (envelope.status !== "completed") {
|
|
189
|
+
throw new EnvelopeError("not_complete", `envelope is ${envelope.status}, not completed`);
|
|
190
|
+
}
|
|
191
|
+
const blocks = renderSignatureBlocksHtml({
|
|
192
|
+
signers: envelope.signers.map((s) => ({
|
|
193
|
+
name: s.name,
|
|
194
|
+
email: s.email,
|
|
195
|
+
roleLabel: s.roleLabel,
|
|
196
|
+
signatureImageDataUrl: s.signatureImageDataUrl,
|
|
197
|
+
signedAt: s.signedAt,
|
|
198
|
+
})),
|
|
199
|
+
platformLabel: opts.platformLabel,
|
|
200
|
+
platformUrl: opts.platformUrl,
|
|
201
|
+
});
|
|
202
|
+
return `${envelope.html}\n${blocks}`;
|
|
203
|
+
}
|
|
204
|
+
// ---------- Internals ----------
|
|
205
|
+
function hashToken(token) {
|
|
206
|
+
return crypto.createHash("sha256").update(token, "utf8").digest("hex");
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { AuditLogEntry, AuditLogRow, AuditLogStore, CertStore, PdfStorageStore, StoredCert } from "./adapters.js";
|
|
2
|
+
import type { GeneratedCert } from "./cert-issuer.js";
|
|
3
|
+
import type { Envelope, EnvelopeStore } from "./envelope.js";
|
|
4
|
+
export declare class FsCertStore implements CertStore {
|
|
5
|
+
private file;
|
|
6
|
+
constructor(rootDir: string);
|
|
7
|
+
private rows;
|
|
8
|
+
private static revive;
|
|
9
|
+
findActive(tenantId: string): Promise<StoredCert | null>;
|
|
10
|
+
insert(input: {
|
|
11
|
+
tenantId: string;
|
|
12
|
+
generated: GeneratedCert;
|
|
13
|
+
keyPemEncrypted: Uint8Array;
|
|
14
|
+
rotatedFromId?: string | null;
|
|
15
|
+
}): Promise<StoredCert>;
|
|
16
|
+
deactivate(id: string): Promise<void>;
|
|
17
|
+
findExpiring(withinDays: number): Promise<StoredCert[]>;
|
|
18
|
+
}
|
|
19
|
+
export declare class FsAuditLogStore implements AuditLogStore {
|
|
20
|
+
private file;
|
|
21
|
+
constructor(rootDir: string);
|
|
22
|
+
insert(entry: AuditLogEntry): Promise<AuditLogRow>;
|
|
23
|
+
/** Read every persisted row (newest last). Not part of the core interface —
|
|
24
|
+
* a convenience for local inspection and tests. */
|
|
25
|
+
readAll(): Promise<Array<AuditLogEntry & AuditLogRow>>;
|
|
26
|
+
}
|
|
27
|
+
export declare class FsPdfStorageStore implements PdfStorageStore {
|
|
28
|
+
private blobRoot;
|
|
29
|
+
constructor(rootDir: string);
|
|
30
|
+
upload(input: {
|
|
31
|
+
path: string;
|
|
32
|
+
bytes: Uint8Array;
|
|
33
|
+
contentType: string;
|
|
34
|
+
}): Promise<{
|
|
35
|
+
url: string;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
export declare class FsEnvelopeStore implements EnvelopeStore {
|
|
39
|
+
private file;
|
|
40
|
+
constructor(rootDir: string);
|
|
41
|
+
private rows;
|
|
42
|
+
private static toJson;
|
|
43
|
+
private static revive;
|
|
44
|
+
insert(envelope: Envelope): Promise<Envelope>;
|
|
45
|
+
update(envelope: Envelope): Promise<Envelope>;
|
|
46
|
+
findById(tenantId: string, id: string): Promise<Envelope | null>;
|
|
47
|
+
findByTokenHash(tokenHash: string): Promise<Envelope | null>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=fs-adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-adapters.d.ts","sourceRoot":"","sources":["../src/fs-adapters.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,SAAS,EACT,eAAe,EACf,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA4B7D,qBAAa,WAAY,YAAW,SAAS;IAC3C,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE,MAAM;YAIb,IAAI;IAIlB,OAAO,CAAC,MAAM,CAAC,MAAM;IAUf,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKxD,MAAM,CAAC,KAAK,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,aAAa,CAAC;QACzB,eAAe,EAAE,UAAU,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBjB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAM9D;AAID,qBAAa,eAAgB,YAAW,aAAa;IACnD,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE,MAAM;IAIrB,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAOxD;wDACoD;IAC9C,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC;CAe7D;AAID,qBAAa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,MAAM;IAIrB,MAAM,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAUxG;AAiBD,qBAAa,eAAgB,YAAW,aAAa;IACnD,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE,MAAM;YAIb,IAAI;IAIlB,OAAO,CAAC,MAAM,CAAC,MAAM;IAerB,OAAO,CAAC,MAAM,CAAC,MAAM;IAef,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAO7C,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAS7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAKhE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;CAInE"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
// fs-adapters.ts
|
|
2
|
+
//
|
|
3
|
+
// Filesystem-backed reference implementations of every persistence interface
|
|
4
|
+
// (CertStore, AuditLogStore, PdfStorageStore, EnvelopeStore) — the full
|
|
5
|
+
// pipeline with zero external services: `import ... from "@e-sig/core/fs"`.
|
|
6
|
+
//
|
|
7
|
+
// Intended for development, demos, CLIs, and small single-node deployments.
|
|
8
|
+
// NOT multi-process safe: JSON state is read-modify-write with atomic replace
|
|
9
|
+
// (write temp + rename), which serializes within one process only. The audit
|
|
10
|
+
// log is a true append-only NDJSON file.
|
|
11
|
+
//
|
|
12
|
+
// Layout under the root directory:
|
|
13
|
+
// certs.json — StoredCert rows (keyPemEncrypted as base64)
|
|
14
|
+
// envelopes.json — Envelope rows
|
|
15
|
+
// audit-log.ndjson — one JSON audit row per line, append-only
|
|
16
|
+
// blobs/<path> — uploaded PDFs / signature images
|
|
17
|
+
import crypto from "node:crypto";
|
|
18
|
+
import { promises as fs } from "node:fs";
|
|
19
|
+
import path from "node:path";
|
|
20
|
+
/** Serialize-with-rename so a crash never leaves a half-written JSON file. */
|
|
21
|
+
async function writeJsonAtomic(file, value) {
|
|
22
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
23
|
+
const tmp = `${file}.${crypto.randomBytes(6).toString("hex")}.tmp`;
|
|
24
|
+
await fs.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
|
|
25
|
+
await fs.rename(tmp, file);
|
|
26
|
+
}
|
|
27
|
+
async function readJson(file, fallback) {
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse(await fs.readFile(file, "utf8"));
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
if (e.code === "ENOENT")
|
|
33
|
+
return fallback;
|
|
34
|
+
throw e;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class FsCertStore {
|
|
38
|
+
file;
|
|
39
|
+
constructor(rootDir) {
|
|
40
|
+
this.file = path.join(rootDir, "certs.json");
|
|
41
|
+
}
|
|
42
|
+
async rows() {
|
|
43
|
+
return readJson(this.file, []);
|
|
44
|
+
}
|
|
45
|
+
static revive(r) {
|
|
46
|
+
return {
|
|
47
|
+
...r,
|
|
48
|
+
keyPemEncrypted: new Uint8Array(Buffer.from(r.keyPemEncrypted, "base64")),
|
|
49
|
+
notBefore: new Date(r.notBefore),
|
|
50
|
+
notAfter: new Date(r.notAfter),
|
|
51
|
+
createdAt: new Date(r.createdAt),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async findActive(tenantId) {
|
|
55
|
+
const row = (await this.rows()).find((r) => r.tenantId === tenantId && r.active);
|
|
56
|
+
return row ? FsCertStore.revive(row) : null;
|
|
57
|
+
}
|
|
58
|
+
async insert(input) {
|
|
59
|
+
const rows = await this.rows();
|
|
60
|
+
// Single-active-per-tenant invariant (see CertStore contract).
|
|
61
|
+
for (const r of rows)
|
|
62
|
+
if (r.tenantId === input.tenantId)
|
|
63
|
+
r.active = false;
|
|
64
|
+
const row = {
|
|
65
|
+
id: crypto.randomUUID(),
|
|
66
|
+
tenantId: input.tenantId,
|
|
67
|
+
certPem: input.generated.certPem,
|
|
68
|
+
keyPemEncrypted: Buffer.from(input.keyPemEncrypted).toString("base64"),
|
|
69
|
+
certFingerprint: input.generated.fingerprint,
|
|
70
|
+
notBefore: input.generated.notBefore.toISOString(),
|
|
71
|
+
notAfter: input.generated.notAfter.toISOString(),
|
|
72
|
+
active: true,
|
|
73
|
+
rotatedFromId: input.rotatedFromId ?? null,
|
|
74
|
+
createdAt: new Date().toISOString(),
|
|
75
|
+
};
|
|
76
|
+
rows.push(row);
|
|
77
|
+
await writeJsonAtomic(this.file, rows);
|
|
78
|
+
return FsCertStore.revive(row);
|
|
79
|
+
}
|
|
80
|
+
async deactivate(id) {
|
|
81
|
+
const rows = await this.rows();
|
|
82
|
+
const row = rows.find((r) => r.id === id);
|
|
83
|
+
if (row) {
|
|
84
|
+
row.active = false;
|
|
85
|
+
await writeJsonAtomic(this.file, rows);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async findExpiring(withinDays) {
|
|
89
|
+
const horizon = Date.now() + withinDays * 24 * 60 * 60 * 1000;
|
|
90
|
+
return (await this.rows())
|
|
91
|
+
.filter((r) => r.active && new Date(r.notAfter).getTime() <= horizon)
|
|
92
|
+
.map(FsCertStore.revive);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// ---------- FsAuditLogStore ----------
|
|
96
|
+
export class FsAuditLogStore {
|
|
97
|
+
file;
|
|
98
|
+
constructor(rootDir) {
|
|
99
|
+
this.file = path.join(rootDir, "audit-log.ndjson");
|
|
100
|
+
}
|
|
101
|
+
async insert(entry) {
|
|
102
|
+
const row = { id: crypto.randomUUID(), createdAt: new Date().toISOString(), ...entry };
|
|
103
|
+
await fs.mkdir(path.dirname(this.file), { recursive: true });
|
|
104
|
+
await fs.appendFile(this.file, JSON.stringify(row) + "\n", "utf8");
|
|
105
|
+
return { id: row.id, createdAt: new Date(row.createdAt) };
|
|
106
|
+
}
|
|
107
|
+
/** Read every persisted row (newest last). Not part of the core interface —
|
|
108
|
+
* a convenience for local inspection and tests. */
|
|
109
|
+
async readAll() {
|
|
110
|
+
try {
|
|
111
|
+
const text = await fs.readFile(this.file, "utf8");
|
|
112
|
+
return text
|
|
113
|
+
.split("\n")
|
|
114
|
+
.filter(Boolean)
|
|
115
|
+
.map((l) => {
|
|
116
|
+
const r = JSON.parse(l);
|
|
117
|
+
return { ...r, createdAt: new Date(r.createdAt) };
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
if (e.code === "ENOENT")
|
|
122
|
+
return [];
|
|
123
|
+
throw e;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// ---------- FsPdfStorageStore ----------
|
|
128
|
+
export class FsPdfStorageStore {
|
|
129
|
+
blobRoot;
|
|
130
|
+
constructor(rootDir) {
|
|
131
|
+
this.blobRoot = path.join(rootDir, "blobs");
|
|
132
|
+
}
|
|
133
|
+
async upload(input) {
|
|
134
|
+
// Resolve inside blobRoot and refuse traversal escapes.
|
|
135
|
+
const abs = path.resolve(this.blobRoot, input.path);
|
|
136
|
+
if (abs !== this.blobRoot && !abs.startsWith(this.blobRoot + path.sep)) {
|
|
137
|
+
throw new Error(`FsPdfStorageStore: path escapes storage root: ${input.path}`);
|
|
138
|
+
}
|
|
139
|
+
await fs.mkdir(path.dirname(abs), { recursive: true });
|
|
140
|
+
await fs.writeFile(abs, input.bytes);
|
|
141
|
+
return { url: abs };
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export class FsEnvelopeStore {
|
|
145
|
+
file;
|
|
146
|
+
constructor(rootDir) {
|
|
147
|
+
this.file = path.join(rootDir, "envelopes.json");
|
|
148
|
+
}
|
|
149
|
+
async rows() {
|
|
150
|
+
return readJson(this.file, []);
|
|
151
|
+
}
|
|
152
|
+
static toJson(e) {
|
|
153
|
+
return {
|
|
154
|
+
...e,
|
|
155
|
+
createdAt: e.createdAt.toISOString(),
|
|
156
|
+
expiresAt: e.expiresAt?.toISOString(),
|
|
157
|
+
completedAt: e.completedAt?.toISOString(),
|
|
158
|
+
voidedAt: e.voidedAt?.toISOString(),
|
|
159
|
+
signers: e.signers.map((s) => ({
|
|
160
|
+
...s,
|
|
161
|
+
signedAt: s.signedAt?.toISOString(),
|
|
162
|
+
declinedAt: s.declinedAt?.toISOString(),
|
|
163
|
+
})),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
static revive(r) {
|
|
167
|
+
return {
|
|
168
|
+
...r,
|
|
169
|
+
createdAt: new Date(r.createdAt),
|
|
170
|
+
expiresAt: r.expiresAt ? new Date(r.expiresAt) : undefined,
|
|
171
|
+
completedAt: r.completedAt ? new Date(r.completedAt) : undefined,
|
|
172
|
+
voidedAt: r.voidedAt ? new Date(r.voidedAt) : undefined,
|
|
173
|
+
signers: r.signers.map((s) => ({
|
|
174
|
+
...s,
|
|
175
|
+
signedAt: s.signedAt ? new Date(s.signedAt) : undefined,
|
|
176
|
+
declinedAt: s.declinedAt ? new Date(s.declinedAt) : undefined,
|
|
177
|
+
})),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
async insert(envelope) {
|
|
181
|
+
const rows = await this.rows();
|
|
182
|
+
rows.push(FsEnvelopeStore.toJson(envelope));
|
|
183
|
+
await writeJsonAtomic(this.file, rows);
|
|
184
|
+
return envelope;
|
|
185
|
+
}
|
|
186
|
+
async update(envelope) {
|
|
187
|
+
const rows = await this.rows();
|
|
188
|
+
const i = rows.findIndex((r) => r.id === envelope.id);
|
|
189
|
+
if (i === -1)
|
|
190
|
+
throw new Error(`FsEnvelopeStore: envelope not found: ${envelope.id}`);
|
|
191
|
+
rows[i] = FsEnvelopeStore.toJson(envelope);
|
|
192
|
+
await writeJsonAtomic(this.file, rows);
|
|
193
|
+
return envelope;
|
|
194
|
+
}
|
|
195
|
+
async findById(tenantId, id) {
|
|
196
|
+
const row = (await this.rows()).find((r) => r.tenantId === tenantId && r.id === id);
|
|
197
|
+
return row ? FsEnvelopeStore.revive(row) : null;
|
|
198
|
+
}
|
|
199
|
+
async findByTokenHash(tokenHash) {
|
|
200
|
+
const row = (await this.rows()).find((r) => r.signers.some((s) => s.tokenHash === tokenHash));
|
|
201
|
+
return row ? FsEnvelopeStore.revive(row) : null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=fs-adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-adapters.js","sourceRoot":"","sources":["../src/fs-adapters.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,5 +7,6 @@ export { buildTimeStampReq, parseTimeStampResp, parseTstInfo, OID_TIMESTAMP_TOKE
|
|
|
7
7
|
export type { Signer, SigningCertPem, SignedPdfMetadata, TsaTransport, } from "./types.js";
|
|
8
8
|
export type { StoredCert, CertStore, AuditLogEntry, AuditLogRow, AuditLogStore, EsigAuditAction, PdfStorageStore, } from "./adapters.js";
|
|
9
9
|
export { ensureActiveCert, type EnsureCertResult } from "./cert-lifecycle.js";
|
|
10
|
+
export { createEnvelope, resolveSigningToken, recordSignature, declineEnvelope, voidEnvelope, composeEnvelopeHtml, EnvelopeError, type Envelope, type EnvelopeSigner, type EnvelopeStatus, type EnvelopeSignerStatus, type EnvelopeStore, type CreateEnvelopeInput, type CreateEnvelopeResult, type TokenResolution, } from "./envelope.js";
|
|
10
11
|
export { signDocument, type SignDocumentInput, type SignDocumentResult, } from "./sign-document.js";
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,8 @@ export { verifyPdfStructure, verifyPdfSignature } from "./verify-pdf.js";
|
|
|
16
16
|
export { buildTimeStampReq, parseTimeStampResp, parseTstInfo, OID_TIMESTAMP_TOKEN, } from "./timestamp.js";
|
|
17
17
|
// ---- Cert lifecycle (stack-agnostic; interface-only) ----
|
|
18
18
|
export { ensureActiveCert } from "./cert-lifecycle.js";
|
|
19
|
+
// ---- Multi-signer envelopes + tokenized signing links ----
|
|
20
|
+
export { createEnvelope, resolveSigningToken, recordSignature, declineEnvelope, voidEnvelope, composeEnvelopeHtml, EnvelopeError, } from "./envelope.js";
|
|
19
21
|
// ---- End-to-end orchestrator ----
|
|
20
22
|
export { signDocument, } from "./sign-document.js";
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,kEAAkE;AAClE,EAAE;AACF,mFAAmF;AACnF,iFAAiF;AACjF,gFAAgF;AAEhF,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,aAAa,GAGd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAA+B,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAyC,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAqB,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAmBxB,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAyB,MAAM,qBAAqB,CAAC;AAE9E,oCAAoC;AACpC,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,kEAAkE;AAClE,EAAE;AACF,mFAAmF;AACnF,iFAAiF;AACjF,gFAAgF;AAEhF,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,aAAa,GAGd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAA+B,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAyC,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAqB,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAmBxB,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAyB,MAAM,qBAAqB,CAAC;AAE9E,6DAA6D;AAC7D,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,aAAa,GASd,MAAM,eAAe,CAAC;AAEvB,oCAAoC;AACpC,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC"}
|
package/dist/signature-block.js
CHANGED
|
@@ -33,7 +33,7 @@ export function renderSignatureBlocksHtml(opts) {
|
|
|
33
33
|
</style>
|
|
34
34
|
${rows}
|
|
35
35
|
<p class="audit-footer">
|
|
36
|
-
Cryptographically sealed via the
|
|
36
|
+
Cryptographically sealed via the ${escapeHtml(platform)}${url ? ` (${escapeHtml(url)})` : ""}.
|
|
37
37
|
Any post-signing modification invalidates the signature panel in Adobe Reader / Preview.
|
|
38
38
|
</p>
|
|
39
39
|
</div>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature-block.js","sourceRoot":"","sources":["../src/signature-block.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,6EAA6E;AAC7E,qEAAqE;AAWrE;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAIzC;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,qCAAqC,CAAC;IAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;SACtB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC;;MAEP,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;oDAC3B,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAChE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAChD;gBACY,kBAAkB,CAAC,CAAC,CAAC,qBAAqB,CAAC,uBAAuB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;0CAC1D,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;SACzD,CACJ;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;;;;;;;;IAUL,IAAI;;
|
|
1
|
+
{"version":3,"file":"signature-block.js","sourceRoot":"","sources":["../src/signature-block.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,6EAA6E;AAC7E,qEAAqE;AAWrE;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAIzC;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,qCAAqC,CAAC;IAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;SACtB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC;;MAEP,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;oDAC3B,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAChE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAChD;gBACY,kBAAkB,CAAC,CAAC,CAAC,qBAAqB,CAAC,uBAAuB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;0CAC1D,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;SACzD,CACJ;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;;;;;;;;IAUL,IAAI;;uCAE+B,UAAU,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;;OAGzF,CAAC;AACR,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,cAAc,GAAG,gEAAgE,CAAC;AAExF,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,mFAAmF;YACjF,2FAA2F,CAC9F,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/verify-pdf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-pdf.d.ts","sourceRoot":"","sources":["../src/verify-pdf.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gEAAgE;IAChE,WAAW,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"verify-pdf.d.ts","sourceRoot":"","sources":["../src/verify-pdf.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gEAAgE;IAChE,WAAW,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAqF/D;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,2BAAqB,CAAC"}
|
package/dist/verify-pdf.js
CHANGED
|
@@ -54,8 +54,17 @@ export function verifyPdfStructure(signed) {
|
|
|
54
54
|
result.pkcs7BudgetSize = hole - 2;
|
|
55
55
|
const contentsRegion = signed.slice(a + b + 1, c - 1);
|
|
56
56
|
const hexBlob = contentsRegion.toString("binary").replace(/[^0-9a-fA-F]/g, "");
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
// The /Contents hole is zero-padded past the end of the DER. Slice at the
|
|
58
|
+
// length declared in the DER's own TLV header — trimming trailing "00" pairs
|
|
59
|
+
// instead truncates any signature whose final byte is legitimately 0x00
|
|
60
|
+
// (~1/256 of signatures), falsely rejecting a valid document.
|
|
61
|
+
const contentsBytes = Buffer.from(hexBlob, "hex");
|
|
62
|
+
const derLen = derTotalLength(contentsBytes);
|
|
63
|
+
if (derLen === null || derLen > contentsBytes.length) {
|
|
64
|
+
failures.push("/Contents does not hold a well-formed DER structure");
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
const pkcs7Der = contentsBytes.subarray(0, derLen).toString("binary");
|
|
59
68
|
result.pkcs7ActualSize = pkcs7Der.length;
|
|
60
69
|
try {
|
|
61
70
|
const root = forge.asn1.fromDer(pkcs7Der);
|
|
@@ -309,6 +318,25 @@ function inspectTimestamp(contentInfo) {
|
|
|
309
318
|
}
|
|
310
319
|
return { present: false, sigValueHex };
|
|
311
320
|
}
|
|
321
|
+
/**
|
|
322
|
+
* Total encoded length (header + content) of the DER value starting at byte 0,
|
|
323
|
+
* or null if the bytes cannot start a DER SEQUENCE (wrong tag, indefinite/BER
|
|
324
|
+
* length, or a length-of-length that cannot be a real PKCS#7 blob).
|
|
325
|
+
*/
|
|
326
|
+
function derTotalLength(buf) {
|
|
327
|
+
if (buf.length < 2 || buf[0] !== 0x30)
|
|
328
|
+
return null; // ContentInfo is a SEQUENCE
|
|
329
|
+
const l0 = buf[1];
|
|
330
|
+
if (l0 < 0x80)
|
|
331
|
+
return 2 + l0;
|
|
332
|
+
const n = l0 & 0x7f;
|
|
333
|
+
if (n === 0 || n > 4 || buf.length < 2 + n)
|
|
334
|
+
return null;
|
|
335
|
+
let v = 0;
|
|
336
|
+
for (let k = 0; k < n; k++)
|
|
337
|
+
v = v * 256 + buf[2 + k];
|
|
338
|
+
return 2 + n + v;
|
|
339
|
+
}
|
|
312
340
|
function safeOid(der) {
|
|
313
341
|
try {
|
|
314
342
|
return asn1.derToOid(der);
|
package/dist/verify-pdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-pdf.js","sourceRoot":"","sources":["../src/verify-pdf.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify-pdf.js","sourceRoot":"","sources":["../src/verify-pdf.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@e-sig/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
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.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -22,6 +22,11 @@
|
|
|
22
22
|
"types": "./dist/adapters.d.ts",
|
|
23
23
|
"import": "./dist/adapters.js",
|
|
24
24
|
"default": "./dist/adapters.js"
|
|
25
|
+
},
|
|
26
|
+
"./fs": {
|
|
27
|
+
"types": "./dist/fs-adapters.d.ts",
|
|
28
|
+
"import": "./dist/fs-adapters.js",
|
|
29
|
+
"default": "./dist/fs-adapters.js"
|
|
25
30
|
}
|
|
26
31
|
},
|
|
27
32
|
"files": [
|