@naylence/advanced-security 0.3.5-test.0 → 0.3.5-test.101
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 +25 -16
- package/dist/browser/index.js.map +1 -1
- package/dist/cjs/browser.js +13 -28
- package/dist/cjs/browser.js.map +1 -1
- package/dist/cjs/index.js +5 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/naylence/fame/factory-manifest.js +1 -4
- package/dist/cjs/naylence/fame/factory-manifest.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/ca-service-client.js +9 -15
- package/dist/cjs/naylence/fame/security/cert/ca-service-client.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/ca-service-factory.js +7 -11
- package/dist/cjs/naylence/fame/security/cert/ca-service-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/ca-types.js +2 -7
- package/dist/cjs/naylence/fame/security/cert/ca-types.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/default-ca-service-factory.js +6 -10
- package/dist/cjs/naylence/fame/security/cert/default-ca-service-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/default-ca-service.js +29 -66
- package/dist/cjs/naylence/fame/security/cert/default-ca-service.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/default-certificate-manager-factory.js +12 -16
- package/dist/cjs/naylence/fame/security/cert/default-certificate-manager-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/default-certificate-manager.js +22 -59
- package/dist/cjs/naylence/fame/security/cert/default-certificate-manager.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/grants.js +1 -4
- package/dist/cjs/naylence/fame/security/cert/grants.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/index.js +10 -50
- package/dist/cjs/naylence/fame/security/cert/index.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/internal-ca-service.js +79 -122
- package/dist/cjs/naylence/fame/security/cert/internal-ca-service.js.map +1 -1
- package/dist/cjs/naylence/fame/security/cert/util.js +26 -30
- package/dist/cjs/naylence/fame/security/cert/util.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/channel/channel-encryption-manager-factory.js +10 -14
- package/dist/cjs/naylence/fame/security/encryption/channel/channel-encryption-manager-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/channel/channel-encryption-manager.js +32 -36
- package/dist/cjs/naylence/fame/security/encryption/channel/channel-encryption-manager.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/channel/index.js +2 -7
- package/dist/cjs/naylence/fame/security/encryption/channel/index.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/composite-encryption-manager-factory.js +10 -14
- package/dist/cjs/naylence/fame/security/encryption/composite-encryption-manager-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/composite-encryption-manager.js +7 -11
- package/dist/cjs/naylence/fame/security/encryption/composite-encryption-manager.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/default-secure-channel-manager-factory.js +7 -11
- package/dist/cjs/naylence/fame/security/encryption/default-secure-channel-manager-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/default-secure-channel-manager.js +19 -23
- package/dist/cjs/naylence/fame/security/encryption/default-secure-channel-manager.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/encryption-manager-registry.js +9 -15
- package/dist/cjs/naylence/fame/security/encryption/encryption-manager-registry.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/index.js +6 -15
- package/dist/cjs/naylence/fame/security/encryption/index.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/sealed/index.js +2 -7
- package/dist/cjs/naylence/fame/security/encryption/sealed/index.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/sealed/x25519-encryption-manager-factory.js +8 -12
- package/dist/cjs/naylence/fame/security/encryption/sealed/x25519-encryption-manager-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/encryption/sealed/x25519-encryption-manager.js +26 -30
- package/dist/cjs/naylence/fame/security/encryption/sealed/x25519-encryption-manager.js.map +1 -1
- package/dist/cjs/naylence/fame/security/index.js +5 -10
- package/dist/cjs/naylence/fame/security/index.js.map +1 -1
- package/dist/cjs/naylence/fame/security/keys/index.js +2 -8
- package/dist/cjs/naylence/fame/security/keys/index.js.map +1 -1
- package/dist/cjs/naylence/fame/security/keys/x5c-key-manager-factory.js +9 -13
- package/dist/cjs/naylence/fame/security/keys/x5c-key-manager-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/keys/x5c-key-manager.js +16 -52
- package/dist/cjs/naylence/fame/security/keys/x5c-key-manager.js.map +1 -1
- package/dist/cjs/naylence/fame/security/register-advanced-security-factories.js +8 -44
- package/dist/cjs/naylence/fame/security/register-advanced-security-factories.js.map +1 -1
- package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-signer-factory.js +6 -43
- package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-signer-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-verifier-factory.js +8 -12
- package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-verifier-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-verifier.js +33 -70
- package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-verifier.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/aft-helper.js +8 -13
- package/dist/cjs/naylence/fame/stickiness/aft-helper.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/aft-load-balancer-stickiness-manager-factory.js +12 -16
- package/dist/cjs/naylence/fame/stickiness/aft-load-balancer-stickiness-manager-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/aft-load-balancer-stickiness-manager.js +10 -14
- package/dist/cjs/naylence/fame/stickiness/aft-load-balancer-stickiness-manager.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/aft-model.js +6 -14
- package/dist/cjs/naylence/fame/stickiness/aft-model.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/aft-replica-stickiness-manager-factory.js +12 -16
- package/dist/cjs/naylence/fame/stickiness/aft-replica-stickiness-manager-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/aft-replica-stickiness-manager.js +13 -18
- package/dist/cjs/naylence/fame/stickiness/aft-replica-stickiness-manager.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/aft-signer.js +23 -30
- package/dist/cjs/naylence/fame/stickiness/aft-signer.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/aft-utils.js +3 -8
- package/dist/cjs/naylence/fame/stickiness/aft-utils.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/aft-verifier.js +21 -28
- package/dist/cjs/naylence/fame/stickiness/aft-verifier.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/index.js +10 -39
- package/dist/cjs/naylence/fame/stickiness/index.js.map +1 -1
- package/dist/cjs/naylence/fame/stickiness/stickiness-mode.js +3 -7
- package/dist/cjs/naylence/fame/stickiness/stickiness-mode.js.map +1 -1
- package/dist/cjs/naylence/fame/welcome/advanced-welcome-service-factory.js +14 -18
- package/dist/cjs/naylence/fame/welcome/advanced-welcome-service-factory.js.map +1 -1
- package/dist/cjs/naylence/fame/welcome/advanced-welcome-service.js +14 -18
- package/dist/cjs/naylence/fame/welcome/advanced-welcome-service.js.map +1 -1
- package/dist/cjs/naylence/fame/welcome/index.js +2 -8
- package/dist/cjs/naylence/fame/welcome/index.js.map +1 -1
- package/dist/cjs/plugin.js +8 -10
- package/dist/cjs/plugin.js.map +1 -1
- package/dist/cjs/version.js +8 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/browser.js +2 -0
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/default-certificate-manager-factory.js +2 -2
- package/dist/esm/naylence/fame/security/cert/default-certificate-manager-factory.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/default-certificate-manager.js +1 -1
- package/dist/esm/naylence/fame/security/cert/default-certificate-manager.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/internal-ca-service.js +1 -1
- package/dist/esm/naylence/fame/security/cert/internal-ca-service.js.map +1 -1
- package/dist/esm/naylence/fame/security/cert/util.js +1 -1
- package/dist/esm/naylence/fame/security/cert/util.js.map +1 -1
- package/dist/esm/plugin.js +2 -0
- package/dist/esm/plugin.js.map +1 -1
- package/dist/esm/version.js +8 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/types/browser.d.ts +1 -0
- package/dist/types/browser.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/default-certificate-manager-factory.d.ts +3 -3
- package/dist/types/naylence/fame/security/cert/default-certificate-manager-factory.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/cert/default-certificate-manager.d.ts +1 -1
- package/dist/types/naylence/fame/security/cert/default-certificate-manager.d.ts.map +1 -1
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/version.d.ts +6 -0
- package/dist/types/version.d.ts.map +1 -0
- package/package.json +5 -4
|
@@ -1,61 +1,18 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Certificate Authority signing service for node certificates.
|
|
4
3
|
*
|
|
5
4
|
* Provides in-process API for issuing certificates with node physical
|
|
6
5
|
* and host-like logical address information using SPIFFE-compliant identities.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.CASigningService = exports.NODE_ID_OID = exports.LOGICALS_OID = exports.SID_OID = void 0;
|
|
43
|
-
exports.createTestCA = createTestCA;
|
|
44
|
-
exports.extractSpiffeIdFromCert = extractSpiffeIdFromCert;
|
|
45
|
-
exports.extractSidFromCert = extractSidFromCert;
|
|
46
|
-
exports.extractNodeIdFromCert = extractNodeIdFromCert;
|
|
47
|
-
exports.extractLogicalHostsFromCert = extractLogicalHostsFromCert;
|
|
48
|
-
exports.extractSidFromSpiffeId = extractSidFromSpiffeId;
|
|
49
|
-
exports.verifyCertSidIntegrity = verifyCertSidIntegrity;
|
|
50
|
-
const asn1_schema_1 = require("@peculiar/asn1-schema");
|
|
51
|
-
const asn1_x509_1 = require("@peculiar/asn1-x509");
|
|
52
|
-
const asn1_csr_1 = require("@peculiar/asn1-csr");
|
|
53
|
-
const runtime_1 = require("@naylence/runtime");
|
|
54
|
-
const ca_types_js_1 = require("./ca-types.js");
|
|
7
|
+
import { AsnConvert, OctetString } from "@peculiar/asn1-schema";
|
|
8
|
+
import { AlgorithmIdentifier, AttributeTypeAndValue, AttributeValue, AuthorityKeyIdentifier, BasicConstraints, Certificate, Extension, Extensions, ExtendedKeyUsage, GeneralName, GeneralSubtree, GeneralSubtrees, KeyIdentifier, KeyUsage as X509KeyUsage, KeyUsageFlags, Name, NameConstraints, RelativeDistinguishedName, SubjectAlternativeName, SubjectPublicKeyInfo, SubjectKeyIdentifier, TBSCertificate, Validity, Version, id_ce_authorityKeyIdentifier, id_ce_basicConstraints, id_ce_extKeyUsage, id_ce_keyUsage, id_ce_nameConstraints, id_ce_subjectAltName, id_ce_subjectKeyIdentifier, id_kp_clientAuth, id_kp_serverAuth, } from "@peculiar/asn1-x509";
|
|
9
|
+
import { CertificationRequest } from "@peculiar/asn1-csr";
|
|
10
|
+
import { secureDigest, validateHostLogical } from "@naylence/runtime/node";
|
|
11
|
+
import { CAService } from "./ca-types.js";
|
|
55
12
|
// Certificate extension OIDs (using placeholder PEN)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
13
|
+
export const SID_OID = "1.3.6.1.4.1.58530.1";
|
|
14
|
+
export const LOGICALS_OID = "1.3.6.1.4.1.58530.2";
|
|
15
|
+
export const NODE_ID_OID = "1.3.6.1.4.1.58530.4";
|
|
59
16
|
const ED25519_OID = "1.3.101.112";
|
|
60
17
|
let x509ModulePromise = null;
|
|
61
18
|
let cryptoPromise = null;
|
|
@@ -65,7 +22,8 @@ let subtleCryptoPromise = null;
|
|
|
65
22
|
*/
|
|
66
23
|
async function loadX509Module() {
|
|
67
24
|
if (!x509ModulePromise) {
|
|
68
|
-
x509ModulePromise =
|
|
25
|
+
x509ModulePromise = import("@peculiar/x509")
|
|
26
|
+
.then((mod) => {
|
|
69
27
|
if (mod && typeof mod.X509Certificate === "function") {
|
|
70
28
|
return mod;
|
|
71
29
|
}
|
|
@@ -85,7 +43,7 @@ async function ensureCrypto() {
|
|
|
85
43
|
if (!cryptoPromise) {
|
|
86
44
|
if (typeof process !== "undefined" &&
|
|
87
45
|
typeof process.versions?.node === "string") {
|
|
88
|
-
cryptoPromise =
|
|
46
|
+
cryptoPromise = import("crypto").then((cryptoModule) => {
|
|
89
47
|
const webcrypto = cryptoModule
|
|
90
48
|
.webcrypto;
|
|
91
49
|
if (!webcrypto || !webcrypto.subtle) {
|
|
@@ -147,7 +105,7 @@ function toArrayBuffer(view) {
|
|
|
147
105
|
return new Uint8Array(view).buffer;
|
|
148
106
|
}
|
|
149
107
|
function serializeAsn(value) {
|
|
150
|
-
return
|
|
108
|
+
return AsnConvert.serialize(value);
|
|
151
109
|
}
|
|
152
110
|
function hexToArrayBuffer(hex) {
|
|
153
111
|
const normalized = hex.length % 2 === 0 ? hex : `0${hex}`;
|
|
@@ -165,26 +123,26 @@ async function createEd25519Certificate(options) {
|
|
|
165
123
|
const issuerName = cloneName(options.issuer);
|
|
166
124
|
const subjectName = cloneName(options.subject);
|
|
167
125
|
const subjectSpki = await subtle.exportKey("spki", options.subjectPublicKey);
|
|
168
|
-
const subjectPublicKeyInfo =
|
|
169
|
-
subjectPublicKeyInfo.algorithm = new
|
|
126
|
+
const subjectPublicKeyInfo = AsnConvert.parse(subjectSpki, SubjectPublicKeyInfo);
|
|
127
|
+
subjectPublicKeyInfo.algorithm = new AlgorithmIdentifier({
|
|
170
128
|
algorithm: ED25519_OID,
|
|
171
129
|
});
|
|
172
|
-
const signatureAlgorithm = new
|
|
130
|
+
const signatureAlgorithm = new AlgorithmIdentifier({
|
|
173
131
|
algorithm: ED25519_OID,
|
|
174
132
|
});
|
|
175
133
|
const extensions = options.extensions?.length
|
|
176
|
-
? new
|
|
134
|
+
? new Extensions(options.extensions.map((ext) => new Extension({
|
|
177
135
|
extnID: ext.type,
|
|
178
136
|
critical: ext.critical,
|
|
179
|
-
extnValue: new
|
|
137
|
+
extnValue: new OctetString(ext.value),
|
|
180
138
|
})))
|
|
181
139
|
: undefined;
|
|
182
|
-
const tbsCertificate = new
|
|
183
|
-
version:
|
|
140
|
+
const tbsCertificate = new TBSCertificate({
|
|
141
|
+
version: Version.v3,
|
|
184
142
|
serialNumber: hexToArrayBuffer(serialHex),
|
|
185
143
|
signature: signatureAlgorithm,
|
|
186
144
|
issuer: issuerName,
|
|
187
|
-
validity: new
|
|
145
|
+
validity: new Validity({
|
|
188
146
|
notBefore: options.notBefore,
|
|
189
147
|
notAfter: options.notAfter,
|
|
190
148
|
}),
|
|
@@ -192,15 +150,15 @@ async function createEd25519Certificate(options) {
|
|
|
192
150
|
subjectPublicKeyInfo,
|
|
193
151
|
extensions,
|
|
194
152
|
});
|
|
195
|
-
const tbsDer =
|
|
153
|
+
const tbsDer = AsnConvert.serialize(tbsCertificate);
|
|
196
154
|
const signature = await subtle.sign("Ed25519", options.signingKey, tbsDer);
|
|
197
|
-
const certificate = new
|
|
155
|
+
const certificate = new Certificate({
|
|
198
156
|
tbsCertificate,
|
|
199
157
|
signatureAlgorithm,
|
|
200
158
|
signatureValue: signature,
|
|
201
159
|
});
|
|
202
160
|
certificate.tbsCertificateRaw = tbsDer;
|
|
203
|
-
return
|
|
161
|
+
return AsnConvert.serialize(certificate);
|
|
204
162
|
}
|
|
205
163
|
function derToPem(der, label) {
|
|
206
164
|
const base64 = bufferToBase64(der);
|
|
@@ -231,10 +189,10 @@ const OID_COMMON_NAME = "2.5.4.3";
|
|
|
231
189
|
const OID_ORGANIZATIONAL_UNIT = "2.5.4.11";
|
|
232
190
|
const OID_ORGANIZATION = "2.5.4.10";
|
|
233
191
|
function createRelativeDistinguishedName(oid, value) {
|
|
234
|
-
return new
|
|
235
|
-
new
|
|
192
|
+
return new RelativeDistinguishedName([
|
|
193
|
+
new AttributeTypeAndValue({
|
|
236
194
|
type: oid,
|
|
237
|
-
value: new
|
|
195
|
+
value: new AttributeValue({ utf8String: value }),
|
|
238
196
|
}),
|
|
239
197
|
]);
|
|
240
198
|
}
|
|
@@ -248,56 +206,56 @@ function buildCertificateName(commonName, organization, organizationalUnit) {
|
|
|
248
206
|
if (organization) {
|
|
249
207
|
rdns.push(createRelativeDistinguishedName(OID_ORGANIZATION, organization));
|
|
250
208
|
}
|
|
251
|
-
return new
|
|
209
|
+
return new Name(rdns);
|
|
252
210
|
}
|
|
253
211
|
function cloneName(name) {
|
|
254
|
-
return
|
|
212
|
+
return AsnConvert.parse(AsnConvert.serialize(name), Name);
|
|
255
213
|
}
|
|
256
214
|
function getCertificateIdentity(cert) {
|
|
257
|
-
const parsed =
|
|
215
|
+
const parsed = AsnConvert.parse(cert.rawData, Certificate);
|
|
258
216
|
return {
|
|
259
217
|
name: cloneName(parsed.tbsCertificate.subject),
|
|
260
|
-
subjectPublicKeyInfo:
|
|
218
|
+
subjectPublicKeyInfo: AsnConvert.serialize(parsed.tbsCertificate.subjectPublicKeyInfo),
|
|
261
219
|
};
|
|
262
220
|
}
|
|
263
221
|
async function buildCaExtensions(subjectPublicKey, issuerPublicKey, options) {
|
|
264
222
|
const extensions = [];
|
|
265
|
-
const basicConstraints = new
|
|
223
|
+
const basicConstraints = new BasicConstraints({ cA: true });
|
|
266
224
|
if (options.pathLength !== null && options.pathLength !== undefined) {
|
|
267
225
|
basicConstraints.pathLenConstraint = options.pathLength;
|
|
268
226
|
}
|
|
269
227
|
extensions.push({
|
|
270
|
-
type:
|
|
228
|
+
type: id_ce_basicConstraints,
|
|
271
229
|
critical: true,
|
|
272
230
|
value: serializeAsn(basicConstraints),
|
|
273
231
|
});
|
|
274
|
-
const keyUsageFlags =
|
|
275
|
-
|
|
276
|
-
|
|
232
|
+
const keyUsageFlags = KeyUsageFlags.digitalSignature |
|
|
233
|
+
KeyUsageFlags.keyCertSign |
|
|
234
|
+
KeyUsageFlags.cRLSign;
|
|
277
235
|
extensions.push({
|
|
278
|
-
type:
|
|
236
|
+
type: id_ce_keyUsage,
|
|
279
237
|
critical: true,
|
|
280
|
-
value: serializeAsn(new
|
|
238
|
+
value: serializeAsn(new X509KeyUsage(keyUsageFlags)),
|
|
281
239
|
});
|
|
282
240
|
const subjectKeyId = await computeKeyIdentifier(subjectPublicKey);
|
|
283
241
|
extensions.push({
|
|
284
|
-
type:
|
|
242
|
+
type: id_ce_subjectKeyIdentifier,
|
|
285
243
|
critical: false,
|
|
286
|
-
value: serializeAsn(new
|
|
244
|
+
value: serializeAsn(new SubjectKeyIdentifier(subjectKeyId)),
|
|
287
245
|
});
|
|
288
246
|
const authorityKeyId = await computeKeyIdentifier(issuerPublicKey);
|
|
289
247
|
extensions.push({
|
|
290
|
-
type:
|
|
248
|
+
type: id_ce_authorityKeyIdentifier,
|
|
291
249
|
critical: false,
|
|
292
|
-
value: serializeAsn(new
|
|
293
|
-
keyIdentifier: new
|
|
250
|
+
value: serializeAsn(new AuthorityKeyIdentifier({
|
|
251
|
+
keyIdentifier: new KeyIdentifier(authorityKeyId),
|
|
294
252
|
})),
|
|
295
253
|
});
|
|
296
254
|
if (options.permittedDnsDomains?.length) {
|
|
297
|
-
const permittedSubtrees = new
|
|
298
|
-
const constraints = new
|
|
255
|
+
const permittedSubtrees = new GeneralSubtrees(options.permittedDnsDomains.map((domain) => new GeneralSubtree({ base: new GeneralName({ dNSName: domain }) })));
|
|
256
|
+
const constraints = new NameConstraints({ permittedSubtrees });
|
|
299
257
|
extensions.push({
|
|
300
|
-
type:
|
|
258
|
+
type: id_ce_nameConstraints,
|
|
301
259
|
critical: true,
|
|
302
260
|
value: serializeAsn(constraints),
|
|
303
261
|
});
|
|
@@ -307,51 +265,51 @@ async function buildCaExtensions(subjectPublicKey, issuerPublicKey, options) {
|
|
|
307
265
|
async function buildLeafExtensions(publicKey, nodeSid, nodeId, spiffeId, logicalHosts, issuerPublicKey) {
|
|
308
266
|
const extensions = [];
|
|
309
267
|
extensions.push({
|
|
310
|
-
type:
|
|
268
|
+
type: id_ce_subjectAltName,
|
|
311
269
|
critical: false,
|
|
312
|
-
value: serializeAsn(new
|
|
313
|
-
new
|
|
270
|
+
value: serializeAsn(new SubjectAlternativeName([
|
|
271
|
+
new GeneralName({ uniformResourceIdentifier: spiffeId }),
|
|
314
272
|
])),
|
|
315
273
|
});
|
|
316
|
-
const keyUsageFlags =
|
|
274
|
+
const keyUsageFlags = KeyUsageFlags.digitalSignature;
|
|
317
275
|
extensions.push({
|
|
318
|
-
type:
|
|
276
|
+
type: id_ce_keyUsage,
|
|
319
277
|
critical: true,
|
|
320
|
-
value: serializeAsn(new
|
|
278
|
+
value: serializeAsn(new X509KeyUsage(keyUsageFlags)),
|
|
321
279
|
});
|
|
322
280
|
extensions.push({
|
|
323
|
-
type:
|
|
281
|
+
type: id_ce_extKeyUsage,
|
|
324
282
|
critical: false,
|
|
325
|
-
value: serializeAsn(new
|
|
283
|
+
value: serializeAsn(new ExtendedKeyUsage([id_kp_clientAuth, id_kp_serverAuth])),
|
|
326
284
|
});
|
|
327
285
|
const subjectKeyId = await computeKeyIdentifier(publicKey);
|
|
328
286
|
extensions.push({
|
|
329
|
-
type:
|
|
287
|
+
type: id_ce_subjectKeyIdentifier,
|
|
330
288
|
critical: false,
|
|
331
|
-
value: serializeAsn(new
|
|
289
|
+
value: serializeAsn(new SubjectKeyIdentifier(subjectKeyId)),
|
|
332
290
|
});
|
|
333
291
|
const authorityKeyId = await computeKeyIdentifier(issuerPublicKey);
|
|
334
292
|
extensions.push({
|
|
335
|
-
type:
|
|
293
|
+
type: id_ce_authorityKeyIdentifier,
|
|
336
294
|
critical: false,
|
|
337
|
-
value: serializeAsn(new
|
|
338
|
-
keyIdentifier: new
|
|
295
|
+
value: serializeAsn(new AuthorityKeyIdentifier({
|
|
296
|
+
keyIdentifier: new KeyIdentifier(authorityKeyId),
|
|
339
297
|
})),
|
|
340
298
|
});
|
|
341
299
|
extensions.push({
|
|
342
|
-
type:
|
|
300
|
+
type: SID_OID,
|
|
343
301
|
critical: false,
|
|
344
302
|
value: toArrayBuffer(new TextEncoder().encode(nodeSid)),
|
|
345
303
|
});
|
|
346
304
|
extensions.push({
|
|
347
|
-
type:
|
|
305
|
+
type: NODE_ID_OID,
|
|
348
306
|
critical: false,
|
|
349
307
|
value: toArrayBuffer(new TextEncoder().encode(nodeId)),
|
|
350
308
|
});
|
|
351
309
|
if (logicalHosts.length) {
|
|
352
310
|
const logicalsJson = JSON.stringify(logicalHosts);
|
|
353
311
|
extensions.push({
|
|
354
|
-
type:
|
|
312
|
+
type: LOGICALS_OID,
|
|
355
313
|
critical: false,
|
|
356
314
|
value: toArrayBuffer(new TextEncoder().encode(logicalsJson)),
|
|
357
315
|
});
|
|
@@ -364,7 +322,7 @@ async function buildLeafExtensions(publicKey, nodeSid, nodeId, spiffeId, logical
|
|
|
364
322
|
* Issues SPIFFE-compliant node certificates with Fame-specific extensions
|
|
365
323
|
* for physical paths and logical addresses.
|
|
366
324
|
*/
|
|
367
|
-
class CASigningService extends
|
|
325
|
+
export class CASigningService extends CAService {
|
|
368
326
|
constructor(options) {
|
|
369
327
|
super();
|
|
370
328
|
this.rootCertPem = options.rootCertPem;
|
|
@@ -437,14 +395,14 @@ class CASigningService extends ca_types_js_1.CAService {
|
|
|
437
395
|
async issueCertificate(csr) {
|
|
438
396
|
// Parse PKCS#10 CSR to extract SubjectPublicKeyInfo
|
|
439
397
|
const csrDer = pemToDer(csr.csrPem);
|
|
440
|
-
const certRequest =
|
|
398
|
+
const certRequest = AsnConvert.parse(csrDer, CertificationRequest);
|
|
441
399
|
const subjectPublicKeyInfo = certRequest.certificationRequestInfo.subjectPKInfo;
|
|
442
400
|
// Convert SubjectPublicKeyInfo to PEM format
|
|
443
|
-
const publicKeyDer =
|
|
401
|
+
const publicKeyDer = AsnConvert.serialize(subjectPublicKeyInfo);
|
|
444
402
|
const publicKeyPem = derToPem(publicKeyDer, "PUBLIC KEY");
|
|
445
403
|
// Determine node SID and physical path (mirrors Python logic)
|
|
446
404
|
const physicalPath = csr.physicalPath || `/unknown/${csr.requesterId}`;
|
|
447
|
-
const nodeSid =
|
|
405
|
+
const nodeSid = secureDigest(physicalPath);
|
|
448
406
|
const logicals = csr.logicals || [];
|
|
449
407
|
// Issue the certificate (short-lived: 1 day)
|
|
450
408
|
const certificatePem = await this.signNodeCert(publicKeyPem, csr.requesterId, // Use requesterId as node_id
|
|
@@ -452,7 +410,7 @@ class CASigningService extends ca_types_js_1.CAService {
|
|
|
452
410
|
undefined);
|
|
453
411
|
// Parse certificate to get expiration
|
|
454
412
|
const certDer = pemToDer(certificatePem);
|
|
455
|
-
const cert =
|
|
413
|
+
const cert = AsnConvert.parse(certDer, Certificate);
|
|
456
414
|
const notAfter = cert.tbsCertificate.validity.notAfter.getTime();
|
|
457
415
|
const expiresAt = new Date(notAfter).toISOString();
|
|
458
416
|
return {
|
|
@@ -476,13 +434,13 @@ class CASigningService extends ca_types_js_1.CAService {
|
|
|
476
434
|
await this.ensureSigningMaterials();
|
|
477
435
|
const signingCert = this.getSigningCertificate();
|
|
478
436
|
const signingKey = this.getSigningKey();
|
|
479
|
-
const expectedSid =
|
|
437
|
+
const expectedSid = secureDigest(physicalPath);
|
|
480
438
|
if (expectedSid !== nodeSid) {
|
|
481
439
|
throw new Error("Provided SID does not match the computed SID for the physical path");
|
|
482
440
|
}
|
|
483
441
|
const logicalHosts = logicals ?? [];
|
|
484
442
|
for (const logical of logicalHosts) {
|
|
485
|
-
const [valid, error] =
|
|
443
|
+
const [valid, error] = validateHostLogical(logical);
|
|
486
444
|
if (!valid) {
|
|
487
445
|
throw new Error(`Invalid logical host '${logical}': ${error ?? "unknown error"}`);
|
|
488
446
|
}
|
|
@@ -496,7 +454,7 @@ class CASigningService extends ca_types_js_1.CAService {
|
|
|
496
454
|
const spiffeId = `spiffe://${spiffeTrustDomain}/nodes/${nodeSid}`;
|
|
497
455
|
const extensions = await buildLeafExtensions(publicKey, nodeSid, nodeId, spiffeId, logicalHosts, issuerIdentity.subjectPublicKeyInfo);
|
|
498
456
|
const issuerName = issuerIdentity.name;
|
|
499
|
-
const subjectName = new
|
|
457
|
+
const subjectName = new Name([]); // SPIFFE X.509-SVIDs require an empty subject DN
|
|
500
458
|
const certDer = await createEd25519Certificate({
|
|
501
459
|
subject: subjectName,
|
|
502
460
|
issuer: issuerName,
|
|
@@ -546,7 +504,6 @@ class CASigningService extends ca_types_js_1.CAService {
|
|
|
546
504
|
return derToPem(certDer, "CERTIFICATE");
|
|
547
505
|
}
|
|
548
506
|
}
|
|
549
|
-
exports.CASigningService = CASigningService;
|
|
550
507
|
/**
|
|
551
508
|
* Create a test root CA for development/testing.
|
|
552
509
|
*
|
|
@@ -554,7 +511,7 @@ exports.CASigningService = CASigningService;
|
|
|
554
511
|
*
|
|
555
512
|
* @returns Tuple of [rootCertPem, rootKeyPem]
|
|
556
513
|
*/
|
|
557
|
-
async function createTestCA() {
|
|
514
|
+
export async function createTestCA() {
|
|
558
515
|
const subtle = await getSubtleCrypto();
|
|
559
516
|
await ensureCrypto();
|
|
560
517
|
const keyPair = await subtle.generateKey({
|
|
@@ -588,7 +545,7 @@ async function createTestCA() {
|
|
|
588
545
|
* @param certPem - Certificate in PEM format
|
|
589
546
|
* @returns SPIFFE ID string or null if not found
|
|
590
547
|
*/
|
|
591
|
-
async function extractSpiffeIdFromCert(certPem) {
|
|
548
|
+
export async function extractSpiffeIdFromCert(certPem) {
|
|
592
549
|
const x509 = await loadX509Module();
|
|
593
550
|
if (!x509) {
|
|
594
551
|
throw new Error("@peculiar/x509 module not available");
|
|
@@ -612,7 +569,7 @@ async function extractSpiffeIdFromCert(certPem) {
|
|
|
612
569
|
* @param certPem - Certificate in PEM format
|
|
613
570
|
* @returns SID bytes or null if not found
|
|
614
571
|
*/
|
|
615
|
-
async function extractSidFromCert(certPem) {
|
|
572
|
+
export async function extractSidFromCert(certPem) {
|
|
616
573
|
const x509 = await loadX509Module();
|
|
617
574
|
if (!x509) {
|
|
618
575
|
throw new Error("@peculiar/x509 module not available");
|
|
@@ -620,7 +577,7 @@ async function extractSidFromCert(certPem) {
|
|
|
620
577
|
try {
|
|
621
578
|
const certDer = pemToDer(certPem);
|
|
622
579
|
const cert = new x509.X509Certificate(certDer);
|
|
623
|
-
const sidExtension = cert.getExtension(
|
|
580
|
+
const sidExtension = cert.getExtension(SID_OID);
|
|
624
581
|
if (sidExtension) {
|
|
625
582
|
return new Uint8Array(sidExtension);
|
|
626
583
|
}
|
|
@@ -637,7 +594,7 @@ async function extractSidFromCert(certPem) {
|
|
|
637
594
|
* @param certPem - Certificate in PEM format
|
|
638
595
|
* @returns Node ID string or null if not found
|
|
639
596
|
*/
|
|
640
|
-
async function extractNodeIdFromCert(certPem) {
|
|
597
|
+
export async function extractNodeIdFromCert(certPem) {
|
|
641
598
|
const x509 = await loadX509Module();
|
|
642
599
|
if (!x509) {
|
|
643
600
|
throw new Error("@peculiar/x509 module not available");
|
|
@@ -645,7 +602,7 @@ async function extractNodeIdFromCert(certPem) {
|
|
|
645
602
|
try {
|
|
646
603
|
const certDer = pemToDer(certPem);
|
|
647
604
|
const cert = new x509.X509Certificate(certDer);
|
|
648
|
-
const nodeIdExtension = cert.getExtension(
|
|
605
|
+
const nodeIdExtension = cert.getExtension(NODE_ID_OID);
|
|
649
606
|
if (nodeIdExtension) {
|
|
650
607
|
const decoder = new TextDecoder();
|
|
651
608
|
return decoder.decode(nodeIdExtension);
|
|
@@ -663,7 +620,7 @@ async function extractNodeIdFromCert(certPem) {
|
|
|
663
620
|
* @param certPem - Certificate in PEM format
|
|
664
621
|
* @returns List of logical host addresses, empty if none found
|
|
665
622
|
*/
|
|
666
|
-
async function extractLogicalHostsFromCert(certPem) {
|
|
623
|
+
export async function extractLogicalHostsFromCert(certPem) {
|
|
667
624
|
const x509 = await loadX509Module();
|
|
668
625
|
if (!x509) {
|
|
669
626
|
throw new Error("@peculiar/x509 module not available");
|
|
@@ -671,7 +628,7 @@ async function extractLogicalHostsFromCert(certPem) {
|
|
|
671
628
|
try {
|
|
672
629
|
const certDer = pemToDer(certPem);
|
|
673
630
|
const cert = new x509.X509Certificate(certDer);
|
|
674
|
-
const logicalsExtension = cert.getExtension(
|
|
631
|
+
const logicalsExtension = cert.getExtension(LOGICALS_OID);
|
|
675
632
|
if (logicalsExtension) {
|
|
676
633
|
const decoder = new TextDecoder();
|
|
677
634
|
const jsonStr = decoder.decode(logicalsExtension);
|
|
@@ -690,7 +647,7 @@ async function extractLogicalHostsFromCert(certPem) {
|
|
|
690
647
|
* @param spiffeId - SPIFFE ID in format spiffe://trust-domain/nodes/<sid>
|
|
691
648
|
* @returns SID string (base62-encoded) or null if not a valid node SPIFFE ID
|
|
692
649
|
*/
|
|
693
|
-
function extractSidFromSpiffeId(spiffeId) {
|
|
650
|
+
export function extractSidFromSpiffeId(spiffeId) {
|
|
694
651
|
if (!spiffeId.startsWith("spiffe://")) {
|
|
695
652
|
return null;
|
|
696
653
|
}
|
|
@@ -708,7 +665,7 @@ function extractSidFromSpiffeId(spiffeId) {
|
|
|
708
665
|
* @param physicalPath - The expected physical path to verify against
|
|
709
666
|
* @returns True if SID matches computed hash of physical path, False otherwise
|
|
710
667
|
*/
|
|
711
|
-
async function verifyCertSidIntegrity(certPem, physicalPath) {
|
|
668
|
+
export async function verifyCertSidIntegrity(certPem, physicalPath) {
|
|
712
669
|
const sidBytes = await extractSidFromCert(certPem);
|
|
713
670
|
if (!sidBytes) {
|
|
714
671
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-ca-service.js","sourceRoot":"","sources":["../../../../../../src/naylence/fame/security/cert/internal-ca-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"internal-ca-service.js","sourceRoot":"","sources":["../../../../../../src/naylence/fame/security/cert/internal-ca-service.ts"],"names":[],"mappings":"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"}
|