@blamejs/core 0.6.37 → 0.6.59

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.
@@ -424,10 +424,50 @@ function algorithmEnvelope() {
424
424
  };
425
425
  }
426
426
 
427
+ // Generate a signed X.509 CRL (RFC 5280) covering every revoked
428
+ // serial number. The vendored peculiar/x509 library exposes
429
+ // X509CrlGenerator.create which builds the TBSCertList, populates
430
+ // the entries, and signs with the CA private key — same signature
431
+ // algorithm the CA itself was issued under (auto-detected via
432
+ // _selectAlgorithm + cached on first issuance).
433
+ async function generateCrl(opts) {
434
+ opts = opts || {};
435
+ if (!opts.caCertPem || !opts.caKeyPem) {
436
+ throw new MtlsEngineError("mtls-engine/missing-arg",
437
+ "generateCrl requires { caCertPem, caKeyPem, revocations, thisUpdate, nextUpdate }");
438
+ }
439
+ var revocations = Array.isArray(opts.revocations) ? opts.revocations : [];
440
+ var alg = await _selectAlgorithm();
441
+ CA_KEY_ALG = alg.keyAlg; CA_SIG_ALG = alg.sigAlg;
442
+
443
+ var caKey = await _importPemPrivateKey(opts.caKeyPem, CA_KEY_ALG, ["sign"]);
444
+ var caCert = _parseCertPem(opts.caCertPem);
445
+
446
+ // X509CrlEntry expects { serialNumber: hex, revocationDate, reason }.
447
+ var entries = revocations.map(function (r) {
448
+ return {
449
+ serialNumber: r.serialNumber,
450
+ revocationDate: new Date(r.revokedAt || Date.now()),
451
+ reason: (typeof r.reasonCode === "number") ? r.reasonCode : 0,
452
+ };
453
+ });
454
+
455
+ var crl = await x509.X509CrlGenerator.create({
456
+ issuer: caCert.subject,
457
+ thisUpdate: opts.thisUpdate || new Date(),
458
+ nextUpdate: opts.nextUpdate,
459
+ entries: entries,
460
+ signingAlgorithm: CA_SIG_ALG,
461
+ signingKey: caKey,
462
+ });
463
+ return crl.toString("pem");
464
+ }
465
+
427
466
  module.exports = {
428
467
  generateCa: generateCa,
429
468
  signClientCert: signClientCert,
430
469
  packageP12: packageP12,
470
+ generateCrl: generateCrl,
431
471
  algorithmEnvelope: algorithmEnvelope,
432
472
  MtlsEngineError: MtlsEngineError,
433
473
  };