@naylence/advanced-security 0.3.5-test.101 → 0.3.5-test.102
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/browser/index.js +13385 -12988
- package/dist/browser/index.js.map +1 -1
- package/dist/cjs/browser.js +1 -0
- package/dist/cjs/browser.js.map +1 -1
- package/dist/cjs/naylence/fame/factory-manifest.js +14 -0
- package/dist/cjs/naylence/fame/factory-manifest.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/browser-csr.js +103 -0
- package/dist/cjs/naylence/fame/security/cert/browser-csr.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/ca-service-client.js +331 -24
- package/dist/cjs/naylence/fame/security/cert/ca-service-client.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/ca-types.js +8 -0
- package/dist/cjs/naylence/fame/security/cert/ca-types.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/csr-types.js +2 -0
- package/dist/cjs/naylence/fame/security/cert/csr-types.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/default-ca-service.js +102 -1
- package/dist/cjs/naylence/fame/security/cert/default-ca-service.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/default-certificate-manager.js +240 -45
- package/dist/cjs/naylence/fame/security/cert/default-certificate-manager.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/index.js +4 -1
- package/dist/cjs/naylence/fame/security/cert/index.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/internal-ca-service.js +2 -5
- package/dist/cjs/naylence/fame/security/cert/internal-ca-service.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/node-ed25519-csr.js +156 -0
- package/dist/cjs/naylence/fame/security/cert/node-ed25519-csr.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/oid-constants.js +7 -0
- package/dist/cjs/naylence/fame/security/cert/oid-constants.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/anchor-utils.js +119 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/anchor-utils.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/env-provider.js +123 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/env-provider.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.js +220 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/http-bundle-provider.js +411 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/http-bundle-provider.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.js +2 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/static-bundle-provider.js +37 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/static-bundle-provider.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/trust-store-provider.js +2 -0
- package/dist/cjs/naylence/fame/security/cert/trust-store/trust-store-provider.js.map +1 -0
- package/dist/cjs/naylence/fame/security/cert/util.js +1 -2
- package/dist/cjs/naylence/fame/security/cert/util.js.map +1 -1
- package/dist/cjs/version.js +2 -2
- package/dist/esm/browser.js +1 -0
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/naylence/fame/factory-manifest.js +14 -0
- package/dist/esm/naylence/fame/factory-manifest.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/browser-csr.js +103 -0
- package/dist/esm/naylence/fame/security/cert/browser-csr.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/ca-server.js +35 -0
- package/dist/esm/naylence/fame/security/cert/ca-server.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/ca-service-client.js +331 -24
- package/dist/esm/naylence/fame/security/cert/ca-service-client.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/ca-types.js +8 -0
- package/dist/esm/naylence/fame/security/cert/ca-types.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/csr-types.js +2 -0
- package/dist/esm/naylence/fame/security/cert/csr-types.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/default-ca-service.js +102 -1
- package/dist/esm/naylence/fame/security/cert/default-ca-service.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/default-certificate-manager.js +240 -45
- package/dist/esm/naylence/fame/security/cert/default-certificate-manager.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/index.js +4 -1
- package/dist/esm/naylence/fame/security/cert/index.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/internal-ca-service.js +2 -5
- package/dist/esm/naylence/fame/security/cert/internal-ca-service.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/node-ed25519-csr.js +156 -0
- package/dist/esm/naylence/fame/security/cert/node-ed25519-csr.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/oid-constants.js +7 -0
- package/dist/esm/naylence/fame/security/cert/oid-constants.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/anchor-utils.js +119 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/anchor-utils.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/env-provider.js +123 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/env-provider.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.js +220 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/http-bundle-provider.js +411 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/http-bundle-provider.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.js +2 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/static-bundle-provider.js +37 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/static-bundle-provider.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/trust-store-provider.js +2 -0
- package/dist/esm/naylence/fame/security/cert/trust-store/trust-store-provider.js.map +1 -0
- package/dist/esm/naylence/fame/security/cert/util.js +1 -2
- package/dist/esm/naylence/fame/security/cert/util.js.map +1 -1
- package/dist/esm/version.js +2 -2
- package/dist/types/browser.d.ts +2 -0
- package/dist/types/browser.d.ts.map +1 -1
- package/dist/types/naylence/fame/factory-manifest.d.ts +2 -0
- package/dist/types/naylence/fame/factory-manifest.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/browser-csr.d.ts +9 -0
- package/dist/types/naylence/fame/security/cert/browser-csr.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/ca-server.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/ca-service-client.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/ca-types.d.ts +32 -0
- package/dist/types/naylence/fame/security/cert/ca-types.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/csr-types.d.ts +5 -0
- package/dist/types/naylence/fame/security/cert/csr-types.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/default-ca-service.d.ts +2 -1
- package/dist/types/naylence/fame/security/cert/default-ca-service.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/default-certificate-manager.d.ts +33 -1
- package/dist/types/naylence/fame/security/cert/default-certificate-manager.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/index.d.ts +5 -1
- package/dist/types/naylence/fame/security/cert/index.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/internal-ca-service.d.ts +0 -3
- package/dist/types/naylence/fame/security/cert/internal-ca-service.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/node-ed25519-csr.d.ts +9 -0
- package/dist/types/naylence/fame/security/cert/node-ed25519-csr.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/oid-constants.d.ts +7 -0
- package/dist/types/naylence/fame/security/cert/oid-constants.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/trust-store/anchor-utils.d.ts +12 -0
- package/dist/types/naylence/fame/security/cert/trust-store/anchor-utils.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/trust-store/env-provider.d.ts +7 -0
- package/dist/types/naylence/fame/security/cert/trust-store/env-provider.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.d.ts +9 -0
- package/dist/types/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/trust-store/http-bundle-provider.d.ts +31 -0
- package/dist/types/naylence/fame/security/cert/trust-store/http-bundle-provider.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.d.ts +2 -0
- package/dist/types/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/trust-store/static-bundle-provider.d.ts +13 -0
- package/dist/types/naylence/fame/security/cert/trust-store/static-bundle-provider.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/trust-store/trust-store-provider.d.ts +37 -0
- package/dist/types/naylence/fame/security/cert/trust-store/trust-store-provider.d.ts.map +1 -0
- package/dist/types/naylence/fame/security/cert/util.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +8 -5
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Wraps InternalCAService (CASigningService) with automatic credential
|
|
5
5
|
* loading from environment variables and test CA fallback.
|
|
6
6
|
*/
|
|
7
|
+
import { sha256 } from "@noble/hashes/sha256.js";
|
|
8
|
+
import { X509Certificate } from "@peculiar/x509";
|
|
7
9
|
import { CAService } from "./ca-types.js";
|
|
8
10
|
import { CASigningService, createTestCA } from "./internal-ca-service.js";
|
|
9
11
|
/**
|
|
@@ -133,7 +135,7 @@ export class DefaultCAService extends CAService {
|
|
|
133
135
|
}
|
|
134
136
|
// Node.js environment
|
|
135
137
|
try {
|
|
136
|
-
const fs = await import("fs/promises");
|
|
138
|
+
const fs = await import("node:fs/promises");
|
|
137
139
|
const stats = await fs.stat(filePath);
|
|
138
140
|
if (stats.isFile()) {
|
|
139
141
|
return await fs.readFile(filePath, "utf-8");
|
|
@@ -259,5 +261,104 @@ export class DefaultCAService extends CAService {
|
|
|
259
261
|
throw error;
|
|
260
262
|
}
|
|
261
263
|
}
|
|
264
|
+
async getTrustBundle() {
|
|
265
|
+
const credentials = await this.getCACredentials();
|
|
266
|
+
const rootCandidates = [];
|
|
267
|
+
if (credentials.rootCaCertPem) {
|
|
268
|
+
rootCandidates.push(credentials.rootCaCertPem);
|
|
269
|
+
}
|
|
270
|
+
if (credentials.signingCertPem) {
|
|
271
|
+
rootCandidates.push(credentials.signingCertPem);
|
|
272
|
+
}
|
|
273
|
+
if (credentials.intermediateChainPem) {
|
|
274
|
+
rootCandidates.push(...this.parseCertificateChain(credentials.intermediateChainPem));
|
|
275
|
+
}
|
|
276
|
+
if (rootCandidates.length === 0) {
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
const roots = buildTrustBundleRoots(rootCandidates);
|
|
280
|
+
if (roots.length === 0) {
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
const issuedAt = new Date().toISOString();
|
|
284
|
+
const validUntil = computeEarliestExpiry(roots);
|
|
285
|
+
const version = computeBundleVersion(roots);
|
|
286
|
+
return {
|
|
287
|
+
version,
|
|
288
|
+
issuedAt,
|
|
289
|
+
validUntil,
|
|
290
|
+
roots,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function normalizeCertificatePem(pem) {
|
|
295
|
+
const trimmed = pem.trim();
|
|
296
|
+
return trimmed.endsWith("\n") ? trimmed : `${trimmed}\n`;
|
|
297
|
+
}
|
|
298
|
+
function analyseCertificate(pem) {
|
|
299
|
+
try {
|
|
300
|
+
const cert = new X509Certificate(pem);
|
|
301
|
+
const details = cert;
|
|
302
|
+
const notBefore = details.notBefore instanceof Date
|
|
303
|
+
? details.notBefore.toISOString()
|
|
304
|
+
: undefined;
|
|
305
|
+
const notAfter = details.notAfter instanceof Date
|
|
306
|
+
? details.notAfter.toISOString()
|
|
307
|
+
: undefined;
|
|
308
|
+
return {
|
|
309
|
+
notBefore,
|
|
310
|
+
notAfter,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
return {};
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
function buildTrustBundleRoots(candidates) {
|
|
318
|
+
const seen = new Set();
|
|
319
|
+
const roots = [];
|
|
320
|
+
for (const candidate of candidates) {
|
|
321
|
+
if (!candidate) {
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
const normalized = normalizeCertificatePem(candidate);
|
|
325
|
+
if (seen.has(normalized)) {
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
seen.add(normalized);
|
|
329
|
+
const metadata = analyseCertificate(normalized);
|
|
330
|
+
roots.push({
|
|
331
|
+
pem: normalized,
|
|
332
|
+
...metadata,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
return roots;
|
|
336
|
+
}
|
|
337
|
+
function computeEarliestExpiry(roots) {
|
|
338
|
+
let earliest = null;
|
|
339
|
+
for (const root of roots) {
|
|
340
|
+
if (!root.notAfter) {
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
343
|
+
const timestamp = Date.parse(root.notAfter);
|
|
344
|
+
if (Number.isNaN(timestamp)) {
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
if (earliest === null || timestamp < earliest) {
|
|
348
|
+
earliest = timestamp;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return earliest === null ? null : new Date(earliest).toISOString();
|
|
352
|
+
}
|
|
353
|
+
function computeBundleVersion(roots) {
|
|
354
|
+
const encoder = new TextEncoder();
|
|
355
|
+
const serialized = roots.map((root) => root.pem).join("\n");
|
|
356
|
+
const digest = sha256(encoder.encode(serialized));
|
|
357
|
+
const hex = Array.from(digest)
|
|
358
|
+
.map((byte) => byte.toString(16).padStart(2, "0"))
|
|
359
|
+
.join("");
|
|
360
|
+
const versionHex = hex.slice(0, 12);
|
|
361
|
+
const value = Number.parseInt(versionHex, 16);
|
|
362
|
+
return Number.isNaN(value) ? 1 : Math.max(1, value);
|
|
262
363
|
}
|
|
263
364
|
//# sourceMappingURL=default-ca-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-ca-service.js","sourceRoot":"","sources":["../../../../../../src/naylence/fame/security/cert/default-ca-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"default-ca-service.js","sourceRoot":"","sources":["../../../../../../src/naylence/fame/security/cert/default-ca-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AASjD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE1E;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AACrD,MAAM,CAAC,MAAM,gCAAgC,GAAG,8BAA8B,CAAC;AAC/E,MAAM,CAAC,MAAM,+BAA+B,GAAG,6BAA6B,CAAC;AAC7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AACnE,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AACjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAoC/D;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAQ7C,YAAY,UAAmC,EAAE;QAC/C,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB;QAC5B,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACrD,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEvC,4CAA4C;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACtD,IAAI,UAAU,EAAE,CAAC;gBACf,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACpD,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,qBAAqB,GACzB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAChD,IAAI,qBAAqB,EAAE,CAAC;gBAC1B,oBAAoB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAChD,qBAAqB,CACtB,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAChE,IAAI,eAAe,EAAE,CAAC;gBACpB,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAC9D,IAAI,cAAc,EAAE,CAAC;gBACnB,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CACV,mEAAmE,CACpE,CAAC;YACF,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,YAAY,EAAE,CAAC;YACjD,OAAO;gBACL,aAAa,EAAE,QAAQ;gBACvB,YAAY,EAAE,OAAO;gBACrB,oBAAoB;gBACpB,cAAc;gBACd,aAAa;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,QAAQ;YACtB,oBAAoB;YACpB,cAAc;YACd,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,gBAAgB,CAC5B,QAAgB;QAEhB,4CAA4C;QAC5C,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YACpE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC;YACP,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACK,qBAAqB,CAAC,QAAgB;QAC5C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;gBACjD,MAAM,GAAG,IAAI,CAAC;gBACd,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;YAC5B,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;gBACtD,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC;gBAC3B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtC,WAAW,GAAG,EAAE,CAAC;gBACjB,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CACpB,GAA8B;QAE9B,kDAAkD;QAClD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAElD,yDAAyD;QACzD,IAAI,cAAgC,CAAC;QAErC,IAAI,WAAW,CAAC,cAAc,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;YAC5D,gEAAgE;YAChE,cAAc,GAAG,IAAI,gBAAgB,CAAC;gBACpC,WAAW,EAAE,WAAW,CAAC,cAAc;gBACvC,UAAU,EAAE,WAAW,CAAC,aAAa;aACtC,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,CAAC;YAC5C,2DAA2D;YAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAClD,WAAW,CAAC,oBAAoB,CACjC,CAAC;YACF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC9D,kFAAkF;gBAClF,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACzC,cAAc,GAAG,IAAI,gBAAgB,CAAC;oBACpC,WAAW,EAAE,WAAY;oBACzB,UAAU,EAAE,WAAW,CAAC,aAAa;iBACtC,CAAC,CAAC;gBACH,OAAO,CAAC,KAAK,CACX,yCAAyC,EACzC,GAAG,CAAC,WAAW,CAChB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,kDAAkD;gBAClD,cAAc,GAAG,IAAI,gBAAgB,CAAC;oBACpC,WAAW,EAAE,WAAW,CAAC,aAAa;oBACtC,UAAU,EAAE,WAAW,CAAC,YAAY;iBACrC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CACV,wDAAwD,EACxD,GAAG,CAAC,WAAW,CAChB,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,cAAc,GAAG,IAAI,gBAAgB,CAAC;gBACpC,WAAW,EAAE,WAAW,CAAC,aAAa;gBACtC,UAAU,EAAE,WAAW,CAAC,YAAY;aACrC,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/D,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GACjC,MAAM,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAE7C,MAAM,UAAU,GAAa,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;YACtD,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;YAE1D,MAAM,aAAa,GAAG,CAAC,GAAuB,EAAsB,EAAE,CACpE,GAAG,EAAE,IAAI,EAAE,CAAC;YAEd,IAAI,WAAW,CAAC,oBAAoB,EAAE,CAAC;gBACrC,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAClD,WAAW,CAAC,oBAAoB,CACjC,CAAC;gBAEF,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;oBACxC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;oBAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,SAAS;oBACX,CAAC;oBAED,IAAI,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjC,SAAS;oBACX,CAAC;oBAED,IAAI,WAAW,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;wBAC9C,SAAS;oBACX,CAAC;oBAED,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;iBAAM,IAAI,cAAc,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;gBAC5D,IAAI,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YAED,MAAM,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAElD,OAAO;gBACL,cAAc;gBACd,mBAAmB;gBACnB,SAAS;aACV,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEe,KAAK,CAAC,cAAc;QAClC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAElD,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;YAC9B,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACrC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAE5C,OAAO;YACL,OAAO;YACP,QAAQ;YACR,UAAU;YACV,KAAK;SACN,CAAC;IACJ,CAAC;CACF;AAED,SAAS,uBAAuB,CAAC,GAAW;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC;AAC3D,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAGf,CAAC;QAEF,MAAM,SAAS,GACb,OAAO,CAAC,SAAS,YAAY,IAAI;YAC/B,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;YACjC,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,YAAY,IAAI;YAC9B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;YAChC,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACL,SAAS;YACT,QAAQ;SACT,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,UAA4B;IACzD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC;YACT,GAAG,EAAE,UAAU;YACf,GAAG,QAAQ;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAiC;IAC9D,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;YAC9C,QAAQ,GAAG,SAAS,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAiC;IAC7D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;SAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { SigningMaterial } from "@naylence/core";
|
|
2
|
-
import { AuthInjectionStrategyFactory, getLogger, SigningConfigClass, } from "@naylence/runtime
|
|
2
|
+
import { AuthInjectionStrategyFactory, getLogger, SigningConfigClass, } from "@naylence/runtime";
|
|
3
3
|
import { CAServiceClient, } from "./ca-service-client.js";
|
|
4
4
|
import { CertificateRequestError } from "./ca-types.js";
|
|
5
5
|
import { GRANT_PURPOSE_CA_SIGN } from "./grants.js";
|
|
6
6
|
import { validateJwkX5cCertificate } from "./util.js";
|
|
7
|
+
import { createEd25519CsrFromPem } from "./node-ed25519-csr.js";
|
|
7
8
|
const logger = getLogger("naylence.fame.security.cert.default_certificate_manager");
|
|
8
9
|
const ENV_VAR_FAME_CA_CERTS = "FAME_CA_CERTS";
|
|
9
10
|
const CONNECTION_GRANTS_CAMEL = "connectionGrants";
|
|
@@ -18,6 +19,10 @@ export class DefaultCertificateManager {
|
|
|
18
19
|
this.caServiceUrl = options.caServiceUrl ?? null;
|
|
19
20
|
this.cryptoProviderOverride =
|
|
20
21
|
options.cryptoProvider ?? options.crypto_provider ?? null;
|
|
22
|
+
this.certificateMaterialResolver = normalizeCertificateMaterialResolver(options.certificateMaterial ?? null);
|
|
23
|
+
this.trustStorePemResolver = normalizeTrustStorePemResolver(options.trustStorePem ?? null);
|
|
24
|
+
this.certificatePersistenceHook =
|
|
25
|
+
normalizeCertificatePersistenceHook(options.persistCertificateMaterial ?? null);
|
|
21
26
|
}
|
|
22
27
|
setSigning(signing) {
|
|
23
28
|
this.signing = normalizeSigningConfig(signing);
|
|
@@ -134,11 +139,14 @@ export class DefaultCertificateManager {
|
|
|
134
139
|
});
|
|
135
140
|
}
|
|
136
141
|
}
|
|
142
|
+
if (!material) {
|
|
143
|
+
material = await this.resolveCertificateMaterialFromInjectedSources(cryptoProvider, nodeId);
|
|
144
|
+
}
|
|
137
145
|
if (!material) {
|
|
138
146
|
logger.debug("attempting_certificate_resolution_from_environment", {
|
|
139
147
|
system_id: nodeId,
|
|
140
148
|
});
|
|
141
|
-
material = await
|
|
149
|
+
material = await resolveCertificateMaterialFromEnvironment();
|
|
142
150
|
}
|
|
143
151
|
if (!material) {
|
|
144
152
|
logger.warning("certificate_material_not_found", {
|
|
@@ -148,7 +156,7 @@ export class DefaultCertificateManager {
|
|
|
148
156
|
});
|
|
149
157
|
return false;
|
|
150
158
|
}
|
|
151
|
-
const stored = storeCertificateMaterial(cryptoProvider, material);
|
|
159
|
+
const stored = await this.storeCertificateMaterial(cryptoProvider, material, nodeId);
|
|
152
160
|
if (!stored) {
|
|
153
161
|
logger.warning("certificate_storage_not_supported", {
|
|
154
162
|
system_id: nodeId,
|
|
@@ -232,6 +240,49 @@ export class DefaultCertificateManager {
|
|
|
232
240
|
});
|
|
233
241
|
return true;
|
|
234
242
|
}
|
|
243
|
+
async resolveCertificateMaterialFromInjectedSources(provider, nodeId) {
|
|
244
|
+
const providerMaterial = await this.resolveCertificateMaterialFromProvider(provider, nodeId);
|
|
245
|
+
if (providerMaterial) {
|
|
246
|
+
logger.debug("certificate_material_resolved_from_provider", {
|
|
247
|
+
system_id: nodeId,
|
|
248
|
+
});
|
|
249
|
+
return providerMaterial;
|
|
250
|
+
}
|
|
251
|
+
if (this.certificateMaterialResolver) {
|
|
252
|
+
try {
|
|
253
|
+
const material = await this.certificateMaterialResolver();
|
|
254
|
+
if (material) {
|
|
255
|
+
logger.debug("certificate_material_resolved_from_options", {
|
|
256
|
+
system_id: nodeId,
|
|
257
|
+
});
|
|
258
|
+
return material;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
logger.debug("certificate_material_option_resolution_failed", {
|
|
263
|
+
system_id: nodeId,
|
|
264
|
+
error: error instanceof Error ? error.message : String(error),
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
async resolveCertificateMaterialFromProvider(provider, nodeId) {
|
|
271
|
+
if (typeof provider.resolveCertificateMaterial !== "function") {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
try {
|
|
275
|
+
const material = await provider.resolveCertificateMaterial();
|
|
276
|
+
return normalizeCertificateMaterial(material ?? null);
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
logger.debug("provider_certificate_material_resolution_failed", {
|
|
280
|
+
system_id: nodeId,
|
|
281
|
+
error: error instanceof Error ? error.message : String(error),
|
|
282
|
+
});
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
235
286
|
getCaSignGrant(connectionGrants) {
|
|
236
287
|
if (!Array.isArray(connectionGrants)) {
|
|
237
288
|
return null;
|
|
@@ -279,22 +330,8 @@ export class DefaultCertificateManager {
|
|
|
279
330
|
const logicals = Array.isArray(welcomeFrame.acceptedLogicals)
|
|
280
331
|
? welcomeFrame.acceptedLogicals.filter((value) => typeof value === "string")
|
|
281
332
|
: [];
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
node_id: nodeId,
|
|
285
|
-
});
|
|
286
|
-
return null;
|
|
287
|
-
}
|
|
288
|
-
let csrPem;
|
|
289
|
-
try {
|
|
290
|
-
const result = provider.createCsr(nodeId, physicalPath, logicals);
|
|
291
|
-
csrPem = typeof result === "string" ? result : await result;
|
|
292
|
-
}
|
|
293
|
-
catch (error) {
|
|
294
|
-
logger.error("csr_generation_failed", {
|
|
295
|
-
node_id: nodeId,
|
|
296
|
-
error: error instanceof Error ? error.message : String(error),
|
|
297
|
-
});
|
|
333
|
+
const csrPem = await this.buildCertificateSigningRequest(provider, nodeId, physicalPath, logicals);
|
|
334
|
+
if (!csrPem) {
|
|
298
335
|
return null;
|
|
299
336
|
}
|
|
300
337
|
const caServiceUrl = options?.caServiceUrl ?? this.caServiceUrl ?? grant.url;
|
|
@@ -376,11 +413,11 @@ export class DefaultCertificateManager {
|
|
|
376
413
|
return AuthInjectionStrategyFactory.createAuthInjectionStrategy(normalizedConfig);
|
|
377
414
|
}
|
|
378
415
|
async validateProviderCertificate(provider, nodeId) {
|
|
379
|
-
const trustStorePem = await
|
|
416
|
+
const { pem: trustStorePem, reason } = await this.resolveTrustStorePemValue(provider, nodeId);
|
|
380
417
|
if (!trustStorePem) {
|
|
381
418
|
logger.error("trust_anchor_validation_failed", {
|
|
382
419
|
node_id: nodeId,
|
|
383
|
-
reason:
|
|
420
|
+
reason: reason ?? "trust_store_unavailable",
|
|
384
421
|
});
|
|
385
422
|
return false;
|
|
386
423
|
}
|
|
@@ -448,6 +485,125 @@ export class DefaultCertificateManager {
|
|
|
448
485
|
return false;
|
|
449
486
|
}
|
|
450
487
|
}
|
|
488
|
+
async resolveTrustStorePemValue(provider, nodeId) {
|
|
489
|
+
const providerPem = await this.resolveTrustStorePemFromProvider(provider, nodeId);
|
|
490
|
+
if (providerPem) {
|
|
491
|
+
logger.debug("trust_store_resolved_from_provider", {
|
|
492
|
+
node_id: nodeId,
|
|
493
|
+
});
|
|
494
|
+
return { pem: providerPem };
|
|
495
|
+
}
|
|
496
|
+
if (this.trustStorePemResolver) {
|
|
497
|
+
try {
|
|
498
|
+
const pem = await this.trustStorePemResolver();
|
|
499
|
+
const normalized = normalizePemOrNull(pem);
|
|
500
|
+
if (normalized) {
|
|
501
|
+
logger.debug("trust_store_resolved_from_options", {
|
|
502
|
+
node_id: nodeId,
|
|
503
|
+
});
|
|
504
|
+
return { pem: normalized };
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
catch (error) {
|
|
508
|
+
logger.debug("trust_store_option_resolution_failed", {
|
|
509
|
+
node_id: nodeId,
|
|
510
|
+
error: error instanceof Error ? error.message : String(error),
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
const envPem = await resolveTrustStorePemFromEnvironment();
|
|
515
|
+
return {
|
|
516
|
+
pem: envPem,
|
|
517
|
+
reason: envPem ? undefined : `${ENV_VAR_FAME_CA_CERTS}_not_set`,
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
async resolveTrustStorePemFromProvider(provider, nodeId) {
|
|
521
|
+
if (typeof provider.resolveTrustStorePem !== "function") {
|
|
522
|
+
return null;
|
|
523
|
+
}
|
|
524
|
+
try {
|
|
525
|
+
const pem = await provider.resolveTrustStorePem();
|
|
526
|
+
return normalizePemOrNull(pem);
|
|
527
|
+
}
|
|
528
|
+
catch (error) {
|
|
529
|
+
logger.debug("provider_trust_store_resolution_failed", {
|
|
530
|
+
node_id: nodeId,
|
|
531
|
+
error: error instanceof Error ? error.message : String(error),
|
|
532
|
+
});
|
|
533
|
+
return null;
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
async storeCertificateMaterial(provider, material, nodeId) {
|
|
537
|
+
let stored = false;
|
|
538
|
+
if (typeof provider.storeSignedCertificate === "function") {
|
|
539
|
+
try {
|
|
540
|
+
await provider.storeSignedCertificate(material.certificatePem, material.certificateChainPem);
|
|
541
|
+
stored = true;
|
|
542
|
+
}
|
|
543
|
+
catch (error) {
|
|
544
|
+
logger.warning("failed_to_store_certificate", {
|
|
545
|
+
error: error instanceof Error ? error.message : String(error),
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
const persistenceHooks = [];
|
|
550
|
+
if (typeof provider.persistSignedCertificate === "function") {
|
|
551
|
+
persistenceHooks.push((hookMaterial, context) => provider.persistSignedCertificate(hookMaterial, context));
|
|
552
|
+
}
|
|
553
|
+
if (this.certificatePersistenceHook) {
|
|
554
|
+
persistenceHooks.push(this.certificatePersistenceHook);
|
|
555
|
+
}
|
|
556
|
+
for (const hook of persistenceHooks) {
|
|
557
|
+
try {
|
|
558
|
+
await hook(material, { nodeId });
|
|
559
|
+
stored = true;
|
|
560
|
+
}
|
|
561
|
+
catch (error) {
|
|
562
|
+
logger.debug("certificate_persistence_hook_failed", {
|
|
563
|
+
node_id: nodeId,
|
|
564
|
+
error: error instanceof Error ? error.message : String(error),
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
return stored;
|
|
569
|
+
}
|
|
570
|
+
async buildCertificateSigningRequest(provider, nodeId, physicalPath, logicals) {
|
|
571
|
+
const trimmedPath = physicalPath.trim();
|
|
572
|
+
if (!trimmedPath) {
|
|
573
|
+
logger.warning("certificate_request_missing_physical_path", {
|
|
574
|
+
node_id: nodeId,
|
|
575
|
+
});
|
|
576
|
+
return null;
|
|
577
|
+
}
|
|
578
|
+
const pemSource = provider;
|
|
579
|
+
const privateKeyPem = pemSource.signingPrivatePem?.trim() ?? "";
|
|
580
|
+
const publicKeyPem = pemSource.signingPublicPem?.trim() ?? "";
|
|
581
|
+
if (!privateKeyPem || !publicKeyPem) {
|
|
582
|
+
logger.error("crypto_provider_missing_signing_material", {
|
|
583
|
+
node_id: nodeId,
|
|
584
|
+
has_private: Boolean(privateKeyPem),
|
|
585
|
+
has_public: Boolean(publicKeyPem),
|
|
586
|
+
});
|
|
587
|
+
return null;
|
|
588
|
+
}
|
|
589
|
+
const sanitizedLogicals = logicals.filter((value) => typeof value === "string" && value.trim().length > 0);
|
|
590
|
+
try {
|
|
591
|
+
const { csrPem } = await createEd25519CsrFromPem({
|
|
592
|
+
privateKeyPem,
|
|
593
|
+
publicKeyPem,
|
|
594
|
+
commonName: nodeId,
|
|
595
|
+
logicals: sanitizedLogicals,
|
|
596
|
+
});
|
|
597
|
+
return csrPem;
|
|
598
|
+
}
|
|
599
|
+
catch (error) {
|
|
600
|
+
logger.error("csr_generation_failed", {
|
|
601
|
+
node_id: nodeId,
|
|
602
|
+
error: error instanceof Error ? error.message : String(error),
|
|
603
|
+
});
|
|
604
|
+
return null;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
451
607
|
}
|
|
452
608
|
function normalizeSigningConfig(value) {
|
|
453
609
|
if (value instanceof SigningConfigClass) {
|
|
@@ -458,7 +614,49 @@ function normalizeSigningConfig(value) {
|
|
|
458
614
|
}
|
|
459
615
|
return new SigningConfigClass();
|
|
460
616
|
}
|
|
461
|
-
|
|
617
|
+
function normalizeCertificateMaterial(material) {
|
|
618
|
+
if (!material) {
|
|
619
|
+
return null;
|
|
620
|
+
}
|
|
621
|
+
const certificatePem = normalizePemOrNull(material.certificatePem);
|
|
622
|
+
if (!certificatePem) {
|
|
623
|
+
return null;
|
|
624
|
+
}
|
|
625
|
+
const certificateChainPem = normalizePemOrNull(material.certificateChainPem ?? null);
|
|
626
|
+
return {
|
|
627
|
+
certificatePem,
|
|
628
|
+
certificateChainPem,
|
|
629
|
+
};
|
|
630
|
+
}
|
|
631
|
+
function normalizeCertificateMaterialResolver(source) {
|
|
632
|
+
if (!source) {
|
|
633
|
+
return null;
|
|
634
|
+
}
|
|
635
|
+
if (typeof source === "function") {
|
|
636
|
+
return async () => normalizeCertificateMaterial(await source());
|
|
637
|
+
}
|
|
638
|
+
const normalized = normalizeCertificateMaterial(source);
|
|
639
|
+
return normalized ? async () => normalized : null;
|
|
640
|
+
}
|
|
641
|
+
function normalizeTrustStorePemResolver(source) {
|
|
642
|
+
if (!source) {
|
|
643
|
+
return null;
|
|
644
|
+
}
|
|
645
|
+
if (typeof source === "function") {
|
|
646
|
+
return async () => normalizePemOrNull(await source());
|
|
647
|
+
}
|
|
648
|
+
const normalized = normalizePemOrNull(source);
|
|
649
|
+
return normalized ? async () => normalized : null;
|
|
650
|
+
}
|
|
651
|
+
function normalizeCertificatePersistenceHook(hook) {
|
|
652
|
+
if (!hook) {
|
|
653
|
+
return null;
|
|
654
|
+
}
|
|
655
|
+
return async (material, context) => {
|
|
656
|
+
await hook(material, context);
|
|
657
|
+
};
|
|
658
|
+
}
|
|
659
|
+
async function resolveCertificateMaterialFromEnvironment() {
|
|
462
660
|
const certificatePem = await resolvePemFromEnvironment("FAME_NODE_CERT_PEM", "FAME_NODE_CERT_FILE");
|
|
463
661
|
if (!certificatePem) {
|
|
464
662
|
return null;
|
|
@@ -474,8 +672,9 @@ async function resolvePemFromEnvironment(envVar, fileVar) {
|
|
|
474
672
|
return null;
|
|
475
673
|
}
|
|
476
674
|
const inlineValue = process.env?.[envVar];
|
|
477
|
-
|
|
478
|
-
|
|
675
|
+
const inline = normalizePemOrNull(inlineValue ?? null);
|
|
676
|
+
if (inline) {
|
|
677
|
+
return inline;
|
|
479
678
|
}
|
|
480
679
|
const filePath = process.env?.[fileVar];
|
|
481
680
|
if (!filePath || filePath.trim().length === 0) {
|
|
@@ -490,7 +689,7 @@ async function resolvePemFromEnvironment(envVar, fileVar) {
|
|
|
490
689
|
try {
|
|
491
690
|
const fs = await import("node:fs/promises");
|
|
492
691
|
const content = await fs.readFile(filePath, "utf8");
|
|
493
|
-
return
|
|
692
|
+
return normalizePemOrNull(content);
|
|
494
693
|
}
|
|
495
694
|
catch (error) {
|
|
496
695
|
logger.warning("failed_to_read_certificate_file", {
|
|
@@ -503,6 +702,13 @@ async function resolvePemFromEnvironment(envVar, fileVar) {
|
|
|
503
702
|
function normalizePem(value) {
|
|
504
703
|
return value.replace(/\r/g, "").trim();
|
|
505
704
|
}
|
|
705
|
+
function normalizePemOrNull(value) {
|
|
706
|
+
if (!value) {
|
|
707
|
+
return null;
|
|
708
|
+
}
|
|
709
|
+
const normalized = normalizePem(value);
|
|
710
|
+
return normalized.length > 0 ? normalized : null;
|
|
711
|
+
}
|
|
506
712
|
function hasProcessEnv() {
|
|
507
713
|
return typeof process !== "undefined" && !!process?.env;
|
|
508
714
|
}
|
|
@@ -534,21 +740,6 @@ function providerHasCertificate(provider) {
|
|
|
534
740
|
}
|
|
535
741
|
return false;
|
|
536
742
|
}
|
|
537
|
-
function storeCertificateMaterial(provider, material) {
|
|
538
|
-
if (typeof provider.storeSignedCertificate !== "function") {
|
|
539
|
-
return false;
|
|
540
|
-
}
|
|
541
|
-
try {
|
|
542
|
-
provider.storeSignedCertificate(material.certificatePem, material.certificateChainPem);
|
|
543
|
-
return true;
|
|
544
|
-
}
|
|
545
|
-
catch (error) {
|
|
546
|
-
logger.warning("failed_to_store_certificate", {
|
|
547
|
-
error: error instanceof Error ? error.message : String(error),
|
|
548
|
-
});
|
|
549
|
-
return false;
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
743
|
function readFrameValue(frame, ...keys) {
|
|
553
744
|
const record = frame;
|
|
554
745
|
for (const key of keys) {
|
|
@@ -603,7 +794,7 @@ function normalizeAuthConfig(candidate) {
|
|
|
603
794
|
}
|
|
604
795
|
return normalized;
|
|
605
796
|
}
|
|
606
|
-
async function
|
|
797
|
+
async function resolveTrustStorePemFromEnvironment() {
|
|
607
798
|
if (!hasProcessEnv()) {
|
|
608
799
|
return null;
|
|
609
800
|
}
|
|
@@ -611,8 +802,9 @@ async function resolveTrustStorePem() {
|
|
|
611
802
|
if (!rawValue || rawValue.trim().length === 0) {
|
|
612
803
|
return null;
|
|
613
804
|
}
|
|
614
|
-
|
|
615
|
-
|
|
805
|
+
const trimmed = rawValue.trim();
|
|
806
|
+
if (trimmed.startsWith("-----BEGIN")) {
|
|
807
|
+
return normalizePem(trimmed);
|
|
616
808
|
}
|
|
617
809
|
if (!isNodeProcess()) {
|
|
618
810
|
logger.debug("trust_store_file_unavailable_in_browser", {
|
|
@@ -620,11 +812,14 @@ async function resolveTrustStorePem() {
|
|
|
620
812
|
});
|
|
621
813
|
return null;
|
|
622
814
|
}
|
|
623
|
-
const filePath =
|
|
815
|
+
const filePath = trimmed;
|
|
816
|
+
if (!filePath) {
|
|
817
|
+
return null;
|
|
818
|
+
}
|
|
624
819
|
try {
|
|
625
820
|
const fs = await import("node:fs/promises");
|
|
626
821
|
const content = await fs.readFile(filePath, "utf8");
|
|
627
|
-
return content
|
|
822
|
+
return normalizePemOrNull(content);
|
|
628
823
|
}
|
|
629
824
|
catch (error) {
|
|
630
825
|
logger.error("failed_to_read_trust_store", {
|