@harperfast/harper 5.3.0-beta.3 → 5.3.0-beta.4
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/bin/cliOperations.ts +25 -3
- package/bin/run.ts +18 -0
- package/components/Application.ts +52 -78
- package/components/DESIGN.md +76 -3
- package/components/Scope.ts +10 -4
- package/components/anthropic/index.ts +10 -1
- package/components/bedrock/index.ts +10 -1
- package/components/componentLoader.ts +23 -14
- package/components/mcp/tools/operations.ts +3 -1
- package/components/ollama/index.ts +10 -1
- package/components/openai/index.ts +265 -18
- package/components/operations.js +40 -1
- package/config/configUtils.ts +3 -19
- package/dataLayer/DESIGN.md +29 -5
- package/dataLayer/harperBridge/ResourceBridge.ts +39 -3
- package/dataLayer/restoreMarker.ts +250 -14
- package/dataLayer/schema.ts +2 -7
- package/dataLayer/schemaDescribe.ts +10 -0
- package/dist/bin/cliOperations.js +28 -3
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/run.js +19 -0
- package/dist/bin/run.js.map +1 -1
- package/dist/components/Application.d.ts +8 -2
- package/dist/components/Application.js +43 -69
- package/dist/components/Application.js.map +1 -1
- package/dist/components/Scope.d.ts +1 -1
- package/dist/components/Scope.js +9 -4
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/anthropic/index.d.ts +0 -10
- package/dist/components/anthropic/index.js +9 -1
- package/dist/components/anthropic/index.js.map +1 -1
- package/dist/components/bedrock/index.d.ts +0 -12
- package/dist/components/bedrock/index.js +9 -1
- package/dist/components/bedrock/index.js.map +1 -1
- package/dist/components/componentLoader.js +23 -14
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/mcp/tools/operations.js +1 -1
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/ollama/index.d.ts +0 -13
- package/dist/components/ollama/index.js +9 -1
- package/dist/components/ollama/index.js.map +1 -1
- package/dist/components/openai/index.d.ts +11 -15
- package/dist/components/openai/index.js +224 -12
- package/dist/components/openai/index.js.map +1 -1
- package/dist/components/operations.d.ts +9 -0
- package/dist/components/operations.js +32 -2
- package/dist/components/operations.js.map +1 -1
- package/dist/config/configUtils.d.ts +1 -2
- package/dist/config/configUtils.js +7 -22
- package/dist/config/configUtils.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.js +29 -2
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/restoreMarker.d.ts +25 -3
- package/dist/dataLayer/restoreMarker.js +213 -13
- package/dist/dataLayer/restoreMarker.js.map +1 -1
- package/dist/dataLayer/schema.js +1 -4
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +10 -0
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +28 -0
- package/dist/resources/DatabaseTransaction.d.ts +21 -1
- package/dist/resources/DatabaseTransaction.js +147 -8
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/PrimaryRocksDatabase.js +1 -1
- package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
- package/dist/resources/Table.d.ts +31 -3
- package/dist/resources/Table.js +397 -79
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.js +16 -10
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +1 -0
- package/dist/resources/blob.js +14 -5
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/branchDatabase.js +3 -3
- package/dist/resources/branchDatabase.js.map +1 -1
- package/dist/resources/databaseDropPreparation.d.ts +20 -0
- package/dist/resources/databaseDropPreparation.js +106 -0
- package/dist/resources/databaseDropPreparation.js.map +1 -0
- package/dist/resources/databases.d.ts +26 -21
- package/dist/resources/databases.js +1040 -204
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/derivedIndexRegistry.d.ts +23 -0
- package/dist/resources/derivedIndexRegistry.js +92 -0
- package/dist/resources/derivedIndexRegistry.js.map +1 -1
- package/dist/resources/derivedIndexRuntime.d.ts +10 -0
- package/dist/resources/derivedIndexRuntime.js +136 -25
- package/dist/resources/derivedIndexRuntime.js.map +1 -1
- package/dist/resources/derivedIndexes.d.ts +39 -0
- package/dist/resources/derivedIndexes.js +733 -0
- package/dist/resources/derivedIndexes.js.map +1 -0
- package/dist/resources/fullTextSchema.d.ts +8 -0
- package/dist/resources/fullTextSchema.js +42 -0
- package/dist/resources/fullTextSchema.js.map +1 -1
- package/dist/resources/fullTextSchemaLifecycle.d.ts +0 -5
- package/dist/resources/fullTextSchemaLifecycle.js +0 -9
- package/dist/resources/fullTextSchemaLifecycle.js.map +1 -1
- package/dist/resources/graphql.js +101 -9
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/hnswDerivedIndex.d.ts +0 -10
- package/dist/resources/indexes/hnswDerivedIndex.js +0 -230
- package/dist/resources/indexes/hnswDerivedIndex.js.map +1 -1
- package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.d.ts +3 -0
- package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js +57 -8
- package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js.map +1 -1
- package/dist/resources/models/Models.d.ts +26 -3
- package/dist/resources/models/Models.js +256 -13
- package/dist/resources/models/Models.js.map +1 -1
- package/dist/resources/models/TestBackend.d.ts +3 -1
- package/dist/resources/models/TestBackend.js +35 -1
- package/dist/resources/models/TestBackend.js.map +1 -1
- package/dist/resources/models/analyticsTable.d.ts +2 -2
- package/dist/resources/models/analyticsTable.js +4 -2
- package/dist/resources/models/analyticsTable.js.map +1 -1
- package/dist/resources/models/backendHelpers.d.ts +24 -0
- package/dist/resources/models/backendHelpers.js +18 -1
- package/dist/resources/models/backendHelpers.js.map +1 -1
- package/dist/resources/models/backendRegistry.d.ts +10 -21
- package/dist/resources/models/backendRegistry.js +74 -18
- package/dist/resources/models/backendRegistry.js.map +1 -1
- package/dist/resources/models/bootstrap.d.ts +7 -0
- package/dist/resources/models/bootstrap.js +36 -4
- package/dist/resources/models/bootstrap.js.map +1 -1
- package/dist/resources/models/decideHook.d.ts +33 -0
- package/dist/resources/models/decideHook.js +105 -0
- package/dist/resources/models/decideHook.js.map +1 -0
- package/dist/resources/models/decision.d.ts +64 -0
- package/dist/resources/models/decision.js +507 -0
- package/dist/resources/models/decision.js.map +1 -0
- package/dist/resources/models/decisionStore.d.ts +134 -0
- package/dist/resources/models/decisionStore.js +350 -0
- package/dist/resources/models/decisionStore.js.map +1 -0
- package/dist/resources/models/embedHook.d.ts +66 -8
- package/dist/resources/models/embedHook.js +228 -61
- package/dist/resources/models/embedHook.js.map +1 -1
- package/dist/resources/models/generativeDecision.d.ts +58 -0
- package/dist/resources/models/generativeDecision.js +315 -0
- package/dist/resources/models/generativeDecision.js.map +1 -0
- package/dist/resources/models/types.d.ts +232 -4
- package/dist/security/authn/oidc/tokenExchange.js +3 -33
- package/dist/security/authn/oidc/tokenExchange.js.map +1 -1
- package/dist/security/authn/oidc/tokenUseTable.d.ts +9 -0
- package/dist/security/authn/oidc/tokenUseTable.js +28 -0
- package/dist/security/authn/oidc/tokenUseTable.js.map +1 -0
- package/dist/security/certificateVerification/certificateVerificationSource.d.ts +0 -1
- package/dist/security/certificateVerification/certificateVerificationSource.js +3 -3
- package/dist/security/certificateVerification/certificateVerificationSource.js.map +1 -1
- package/dist/security/certificateVerification/crlVerification.js +77 -165
- package/dist/security/certificateVerification/crlVerification.js.map +1 -1
- package/dist/security/certificateVerification/types.d.ts +0 -3
- package/dist/security/certificateVerification/verificationTables.d.ts +19 -0
- package/dist/security/certificateVerification/verificationTables.js +125 -0
- package/dist/security/certificateVerification/verificationTables.js.map +1 -0
- package/dist/security/certificateVerification/verificationUtils.d.ts +1 -1
- package/dist/security/certificateVerification/verificationUtils.js +6 -31
- package/dist/security/certificateVerification/verificationUtils.js.map +1 -1
- package/dist/security/jsLoader.d.ts +5 -0
- package/dist/security/jsLoader.js +8 -0
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/server/Server.d.ts +1 -0
- package/dist/server/Server.js.map +1 -1
- package/dist/server/http.js +2 -2
- package/dist/server/http.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +21 -2
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/jobOwnership.d.ts +25 -0
- package/dist/server/jobs/jobOwnership.js +127 -0
- package/dist/server/jobs/jobOwnership.js.map +1 -0
- package/dist/server/jobs/jobProcess.js +9 -2
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobs.js +18 -5
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/loadRootComponents.js +10 -0
- package/dist/server/loadRootComponents.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.js +11 -1
- package/dist/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +12 -2
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/threads/itc.d.ts +4 -1
- package/dist/server/threads/itc.js +29 -6
- package/dist/server/threads/itc.js.map +1 -1
- package/dist/server/threads/manageThreads.d.ts +12 -4
- package/dist/server/threads/manageThreads.js +241 -119
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/threadServer.d.ts +1 -0
- package/dist/server/threads/threadServer.js +15 -1
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/server/threads/windowsProcessTree.d.ts +91 -0
- package/dist/server/threads/windowsProcessTree.js +361 -0
- package/dist/server/threads/windowsProcessTree.js.map +1 -0
- package/dist/server/throttle.d.ts +1 -1
- package/dist/server/throttle.js +8 -1
- package/dist/server/throttle.js.map +1 -1
- package/dist/upgrade/directives/5-3-0.js +53 -46
- package/dist/upgrade/directives/5-3-0.js.map +1 -1
- package/dist/utility/errors/hdbError.d.ts +10 -1
- package/dist/utility/errors/hdbError.js +55 -11
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/fsync.d.ts +2 -0
- package/dist/utility/fsync.js +20 -0
- package/dist/utility/fsync.js.map +1 -0
- package/dist/utility/globalSchema.d.ts +18 -0
- package/dist/utility/hdbTerms.d.ts +3 -0
- package/dist/utility/hdbTerms.js +3 -0
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/signalling.d.ts +7 -1
- package/dist/utility/signalling.js +27 -3
- package/dist/utility/signalling.js.map +1 -1
- package/dist/utility/when.d.ts +1 -0
- package/dist/utility/when.js +21 -0
- package/dist/utility/when.js.map +1 -1
- package/dist/validation/configValidator.js +30 -3
- package/dist/validation/configValidator.js.map +1 -1
- package/index.ts +13 -0
- package/json/systemSchema.json +28 -0
- package/npm-shrinkwrap.json +151 -55
- package/package.json +14 -13
- package/resources/DESIGN.md +80 -100
- package/resources/DatabaseTransaction.ts +157 -10
- package/resources/PrimaryRocksDatabase.ts +2 -2
- package/resources/Table.ts +494 -101
- package/resources/auditStore.ts +18 -10
- package/resources/blob.ts +13 -6
- package/resources/branchDatabase.ts +3 -3
- package/resources/databaseDropPreparation.ts +120 -0
- package/resources/databases.ts +1155 -205
- package/resources/derivedIndexRegistry.ts +122 -0
- package/resources/derivedIndexRuntime.ts +157 -30
- package/resources/derivedIndexes.ts +856 -0
- package/resources/fullTextSchema.ts +55 -0
- package/resources/fullTextSchemaLifecycle.ts +0 -15
- package/resources/graphql.ts +107 -12
- package/resources/indexes/DESIGN.md +7 -0
- package/resources/indexes/hnswDerivedIndex.ts +0 -260
- package/resources/indexes/nativeFullTextDerivedIndexLifecycle.ts +72 -9
- package/resources/models/DESIGN.md +39 -0
- package/resources/models/Models.ts +361 -18
- package/resources/models/TestBackend.ts +56 -1
- package/resources/models/analyticsTable.ts +6 -4
- package/resources/models/backendHelpers.ts +17 -0
- package/resources/models/backendRegistry.ts +76 -21
- package/resources/models/bootstrap.ts +57 -7
- package/resources/models/decideHook.ts +135 -0
- package/resources/models/decision.ts +505 -0
- package/resources/models/decisionStore.ts +419 -0
- package/resources/models/embedHook.ts +272 -55
- package/resources/models/generativeDecision.ts +459 -0
- package/resources/models/types.ts +231 -4
- package/security/DESIGN.md +22 -2
- package/security/authn/oidc/tokenExchange.ts +6 -34
- package/security/authn/oidc/tokenUseTable.ts +27 -0
- package/security/certificateVerification/certificateVerificationSource.ts +2 -3
- package/security/certificateVerification/crlVerification.ts +96 -174
- package/security/certificateVerification/types.ts +0 -3
- package/security/certificateVerification/verificationTables.ts +124 -0
- package/security/certificateVerification/verificationUtils.ts +8 -32
- package/security/jsLoader.ts +9 -1
- package/server/DESIGN.md +27 -1
- package/server/Server.ts +2 -1
- package/server/http.ts +4 -2
- package/server/itc/serverHandlers.js +29 -1
- package/server/jobs/jobOwnership.ts +89 -0
- package/server/jobs/jobProcess.ts +8 -2
- package/server/jobs/jobs.ts +15 -4
- package/server/loadRootComponents.js +11 -0
- package/server/serverHelpers/contentTypes.ts +13 -1
- package/server/serverHelpers/serverHandlers.js +11 -2
- package/server/threads/itc.js +32 -6
- package/server/threads/manageThreads.js +268 -122
- package/server/threads/threadServer.js +13 -1
- package/server/threads/windowsProcessTree.ts +409 -0
- package/server/throttle.ts +11 -1
- package/studio/web/assets/{Chat-CveGbxe6.js → Chat-Bq60AO-g.js} +1 -1
- package/studio/web/assets/{FloatingChat-IpCFgYWL.js → FloatingChat-D4560T0p.js} +3 -3
- package/studio/web/assets/{apiToken-CS8fFTgL.js → apiToken-BEvbFPMc.js} +1 -1
- package/studio/web/assets/{applications-D7F4Jopl.js → applications-CSUVTH4E.js} +1 -1
- package/studio/web/assets/{cssMode-Daw_oLPq.js → cssMode-DJyc9mHj.js} +1 -1
- package/studio/web/assets/{editor-B3Bs1zWX.js → editor-DDIsQfj6.js} +1 -1
- package/studio/web/assets/{html-CDaQwWiE.js → html-g1BJHxLy.js} +1 -1
- package/studio/web/assets/{htmlMode-Cb6emO4U.js → htmlMode-Vh5IglCQ.js} +1 -1
- package/studio/web/assets/{index-B4g2Fu_2.js → index-DGRAzvO4.js} +5 -5
- package/studio/web/assets/{index.lazy-NwhvF1q1.js → index.lazy-vgSic7et.js} +1 -1
- package/studio/web/assets/{javascript-2_86gB9Q.js → javascript-5VIolqf7.js} +1 -1
- package/studio/web/assets/{jsonMode-DX-i86uQ.js → jsonMode-DG4zQraI.js} +1 -1
- package/studio/web/assets/{languageServices-B85WN-Ej.js → languageServices-t5FBpX-i.js} +1 -1
- package/studio/web/assets/{lspLanguageFeatures-JCWHIsKg.js → lspLanguageFeatures-DgVnNPh-.js} +1 -1
- package/studio/web/assets/{notifications-D9ejzt52.js → notifications-BeWcX04m.js} +1 -1
- package/studio/web/assets/{notifications-B7hjKhai.js → notifications-DUGWrWoO.js} +1 -1
- package/studio/web/assets/{profile-D8B6No3F.js → profile-BvUEDBzW.js} +1 -1
- package/studio/web/assets/{regions-DFazIfTK.js → regions-CB-_2m7M.js} +1 -1
- package/studio/web/assets/{register-CwFLviLF.js → register-1w1Zr3b2.js} +2 -2
- package/studio/web/assets/{setComponentFile-VnJ80SSJ.js → setComponentFile-z4-qJCbA.js} +1 -1
- package/studio/web/assets/{setup-BYQxFy-C.js → setup-CS50uJ4x.js} +2 -2
- package/studio/web/assets/{status-Cn5XjmsL.js → status-CI0wOdOE.js} +1 -1
- package/studio/web/assets/{toggleHighContrast-g9xIh6TX.js → toggleHighContrast-BsAE4jPe.js} +1 -1
- package/studio/web/assets/{tsMode-EC-n0Wqc.js → tsMode-D83Gg3cq.js} +1 -1
- package/studio/web/assets/{typescript-DHmM9JCO.js → typescript-Dfp-GrNq.js} +1 -1
- package/studio/web/assets/{useEntityRestURL-BUdnVSVv.js → useEntityRestURL-BKetlINf.js} +1 -1
- package/studio/web/assets/{workers-BVl9bBB-.js → workers-CCvmDLH3.js} +1 -1
- package/studio/web/assets/{xml-C4_sqOkX.js → xml-06pZp00U.js} +1 -1
- package/studio/web/assets/{yaml-CVkbDqtW.js → yaml-iSnWMVlV.js} +1 -1
- package/studio/web/index.html +1 -1
- package/upgrade/directives/5-3-0.ts +61 -54
- package/utility/DESIGN.md +5 -1
- package/utility/errors/hdbError.ts +56 -8
- package/utility/fsync.ts +16 -0
- package/utility/hdbTerms.ts +3 -0
- package/utility/signalling.ts +33 -4
- package/utility/when.ts +22 -0
- package/validation/configValidator.ts +36 -7
|
@@ -47,7 +47,6 @@ exports.exchangeOidcToken = exchangeOidcToken;
|
|
|
47
47
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
48
48
|
const joi_1 = __importDefault(require("joi"));
|
|
49
49
|
const node_crypto_1 = require("node:crypto");
|
|
50
|
-
const databases_ts_1 = require("../../../resources/databases.js");
|
|
51
50
|
const hdbError_ts_1 = require("../../../utility/errors/hdbError.js");
|
|
52
51
|
const validationWrapper_ts_1 = require("../../../validation/validationWrapper.js");
|
|
53
52
|
const logger_ts_1 = require("../../../utility/logging/logger.js");
|
|
@@ -61,6 +60,7 @@ const claims_ts_1 = require("./claims.js");
|
|
|
61
60
|
const jwks_ts_1 = require("./jwks.js");
|
|
62
61
|
const index_ts_1 = require("./providers/index.js");
|
|
63
62
|
const trustPolicyOperations_ts_1 = require("./trustPolicyOperations.js");
|
|
63
|
+
const tokenUseTable_ts_1 = require("./tokenUseTable.js");
|
|
64
64
|
const logger = (0, logger_ts_1.loggerWithTag)('oidc-trust');
|
|
65
65
|
const { AuthAuditLog } = harper_logger_ts_1.default;
|
|
66
66
|
// Same stream and same switches as every other authentication event (security/auth.ts), so an
|
|
@@ -72,7 +72,6 @@ const EXCHANGED_TOKEN_LIFETIME_SECONDS = 3600;
|
|
|
72
72
|
const REPLAY_RECORD_PADDING_MS = 120_000;
|
|
73
73
|
/** Real identity tokens are ~1-2 KB; this bounds what we are willing to even parse. */
|
|
74
74
|
const MAX_TOKEN_LENGTH = 8192;
|
|
75
|
-
const TOKEN_USE_TABLE = 'hdb_oidc_token_use';
|
|
76
75
|
/**
|
|
77
76
|
* Spent identity tokens, keyed by the fingerprint below and expiring with the token, so the table
|
|
78
77
|
* stays proportional to in-flight tokens rather than to deploy history and never holds a credential.
|
|
@@ -82,8 +81,6 @@ const TOKEN_USE_TABLE = 'hdb_oidc_token_use';
|
|
|
82
81
|
* not a privilege escalation: whoever holds the token could obtain one operation token regardless.
|
|
83
82
|
* What it stops is the realistic case, a token that leaks after a legitimate run and is reused
|
|
84
83
|
* inside its window.
|
|
85
|
-
*
|
|
86
|
-
* table() also registers into `databases.system`, so the lookup finds it after the first call.
|
|
87
84
|
*/
|
|
88
85
|
let tokenUseTable;
|
|
89
86
|
/** Drops the memo below so a test can install a different table. Not used in production. */
|
|
@@ -91,29 +88,7 @@ function clearTokenUseTableCache() {
|
|
|
91
88
|
tokenUseTable = undefined;
|
|
92
89
|
}
|
|
93
90
|
function getTokenUseTable() {
|
|
94
|
-
|
|
95
|
-
// The systemSchema stub and the 5.3.0 directive declare only the primary key — the `expiresAt`
|
|
96
|
-
// TTL is not expressible through CreateTableObject — so this call is what actually installs the
|
|
97
|
-
// TTL, layered on top of the bootstrap. Short-circuiting on existence would mean a table that
|
|
98
|
-
// arrived any other way (bootstrap, replication, restore, a manual create_table) never gets it,
|
|
99
|
-
// and replay records would then accumulate in a system table forever. hdb_certificate_cache
|
|
100
|
-
// does the same two-step for the same reason.
|
|
101
|
-
tokenUseTable ??= (0, databases_ts_1.table)({
|
|
102
|
-
table: TOKEN_USE_TABLE,
|
|
103
|
-
database: 'system',
|
|
104
|
-
// `audit: true` explicitly, NOT the default (which follows logging.auditLog). Auditing is the
|
|
105
|
-
// replication change feed (databases.ts: "auditing must be enabled for replication"), and
|
|
106
|
-
// replay records MUST replicate so a token spent on one node cannot be re-spent on another
|
|
107
|
-
// inside its window. Without this, an operator with logging.auditLog:false would silently lose
|
|
108
|
-
// cross-node replay protection. Its sibling hdb_oidc_trust is audited for the same reason.
|
|
109
|
-
audit: true,
|
|
110
|
-
attributes: [
|
|
111
|
-
{ name: 'id', isPrimaryKey: true },
|
|
112
|
-
{ name: 'policy_id' },
|
|
113
|
-
{ name: 'used_at' },
|
|
114
|
-
{ name: 'expiresAt', expiresAt: true, indexed: true },
|
|
115
|
-
],
|
|
116
|
-
});
|
|
91
|
+
tokenUseTable ??= (0, tokenUseTable_ts_1.declareTokenUseTable)();
|
|
117
92
|
return tokenUseTable;
|
|
118
93
|
}
|
|
119
94
|
/**
|
|
@@ -229,12 +204,7 @@ async function recordTokenUse(fingerprint, claims, policyId) {
|
|
|
229
204
|
const useTable = getTokenUseTable();
|
|
230
205
|
if (await useTable.get(fingerprint))
|
|
231
206
|
(0, identityToken_ts_1.rejectToken)(`token ${fingerprint.slice(0, 12)} has already been exchanged`);
|
|
232
|
-
await useTable.put({
|
|
233
|
-
id: fingerprint,
|
|
234
|
-
policy_id: policyId,
|
|
235
|
-
used_at: Date.now(),
|
|
236
|
-
expiresAt: claims.exp * 1000 + REPLAY_RECORD_PADDING_MS,
|
|
237
|
-
});
|
|
207
|
+
await useTable.put({ id: fingerprint, policy_id: policyId, used_at: Date.now() }, { expiresAt: claims.exp * 1000 + REPLAY_RECORD_PADDING_MS });
|
|
238
208
|
}
|
|
239
209
|
/**
|
|
240
210
|
* Exchanges a CI identity token for a short-lived Harper operation token. Unauthenticated by design —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenExchange.js","sourceRoot":"","sources":["../../../../security/authn/oidc/tokenExchange.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"tokenExchange.js","sourceRoot":"","sources":["../../../../security/authn/oidc/tokenExchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every node must declare system.hdb_oidc_token_use in this shape whether or not it ever performs an
|
|
3
|
+
* exchange: passive cluster members receive every replicated replay row, and only an `expiration` stored
|
|
4
|
+
* in the node's own catalog arms the cleanup scan that removes them. See dataLayer/DESIGN.md, "System
|
|
5
|
+
* table bootstrap".
|
|
6
|
+
*/
|
|
7
|
+
import { type Table } from '../../../resources/databases.ts';
|
|
8
|
+
export declare const TOKEN_USE_TABLE: "hdb_oidc_token_use";
|
|
9
|
+
export declare function declareTokenUseTable(): Table;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Every node must declare system.hdb_oidc_token_use in this shape whether or not it ever performs an
|
|
4
|
+
* exchange: passive cluster members receive every replicated replay row, and only an `expiration` stored
|
|
5
|
+
* in the node's own catalog arms the cleanup scan that removes them. See dataLayer/DESIGN.md, "System
|
|
6
|
+
* table bootstrap".
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TOKEN_USE_TABLE = void 0;
|
|
10
|
+
exports.declareTokenUseTable = declareTokenUseTable;
|
|
11
|
+
const databases_ts_1 = require("../../../resources/databases.js");
|
|
12
|
+
const hdbTerms_ts_1 = require("../../../utility/hdbTerms.js");
|
|
13
|
+
exports.TOKEN_USE_TABLE = hdbTerms_ts_1.SYSTEM_TABLE_NAMES.OIDC_TOKEN_USE_TABLE_NAME;
|
|
14
|
+
/** Bounds only a row written without an expiry of its own; each replay record carries its token's. */
|
|
15
|
+
const FALLBACK_EXPIRATION_SECONDS = 86_400;
|
|
16
|
+
function declareTokenUseTable() {
|
|
17
|
+
return (0, databases_ts_1.table)({
|
|
18
|
+
table: exports.TOKEN_USE_TABLE,
|
|
19
|
+
database: hdbTerms_ts_1.SYSTEM_SCHEMA_NAME,
|
|
20
|
+
// Explicit rather than the logging.auditLog default: auditing is the replication change feed, and a
|
|
21
|
+
// token spent on one node must be refused on the others.
|
|
22
|
+
audit: true,
|
|
23
|
+
schemaDefined: true,
|
|
24
|
+
expiration: FALLBACK_EXPIRATION_SECONDS,
|
|
25
|
+
attributes: [{ name: 'id', isPrimaryKey: true }, { name: 'policy_id' }, { name: 'used_at' }],
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=tokenUseTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenUseTable.js","sourceRoot":"","sources":["../../../../security/authn/oidc/tokenUseTable.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAUH,oDAWC;AAnBD,kEAAoE;AACpE,8DAAsF;AAEzE,QAAA,eAAe,GAAG,gCAAkB,CAAC,yBAAyB,CAAC;AAE5E,sGAAsG;AACtG,MAAM,2BAA2B,GAAG,MAAM,CAAC;AAE3C,SAAgB,oBAAoB;IACnC,OAAO,IAAA,oBAAK,EAAQ;QACnB,KAAK,EAAE,uBAAe;QACtB,QAAQ,EAAE,gCAAkB;QAC5B,oGAAoG;QACpG,yDAAyD;QACzD,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,2BAA2B;QACvC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KAC5F,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -62,14 +62,14 @@ class CertificateVerificationSource extends Resource_ts_1.Resource {
|
|
|
62
62
|
else {
|
|
63
63
|
throw new Error(`Unsupported verification method: ${method} for ID: ${id}`);
|
|
64
64
|
}
|
|
65
|
-
//
|
|
66
|
-
|
|
65
|
+
// without a cacheTtl, the table's expiration applies rather than none
|
|
66
|
+
if (Number.isFinite(methodConfig.cacheTtl))
|
|
67
|
+
context.expiresAt = Date.now() + methodConfig.cacheTtl;
|
|
67
68
|
return {
|
|
68
69
|
certificate_id: id,
|
|
69
70
|
status: result.status,
|
|
70
71
|
reason: result.reason,
|
|
71
72
|
checked_at: Date.now(),
|
|
72
|
-
expiresAt,
|
|
73
73
|
method,
|
|
74
74
|
};
|
|
75
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certificateVerificationSource.js","sourceRoot":"","sources":["../../../security/certificateVerification/certificateVerificationSource.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6DAAuD;AAIvD,gCAAgC;AAChC,IAAI,eAAoB,CAAC;AACzB,IAAI,gBAAqB,CAAC;AAE1B,2CAA2C;AAC3C,KAAK,UAAU,yBAAyB;IACvC,IAAI,CAAC,eAAe,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACvD,eAAe,GAAI,SAAiB,CAAC,eAAe,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACzD,gBAAgB,GAAI,UAAkB,CAAC,gBAAgB,CAAC;IACzD,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAa,6BAA8B,SAAQ,sBAAQ;IAC1D,KAAK,CAAC,GAAG,CAAC,KAAY;QACrB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAY,CAAC;QAE9B,+CAA+C;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAmD,CAAC;QACnF,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,CAAC;QAE/C,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YAC7E,8FAA8F;YAC9F,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;QAE1F,kCAAkC;QAClC,IAAI,MAAc,CAAC;QACnB,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,MAAM,CAAC;QACjB,CAAC;aAAM,CAAC;YACP,MAAM,GAAG,SAAS,CAAC;QACpB,CAAC;QAED,8BAA8B;QAC9B,MAAM,yBAAyB,EAAE,CAAC;QAElC,uCAAuC;QACvC,IAAI,MAAM,CAAC;QACX,IAAI,YAAY,CAAC;QAEjB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACtB,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC;YAC1B,kEAAkE;YAClE,MAAM,OAAO,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClG,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,YAAY,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"certificateVerificationSource.js","sourceRoot":"","sources":["../../../security/certificateVerification/certificateVerificationSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,9 +41,10 @@ exports.verifyCRL = verifyCRL;
|
|
|
41
41
|
exports.performCRLCheck = performCRLCheck;
|
|
42
42
|
const pkijs = __importStar(require("pkijs"));
|
|
43
43
|
const logger_ts_1 = require("../../utility/logging/logger.js");
|
|
44
|
-
const databases_ts_1 = require("../../resources/databases.js");
|
|
45
44
|
const Resource_ts_1 = require("../../resources/Resource.js");
|
|
45
|
+
const transaction_ts_1 = require("../../resources/transaction.js");
|
|
46
46
|
const verificationUtils_ts_1 = require("./verificationUtils.js");
|
|
47
|
+
const verificationTables_ts_1 = require("./verificationTables.js");
|
|
47
48
|
const verificationConfig_ts_1 = require("./verificationConfig.js");
|
|
48
49
|
/**
|
|
49
50
|
* Custom error for CRL signature verification failures
|
|
@@ -80,15 +81,10 @@ class CertificateRevocationListSource extends Resource_ts_1.Resource {
|
|
|
80
81
|
}
|
|
81
82
|
const { distributionPoint, issuerPem: issuerPemStr, config } = requestContext;
|
|
82
83
|
try {
|
|
83
|
-
const
|
|
84
|
+
const { entry } = await downloadAndParseCRLOnce(distributionPoint, issuerPemStr, config);
|
|
84
85
|
// Set expiration - use the CRL's nextUpdate time or configured TTL, whichever is sooner
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const expiresAt = Math.min(crlExpiry, configExpiry);
|
|
88
|
-
return {
|
|
89
|
-
...result,
|
|
90
|
-
expiresAt,
|
|
91
|
-
};
|
|
86
|
+
context.expiresAt = Math.min(entry.next_update, Date.now() + config.cacheTtl);
|
|
87
|
+
return entry;
|
|
92
88
|
}
|
|
93
89
|
catch (error) {
|
|
94
90
|
logger.error?.(`CRL fetch error for: ${distributionPoint} - ${error}`);
|
|
@@ -98,16 +94,15 @@ class CertificateRevocationListSource extends Resource_ts_1.Resource {
|
|
|
98
94
|
// Check failure mode
|
|
99
95
|
if (config.failureMode === 'fail-closed') {
|
|
100
96
|
// Cache the error for faster recovery
|
|
101
|
-
|
|
97
|
+
context.expiresAt = Date.now() + verificationConfig_ts_1.ERROR_CACHE_TTL;
|
|
102
98
|
return {
|
|
103
99
|
crl_id: id,
|
|
104
100
|
distribution_point: distributionPoint,
|
|
105
101
|
issuer_dn: 'unknown',
|
|
106
102
|
crl_blob: Buffer.alloc(0),
|
|
107
103
|
this_update: Date.now(),
|
|
108
|
-
next_update: expiresAt,
|
|
104
|
+
next_update: context.expiresAt,
|
|
109
105
|
signature_valid: false,
|
|
110
|
-
expiresAt,
|
|
111
106
|
};
|
|
112
107
|
}
|
|
113
108
|
// Fail open - return null to not cache
|
|
@@ -121,80 +116,14 @@ let crlCacheTable;
|
|
|
121
116
|
let revokedCertificateTable;
|
|
122
117
|
function getCRLCacheTable() {
|
|
123
118
|
if (!crlCacheTable) {
|
|
124
|
-
crlCacheTable = (0,
|
|
125
|
-
table: 'hdb_crl_cache',
|
|
126
|
-
database: 'system',
|
|
127
|
-
attributes: [
|
|
128
|
-
{
|
|
129
|
-
name: 'distribution_point',
|
|
130
|
-
isPrimaryKey: true,
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
name: 'issuer_dn',
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
name: 'crl_blob',
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
name: 'this_update',
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
name: 'next_update',
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
name: 'signature_valid',
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
name: 'expiresAt',
|
|
149
|
-
expiresAt: true,
|
|
150
|
-
indexed: true,
|
|
151
|
-
},
|
|
152
|
-
],
|
|
153
|
-
});
|
|
119
|
+
crlCacheTable = (0, verificationTables_ts_1.declareCRLCacheTable)();
|
|
154
120
|
// Configure the caching source
|
|
155
121
|
crlCacheTable.sourcedFrom(CertificateRevocationListSource);
|
|
156
122
|
}
|
|
157
123
|
return crlCacheTable;
|
|
158
124
|
}
|
|
159
125
|
function getRevokedCertificateTable() {
|
|
160
|
-
|
|
161
|
-
revokedCertificateTable = (0, databases_ts_1.table)({
|
|
162
|
-
table: 'hdb_revoked_certificates',
|
|
163
|
-
database: 'system',
|
|
164
|
-
attributes: [
|
|
165
|
-
{
|
|
166
|
-
name: 'composite_id',
|
|
167
|
-
isPrimaryKey: true,
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
name: 'serial_number',
|
|
171
|
-
indexed: true,
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
name: 'issuer_key_id',
|
|
175
|
-
indexed: true,
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
name: 'revocation_date',
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
name: 'revocation_reason',
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
name: 'crl_source',
|
|
185
|
-
indexed: true, // Links to CRL cache
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
name: 'crl_next_update',
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
name: 'expiresAt',
|
|
192
|
-
expiresAt: true,
|
|
193
|
-
indexed: true,
|
|
194
|
-
},
|
|
195
|
-
],
|
|
196
|
-
});
|
|
197
|
-
}
|
|
126
|
+
revokedCertificateTable ??= (0, verificationTables_ts_1.declareRevokedCertificatesTable)();
|
|
198
127
|
return revokedCertificateTable;
|
|
199
128
|
}
|
|
200
129
|
/**
|
|
@@ -319,9 +248,15 @@ async function performCRLCheck(certPem, issuerPem, config, crlUrls) {
|
|
|
319
248
|
// This requires checking if CRLs for the distribution points are up to date
|
|
320
249
|
const crlStatus = await checkCRLFreshness(distributionPoints, issuerPem, config);
|
|
321
250
|
if (crlStatus.upToDate) {
|
|
322
|
-
// CRL
|
|
323
|
-
//
|
|
324
|
-
|
|
251
|
+
// A CRL this check downloaded decides it: by now another thread may have replaced the stored set with
|
|
252
|
+
// a different generation of that CRL
|
|
253
|
+
if (crlStatus.revokedIds) {
|
|
254
|
+
return crlStatus.revokedIds.has(compositeId)
|
|
255
|
+
? { status: 'revoked', reason: 'unspecified', source: crlStatus.source }
|
|
256
|
+
: { status: 'good', source: crlStatus.source };
|
|
257
|
+
}
|
|
258
|
+
// Outside the verdict fill's transaction: on LMDB its read snapshot predates rows committed since
|
|
259
|
+
const revokedEntryFresh = await revokedTable.get(compositeId, {});
|
|
325
260
|
if (revokedEntryFresh) {
|
|
326
261
|
const entry = revokedEntryFresh;
|
|
327
262
|
const now = Date.now();
|
|
@@ -386,8 +321,9 @@ async function checkCRLFreshness(distributionPoints, issuerPem, config) {
|
|
|
386
321
|
// Failed to check cache, continue
|
|
387
322
|
}
|
|
388
323
|
// If no valid cached CRL, download and parse fresh
|
|
324
|
+
let revokedIds;
|
|
389
325
|
if (!crlData) {
|
|
390
|
-
crlData = await
|
|
326
|
+
({ entry: crlData, revokedIds } = await downloadAndParseCRLOnce(distributionPoint, issuerPem, config));
|
|
391
327
|
}
|
|
392
328
|
// Check if CRL is current
|
|
393
329
|
const crlExpiry = crlData.next_update;
|
|
@@ -395,16 +331,16 @@ async function checkCRLFreshness(distributionPoints, issuerPem, config) {
|
|
|
395
331
|
// Store in cache for future use (only if we downloaded it fresh)
|
|
396
332
|
if (!cachedCRL) {
|
|
397
333
|
try {
|
|
398
|
-
await crlTable.put(distributionPoint, crlData);
|
|
334
|
+
await crlTable.put(distributionPoint, crlData, { expiresAt: crlExpiry });
|
|
399
335
|
}
|
|
400
336
|
catch {
|
|
401
337
|
// Failed to cache, but continue anyway
|
|
402
338
|
}
|
|
403
339
|
}
|
|
404
|
-
return { upToDate: true, source: distributionPoint };
|
|
340
|
+
return { upToDate: true, source: distributionPoint, revokedIds };
|
|
405
341
|
}
|
|
406
342
|
else if (crlExpiry + config.gracePeriod > now) {
|
|
407
|
-
return { upToDate: true, source: distributionPoint };
|
|
343
|
+
return { upToDate: true, source: distributionPoint, revokedIds };
|
|
408
344
|
}
|
|
409
345
|
else {
|
|
410
346
|
return { upToDate: false, reason: 'crl-expired' };
|
|
@@ -421,19 +357,32 @@ async function checkCRLFreshness(distributionPoints, issuerPem, config) {
|
|
|
421
357
|
}
|
|
422
358
|
return { upToDate: false, reason: 'no-current-crl-data' };
|
|
423
359
|
}
|
|
360
|
+
// Concurrent checks of certificates from one CA share one download and replacement per distribution point on
|
|
361
|
+
// this thread; each replacing the same rows would make their commits conflict, and past the retry limit that
|
|
362
|
+
// fails the check. The key holds every input the download uses, so no check inherits another's deadline.
|
|
363
|
+
const crlDownloads = new Map();
|
|
364
|
+
function downloadAndParseCRLOnce(distributionPoint, issuerPemStr, config) {
|
|
365
|
+
const key = `${distributionPoint}\n${config.gracePeriod}\n${config.timeout}\n${issuerPemStr}`;
|
|
366
|
+
let download = crlDownloads.get(key);
|
|
367
|
+
if (!download) {
|
|
368
|
+
download = downloadAndParseCRL(distributionPoint, issuerPemStr, config).finally(() => crlDownloads.delete(key));
|
|
369
|
+
crlDownloads.set(key, download);
|
|
370
|
+
}
|
|
371
|
+
return download;
|
|
372
|
+
}
|
|
424
373
|
/**
|
|
425
374
|
* Download and parse a CRL from a distribution point
|
|
426
375
|
* @param distributionPoint - CRL URL
|
|
427
376
|
* @param issuerPemStr - Issuer certificate for signature verification
|
|
428
|
-
* @param
|
|
429
|
-
* @returns Parsed CRL entry for caching
|
|
377
|
+
* @param config - CRL configuration (download timeout, grace period)
|
|
378
|
+
* @returns Parsed CRL entry for caching, and the certificates it revokes
|
|
430
379
|
*/
|
|
431
|
-
async function downloadAndParseCRL(distributionPoint, issuerPemStr,
|
|
380
|
+
async function downloadAndParseCRL(distributionPoint, issuerPemStr, config) {
|
|
432
381
|
// Download the CRL
|
|
433
382
|
// Note: Using fetch here since CRL downloads are cached and infrequent
|
|
434
383
|
// (typically one per CA), so this is not a hot path
|
|
435
384
|
const controller = new AbortController();
|
|
436
|
-
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
385
|
+
const timeoutId = setTimeout(() => controller.abort(), config.timeout);
|
|
437
386
|
try {
|
|
438
387
|
const response = await fetch(distributionPoint, {
|
|
439
388
|
signal: controller.signal,
|
|
@@ -441,7 +390,6 @@ async function downloadAndParseCRL(distributionPoint, issuerPemStr, timeout) {
|
|
|
441
390
|
'User-Agent': verificationConfig_ts_1.CRL_USER_AGENT,
|
|
442
391
|
},
|
|
443
392
|
});
|
|
444
|
-
clearTimeout(timeoutId);
|
|
445
393
|
if (!response.ok) {
|
|
446
394
|
throw new Error(`CRL download failed: ${response.status}`);
|
|
447
395
|
}
|
|
@@ -479,105 +427,69 @@ async function downloadAndParseCRL(distributionPoint, issuerPemStr, timeout) {
|
|
|
479
427
|
this_update: thisUpdate,
|
|
480
428
|
next_update: nextUpdate,
|
|
481
429
|
signature_valid: signatureValid,
|
|
482
|
-
expiresAt: nextUpdate,
|
|
483
430
|
};
|
|
484
431
|
// Process revoked certificates before returning so the revoked table is populated
|
|
485
432
|
// before any subsequent lookup in performCRLCheck
|
|
486
|
-
await processRevokedCertificates(crl, issuerPemStr, distributionPoint, nextUpdate);
|
|
487
|
-
return cacheEntry;
|
|
433
|
+
const revokedIds = await processRevokedCertificates(crl, issuerPemStr, distributionPoint, nextUpdate, config.gracePeriod ?? 0);
|
|
434
|
+
return { entry: cacheEntry, revokedIds };
|
|
488
435
|
}
|
|
489
436
|
finally {
|
|
490
437
|
clearTimeout(timeoutId);
|
|
491
438
|
}
|
|
492
439
|
}
|
|
493
440
|
/**
|
|
494
|
-
*
|
|
441
|
+
* Replace this CRL's rows in the revoked certificates table with its current revocations
|
|
495
442
|
* @param crl - Parsed CRL object
|
|
496
443
|
* @param issuerPemStr - Issuer certificate PEM
|
|
497
444
|
* @param distributionPoint - CRL distribution point URL
|
|
498
445
|
* @param nextUpdate - When this CRL expires
|
|
446
|
+
* @param gracePeriod - How long past nextUpdate performCRLCheck still honors a revocation
|
|
447
|
+
* @returns The composite ids of the revoked certificates
|
|
499
448
|
*/
|
|
500
|
-
async function processRevokedCertificates(crl, issuerPemStr, distributionPoint, nextUpdate) {
|
|
449
|
+
async function processRevokedCertificates(crl, issuerPemStr, distributionPoint, nextUpdate, gracePeriod) {
|
|
501
450
|
const revokedTable = getRevokedCertificateTable();
|
|
502
451
|
const issuerKeyId = (0, verificationUtils_ts_1.extractIssuerKeyId)(issuerPemStr);
|
|
503
452
|
const cacheKey = distributionPoint;
|
|
504
|
-
|
|
505
|
-
//
|
|
506
|
-
|
|
453
|
+
const revokedIds = new Set();
|
|
454
|
+
// All or nothing, so a failure leaves the previous revocations rather than a partial set that would read
|
|
455
|
+
// as good. Its own transaction, not the verdict fill's, so the rows are committed before performCRLCheck
|
|
456
|
+
// reads them back; the context's expiresAt is what each row stores as its expiry.
|
|
457
|
+
await (0, transaction_ts_1.transaction)({ expiresAt: nextUpdate + gracePeriod }, async () => {
|
|
507
458
|
await clearExistingCRLEntries(revokedTable, cacheKey);
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
if (!serialHex) {
|
|
521
|
-
logger.warn?.('Could not extract serial number from revoked certificate');
|
|
522
|
-
continue;
|
|
523
|
-
}
|
|
524
|
-
const serialNumber = Array.from(serialHex)
|
|
525
|
-
.map((b) => b.toString(16).padStart(2, '0'))
|
|
526
|
-
.join('');
|
|
527
|
-
const compositeId = (0, verificationUtils_ts_1.createRevokedCertificateId)(issuerKeyId, serialNumber);
|
|
528
|
-
// Extract revocation date
|
|
529
|
-
const revocationDate = revokedCert.revocationDate.value.getTime();
|
|
459
|
+
for (const revokedCert of crl.revokedCertificates ?? []) {
|
|
460
|
+
// Extract serial number using PKI.js - same method as extractSerialNumber() function
|
|
461
|
+
// This gives us the clean serial number without ASN.1 encoding
|
|
462
|
+
const serialHex = revokedCert.userCertificate.valueBlock.valueHexView;
|
|
463
|
+
if (!serialHex)
|
|
464
|
+
throw new Error(`A revoked certificate in the CRL from ${distributionPoint} has no serial number`);
|
|
465
|
+
const serialNumber = Buffer.from(serialHex).toString('hex');
|
|
466
|
+
const entry = {
|
|
467
|
+
composite_id: (0, verificationUtils_ts_1.createRevokedCertificateId)(issuerKeyId, serialNumber),
|
|
468
|
+
serial_number: serialNumber,
|
|
469
|
+
issuer_key_id: issuerKeyId,
|
|
470
|
+
revocation_date: revokedCert.revocationDate.value.getTime(),
|
|
530
471
|
// For now, skip complex extension parsing and just use default reason
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
revocation_reason: revocationReason,
|
|
538
|
-
crl_source: cacheKey,
|
|
539
|
-
crl_next_update: nextUpdate,
|
|
540
|
-
expiresAt: nextUpdate,
|
|
541
|
-
};
|
|
542
|
-
await revokedTable.put(entry.composite_id, entry);
|
|
543
|
-
}
|
|
544
|
-
catch (error) {
|
|
545
|
-
logger.warn?.(`Failed to process revoked certificate: ${error}`);
|
|
546
|
-
// Continue with other certificates
|
|
547
|
-
}
|
|
472
|
+
revocation_reason: 'unspecified',
|
|
473
|
+
crl_source: cacheKey,
|
|
474
|
+
crl_next_update: nextUpdate,
|
|
475
|
+
};
|
|
476
|
+
revokedIds.add(entry.composite_id);
|
|
477
|
+
await revokedTable.put(entry.composite_id, entry);
|
|
548
478
|
}
|
|
549
|
-
}
|
|
479
|
+
});
|
|
480
|
+
return revokedIds;
|
|
550
481
|
}
|
|
551
482
|
/**
|
|
552
|
-
*
|
|
553
|
-
* This ensures data consistency when CRLs are updated and certificates are removed
|
|
483
|
+
* Delete the revoked certificate entries stored for a specific CRL source
|
|
554
484
|
* @param revokedTable - Harper table for revoked certificates
|
|
555
485
|
* @param crlSource - CRL cache key to identify entries to remove
|
|
556
486
|
*/
|
|
557
487
|
async function clearExistingCRLEntries(revokedTable, crlSource) {
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
// Note: This assumes the crl_source field is indexed (which it is)
|
|
562
|
-
const existingEntries = revokedTable.search([
|
|
563
|
-
{
|
|
564
|
-
attribute: 'crl_source',
|
|
565
|
-
value: crlSource,
|
|
566
|
-
},
|
|
567
|
-
]);
|
|
568
|
-
for await (const entry of existingEntries) {
|
|
569
|
-
try {
|
|
570
|
-
await revokedTable.delete(entry.composite_id);
|
|
571
|
-
}
|
|
572
|
-
catch (deleteError) {
|
|
573
|
-
logger.warn?.(`Failed to delete revoked certificate entry: ${deleteError}`);
|
|
574
|
-
// Continue with other entries
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
catch (searchError) {
|
|
579
|
-
logger.error?.(`Failed to search for existing CRL entries: ${searchError}`);
|
|
580
|
-
throw searchError;
|
|
488
|
+
const compositeIds = [];
|
|
489
|
+
for await (const entry of revokedTable.search([{ attribute: 'crl_source', value: crlSource }])) {
|
|
490
|
+
compositeIds.push(entry.composite_id);
|
|
581
491
|
}
|
|
492
|
+
for (const compositeId of compositeIds)
|
|
493
|
+
await revokedTable.delete(compositeId);
|
|
582
494
|
}
|
|
583
495
|
//# sourceMappingURL=crlVerification.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crlVerification.js","sourceRoot":"","sources":["../../../security/certificateVerification/crlVerification.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crlVerification.js","sourceRoot":"","sources":["../../../security/certificateVerification/crlVerification.ts"],"names":[],"mappings":"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"}
|