@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.
Files changed (311) hide show
  1. package/bin/cliOperations.ts +25 -3
  2. package/bin/run.ts +18 -0
  3. package/components/Application.ts +52 -78
  4. package/components/DESIGN.md +76 -3
  5. package/components/Scope.ts +10 -4
  6. package/components/anthropic/index.ts +10 -1
  7. package/components/bedrock/index.ts +10 -1
  8. package/components/componentLoader.ts +23 -14
  9. package/components/mcp/tools/operations.ts +3 -1
  10. package/components/ollama/index.ts +10 -1
  11. package/components/openai/index.ts +265 -18
  12. package/components/operations.js +40 -1
  13. package/config/configUtils.ts +3 -19
  14. package/dataLayer/DESIGN.md +29 -5
  15. package/dataLayer/harperBridge/ResourceBridge.ts +39 -3
  16. package/dataLayer/restoreMarker.ts +250 -14
  17. package/dataLayer/schema.ts +2 -7
  18. package/dataLayer/schemaDescribe.ts +10 -0
  19. package/dist/bin/cliOperations.js +28 -3
  20. package/dist/bin/cliOperations.js.map +1 -1
  21. package/dist/bin/run.js +19 -0
  22. package/dist/bin/run.js.map +1 -1
  23. package/dist/components/Application.d.ts +8 -2
  24. package/dist/components/Application.js +43 -69
  25. package/dist/components/Application.js.map +1 -1
  26. package/dist/components/Scope.d.ts +1 -1
  27. package/dist/components/Scope.js +9 -4
  28. package/dist/components/Scope.js.map +1 -1
  29. package/dist/components/anthropic/index.d.ts +0 -10
  30. package/dist/components/anthropic/index.js +9 -1
  31. package/dist/components/anthropic/index.js.map +1 -1
  32. package/dist/components/bedrock/index.d.ts +0 -12
  33. package/dist/components/bedrock/index.js +9 -1
  34. package/dist/components/bedrock/index.js.map +1 -1
  35. package/dist/components/componentLoader.js +23 -14
  36. package/dist/components/componentLoader.js.map +1 -1
  37. package/dist/components/mcp/tools/operations.js +1 -1
  38. package/dist/components/mcp/tools/operations.js.map +1 -1
  39. package/dist/components/ollama/index.d.ts +0 -13
  40. package/dist/components/ollama/index.js +9 -1
  41. package/dist/components/ollama/index.js.map +1 -1
  42. package/dist/components/openai/index.d.ts +11 -15
  43. package/dist/components/openai/index.js +224 -12
  44. package/dist/components/openai/index.js.map +1 -1
  45. package/dist/components/operations.d.ts +9 -0
  46. package/dist/components/operations.js +32 -2
  47. package/dist/components/operations.js.map +1 -1
  48. package/dist/config/configUtils.d.ts +1 -2
  49. package/dist/config/configUtils.js +7 -22
  50. package/dist/config/configUtils.js.map +1 -1
  51. package/dist/dataLayer/harperBridge/ResourceBridge.js +29 -2
  52. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  53. package/dist/dataLayer/restoreMarker.d.ts +25 -3
  54. package/dist/dataLayer/restoreMarker.js +213 -13
  55. package/dist/dataLayer/restoreMarker.js.map +1 -1
  56. package/dist/dataLayer/schema.js +1 -4
  57. package/dist/dataLayer/schema.js.map +1 -1
  58. package/dist/dataLayer/schemaDescribe.js +10 -0
  59. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js.map +1 -1
  62. package/dist/json/systemSchema.json +28 -0
  63. package/dist/resources/DatabaseTransaction.d.ts +21 -1
  64. package/dist/resources/DatabaseTransaction.js +147 -8
  65. package/dist/resources/DatabaseTransaction.js.map +1 -1
  66. package/dist/resources/PrimaryRocksDatabase.js +1 -1
  67. package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
  68. package/dist/resources/Table.d.ts +31 -3
  69. package/dist/resources/Table.js +397 -79
  70. package/dist/resources/Table.js.map +1 -1
  71. package/dist/resources/auditStore.js +16 -10
  72. package/dist/resources/auditStore.js.map +1 -1
  73. package/dist/resources/blob.d.ts +1 -0
  74. package/dist/resources/blob.js +14 -5
  75. package/dist/resources/blob.js.map +1 -1
  76. package/dist/resources/branchDatabase.js +3 -3
  77. package/dist/resources/branchDatabase.js.map +1 -1
  78. package/dist/resources/databaseDropPreparation.d.ts +20 -0
  79. package/dist/resources/databaseDropPreparation.js +106 -0
  80. package/dist/resources/databaseDropPreparation.js.map +1 -0
  81. package/dist/resources/databases.d.ts +26 -21
  82. package/dist/resources/databases.js +1040 -204
  83. package/dist/resources/databases.js.map +1 -1
  84. package/dist/resources/derivedIndexRegistry.d.ts +23 -0
  85. package/dist/resources/derivedIndexRegistry.js +92 -0
  86. package/dist/resources/derivedIndexRegistry.js.map +1 -1
  87. package/dist/resources/derivedIndexRuntime.d.ts +10 -0
  88. package/dist/resources/derivedIndexRuntime.js +136 -25
  89. package/dist/resources/derivedIndexRuntime.js.map +1 -1
  90. package/dist/resources/derivedIndexes.d.ts +39 -0
  91. package/dist/resources/derivedIndexes.js +733 -0
  92. package/dist/resources/derivedIndexes.js.map +1 -0
  93. package/dist/resources/fullTextSchema.d.ts +8 -0
  94. package/dist/resources/fullTextSchema.js +42 -0
  95. package/dist/resources/fullTextSchema.js.map +1 -1
  96. package/dist/resources/fullTextSchemaLifecycle.d.ts +0 -5
  97. package/dist/resources/fullTextSchemaLifecycle.js +0 -9
  98. package/dist/resources/fullTextSchemaLifecycle.js.map +1 -1
  99. package/dist/resources/graphql.js +101 -9
  100. package/dist/resources/graphql.js.map +1 -1
  101. package/dist/resources/indexes/hnswDerivedIndex.d.ts +0 -10
  102. package/dist/resources/indexes/hnswDerivedIndex.js +0 -230
  103. package/dist/resources/indexes/hnswDerivedIndex.js.map +1 -1
  104. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.d.ts +3 -0
  105. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js +57 -8
  106. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js.map +1 -1
  107. package/dist/resources/models/Models.d.ts +26 -3
  108. package/dist/resources/models/Models.js +256 -13
  109. package/dist/resources/models/Models.js.map +1 -1
  110. package/dist/resources/models/TestBackend.d.ts +3 -1
  111. package/dist/resources/models/TestBackend.js +35 -1
  112. package/dist/resources/models/TestBackend.js.map +1 -1
  113. package/dist/resources/models/analyticsTable.d.ts +2 -2
  114. package/dist/resources/models/analyticsTable.js +4 -2
  115. package/dist/resources/models/analyticsTable.js.map +1 -1
  116. package/dist/resources/models/backendHelpers.d.ts +24 -0
  117. package/dist/resources/models/backendHelpers.js +18 -1
  118. package/dist/resources/models/backendHelpers.js.map +1 -1
  119. package/dist/resources/models/backendRegistry.d.ts +10 -21
  120. package/dist/resources/models/backendRegistry.js +74 -18
  121. package/dist/resources/models/backendRegistry.js.map +1 -1
  122. package/dist/resources/models/bootstrap.d.ts +7 -0
  123. package/dist/resources/models/bootstrap.js +36 -4
  124. package/dist/resources/models/bootstrap.js.map +1 -1
  125. package/dist/resources/models/decideHook.d.ts +33 -0
  126. package/dist/resources/models/decideHook.js +105 -0
  127. package/dist/resources/models/decideHook.js.map +1 -0
  128. package/dist/resources/models/decision.d.ts +64 -0
  129. package/dist/resources/models/decision.js +507 -0
  130. package/dist/resources/models/decision.js.map +1 -0
  131. package/dist/resources/models/decisionStore.d.ts +134 -0
  132. package/dist/resources/models/decisionStore.js +350 -0
  133. package/dist/resources/models/decisionStore.js.map +1 -0
  134. package/dist/resources/models/embedHook.d.ts +66 -8
  135. package/dist/resources/models/embedHook.js +228 -61
  136. package/dist/resources/models/embedHook.js.map +1 -1
  137. package/dist/resources/models/generativeDecision.d.ts +58 -0
  138. package/dist/resources/models/generativeDecision.js +315 -0
  139. package/dist/resources/models/generativeDecision.js.map +1 -0
  140. package/dist/resources/models/types.d.ts +232 -4
  141. package/dist/security/authn/oidc/tokenExchange.js +3 -33
  142. package/dist/security/authn/oidc/tokenExchange.js.map +1 -1
  143. package/dist/security/authn/oidc/tokenUseTable.d.ts +9 -0
  144. package/dist/security/authn/oidc/tokenUseTable.js +28 -0
  145. package/dist/security/authn/oidc/tokenUseTable.js.map +1 -0
  146. package/dist/security/certificateVerification/certificateVerificationSource.d.ts +0 -1
  147. package/dist/security/certificateVerification/certificateVerificationSource.js +3 -3
  148. package/dist/security/certificateVerification/certificateVerificationSource.js.map +1 -1
  149. package/dist/security/certificateVerification/crlVerification.js +77 -165
  150. package/dist/security/certificateVerification/crlVerification.js.map +1 -1
  151. package/dist/security/certificateVerification/types.d.ts +0 -3
  152. package/dist/security/certificateVerification/verificationTables.d.ts +19 -0
  153. package/dist/security/certificateVerification/verificationTables.js +125 -0
  154. package/dist/security/certificateVerification/verificationTables.js.map +1 -0
  155. package/dist/security/certificateVerification/verificationUtils.d.ts +1 -1
  156. package/dist/security/certificateVerification/verificationUtils.js +6 -31
  157. package/dist/security/certificateVerification/verificationUtils.js.map +1 -1
  158. package/dist/security/jsLoader.d.ts +5 -0
  159. package/dist/security/jsLoader.js +8 -0
  160. package/dist/security/jsLoader.js.map +1 -1
  161. package/dist/server/Server.d.ts +1 -0
  162. package/dist/server/Server.js.map +1 -1
  163. package/dist/server/http.js +2 -2
  164. package/dist/server/http.js.map +1 -1
  165. package/dist/server/itc/serverHandlers.js +21 -2
  166. package/dist/server/itc/serverHandlers.js.map +1 -1
  167. package/dist/server/jobs/jobOwnership.d.ts +25 -0
  168. package/dist/server/jobs/jobOwnership.js +127 -0
  169. package/dist/server/jobs/jobOwnership.js.map +1 -0
  170. package/dist/server/jobs/jobProcess.js +9 -2
  171. package/dist/server/jobs/jobProcess.js.map +1 -1
  172. package/dist/server/jobs/jobs.js +18 -5
  173. package/dist/server/jobs/jobs.js.map +1 -1
  174. package/dist/server/loadRootComponents.js +10 -0
  175. package/dist/server/loadRootComponents.js.map +1 -1
  176. package/dist/server/serverHelpers/contentTypes.js +11 -1
  177. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  178. package/dist/server/serverHelpers/serverHandlers.js +12 -2
  179. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  180. package/dist/server/threads/itc.d.ts +4 -1
  181. package/dist/server/threads/itc.js +29 -6
  182. package/dist/server/threads/itc.js.map +1 -1
  183. package/dist/server/threads/manageThreads.d.ts +12 -4
  184. package/dist/server/threads/manageThreads.js +241 -119
  185. package/dist/server/threads/manageThreads.js.map +1 -1
  186. package/dist/server/threads/threadServer.d.ts +1 -0
  187. package/dist/server/threads/threadServer.js +15 -1
  188. package/dist/server/threads/threadServer.js.map +1 -1
  189. package/dist/server/threads/windowsProcessTree.d.ts +91 -0
  190. package/dist/server/threads/windowsProcessTree.js +361 -0
  191. package/dist/server/threads/windowsProcessTree.js.map +1 -0
  192. package/dist/server/throttle.d.ts +1 -1
  193. package/dist/server/throttle.js +8 -1
  194. package/dist/server/throttle.js.map +1 -1
  195. package/dist/upgrade/directives/5-3-0.js +53 -46
  196. package/dist/upgrade/directives/5-3-0.js.map +1 -1
  197. package/dist/utility/errors/hdbError.d.ts +10 -1
  198. package/dist/utility/errors/hdbError.js +55 -11
  199. package/dist/utility/errors/hdbError.js.map +1 -1
  200. package/dist/utility/fsync.d.ts +2 -0
  201. package/dist/utility/fsync.js +20 -0
  202. package/dist/utility/fsync.js.map +1 -0
  203. package/dist/utility/globalSchema.d.ts +18 -0
  204. package/dist/utility/hdbTerms.d.ts +3 -0
  205. package/dist/utility/hdbTerms.js +3 -0
  206. package/dist/utility/hdbTerms.js.map +1 -1
  207. package/dist/utility/signalling.d.ts +7 -1
  208. package/dist/utility/signalling.js +27 -3
  209. package/dist/utility/signalling.js.map +1 -1
  210. package/dist/utility/when.d.ts +1 -0
  211. package/dist/utility/when.js +21 -0
  212. package/dist/utility/when.js.map +1 -1
  213. package/dist/validation/configValidator.js +30 -3
  214. package/dist/validation/configValidator.js.map +1 -1
  215. package/index.ts +13 -0
  216. package/json/systemSchema.json +28 -0
  217. package/npm-shrinkwrap.json +151 -55
  218. package/package.json +14 -13
  219. package/resources/DESIGN.md +80 -100
  220. package/resources/DatabaseTransaction.ts +157 -10
  221. package/resources/PrimaryRocksDatabase.ts +2 -2
  222. package/resources/Table.ts +494 -101
  223. package/resources/auditStore.ts +18 -10
  224. package/resources/blob.ts +13 -6
  225. package/resources/branchDatabase.ts +3 -3
  226. package/resources/databaseDropPreparation.ts +120 -0
  227. package/resources/databases.ts +1155 -205
  228. package/resources/derivedIndexRegistry.ts +122 -0
  229. package/resources/derivedIndexRuntime.ts +157 -30
  230. package/resources/derivedIndexes.ts +856 -0
  231. package/resources/fullTextSchema.ts +55 -0
  232. package/resources/fullTextSchemaLifecycle.ts +0 -15
  233. package/resources/graphql.ts +107 -12
  234. package/resources/indexes/DESIGN.md +7 -0
  235. package/resources/indexes/hnswDerivedIndex.ts +0 -260
  236. package/resources/indexes/nativeFullTextDerivedIndexLifecycle.ts +72 -9
  237. package/resources/models/DESIGN.md +39 -0
  238. package/resources/models/Models.ts +361 -18
  239. package/resources/models/TestBackend.ts +56 -1
  240. package/resources/models/analyticsTable.ts +6 -4
  241. package/resources/models/backendHelpers.ts +17 -0
  242. package/resources/models/backendRegistry.ts +76 -21
  243. package/resources/models/bootstrap.ts +57 -7
  244. package/resources/models/decideHook.ts +135 -0
  245. package/resources/models/decision.ts +505 -0
  246. package/resources/models/decisionStore.ts +419 -0
  247. package/resources/models/embedHook.ts +272 -55
  248. package/resources/models/generativeDecision.ts +459 -0
  249. package/resources/models/types.ts +231 -4
  250. package/security/DESIGN.md +22 -2
  251. package/security/authn/oidc/tokenExchange.ts +6 -34
  252. package/security/authn/oidc/tokenUseTable.ts +27 -0
  253. package/security/certificateVerification/certificateVerificationSource.ts +2 -3
  254. package/security/certificateVerification/crlVerification.ts +96 -174
  255. package/security/certificateVerification/types.ts +0 -3
  256. package/security/certificateVerification/verificationTables.ts +124 -0
  257. package/security/certificateVerification/verificationUtils.ts +8 -32
  258. package/security/jsLoader.ts +9 -1
  259. package/server/DESIGN.md +27 -1
  260. package/server/Server.ts +2 -1
  261. package/server/http.ts +4 -2
  262. package/server/itc/serverHandlers.js +29 -1
  263. package/server/jobs/jobOwnership.ts +89 -0
  264. package/server/jobs/jobProcess.ts +8 -2
  265. package/server/jobs/jobs.ts +15 -4
  266. package/server/loadRootComponents.js +11 -0
  267. package/server/serverHelpers/contentTypes.ts +13 -1
  268. package/server/serverHelpers/serverHandlers.js +11 -2
  269. package/server/threads/itc.js +32 -6
  270. package/server/threads/manageThreads.js +268 -122
  271. package/server/threads/threadServer.js +13 -1
  272. package/server/threads/windowsProcessTree.ts +409 -0
  273. package/server/throttle.ts +11 -1
  274. package/studio/web/assets/{Chat-CveGbxe6.js → Chat-Bq60AO-g.js} +1 -1
  275. package/studio/web/assets/{FloatingChat-IpCFgYWL.js → FloatingChat-D4560T0p.js} +3 -3
  276. package/studio/web/assets/{apiToken-CS8fFTgL.js → apiToken-BEvbFPMc.js} +1 -1
  277. package/studio/web/assets/{applications-D7F4Jopl.js → applications-CSUVTH4E.js} +1 -1
  278. package/studio/web/assets/{cssMode-Daw_oLPq.js → cssMode-DJyc9mHj.js} +1 -1
  279. package/studio/web/assets/{editor-B3Bs1zWX.js → editor-DDIsQfj6.js} +1 -1
  280. package/studio/web/assets/{html-CDaQwWiE.js → html-g1BJHxLy.js} +1 -1
  281. package/studio/web/assets/{htmlMode-Cb6emO4U.js → htmlMode-Vh5IglCQ.js} +1 -1
  282. package/studio/web/assets/{index-B4g2Fu_2.js → index-DGRAzvO4.js} +5 -5
  283. package/studio/web/assets/{index.lazy-NwhvF1q1.js → index.lazy-vgSic7et.js} +1 -1
  284. package/studio/web/assets/{javascript-2_86gB9Q.js → javascript-5VIolqf7.js} +1 -1
  285. package/studio/web/assets/{jsonMode-DX-i86uQ.js → jsonMode-DG4zQraI.js} +1 -1
  286. package/studio/web/assets/{languageServices-B85WN-Ej.js → languageServices-t5FBpX-i.js} +1 -1
  287. package/studio/web/assets/{lspLanguageFeatures-JCWHIsKg.js → lspLanguageFeatures-DgVnNPh-.js} +1 -1
  288. package/studio/web/assets/{notifications-D9ejzt52.js → notifications-BeWcX04m.js} +1 -1
  289. package/studio/web/assets/{notifications-B7hjKhai.js → notifications-DUGWrWoO.js} +1 -1
  290. package/studio/web/assets/{profile-D8B6No3F.js → profile-BvUEDBzW.js} +1 -1
  291. package/studio/web/assets/{regions-DFazIfTK.js → regions-CB-_2m7M.js} +1 -1
  292. package/studio/web/assets/{register-CwFLviLF.js → register-1w1Zr3b2.js} +2 -2
  293. package/studio/web/assets/{setComponentFile-VnJ80SSJ.js → setComponentFile-z4-qJCbA.js} +1 -1
  294. package/studio/web/assets/{setup-BYQxFy-C.js → setup-CS50uJ4x.js} +2 -2
  295. package/studio/web/assets/{status-Cn5XjmsL.js → status-CI0wOdOE.js} +1 -1
  296. package/studio/web/assets/{toggleHighContrast-g9xIh6TX.js → toggleHighContrast-BsAE4jPe.js} +1 -1
  297. package/studio/web/assets/{tsMode-EC-n0Wqc.js → tsMode-D83Gg3cq.js} +1 -1
  298. package/studio/web/assets/{typescript-DHmM9JCO.js → typescript-Dfp-GrNq.js} +1 -1
  299. package/studio/web/assets/{useEntityRestURL-BUdnVSVv.js → useEntityRestURL-BKetlINf.js} +1 -1
  300. package/studio/web/assets/{workers-BVl9bBB-.js → workers-CCvmDLH3.js} +1 -1
  301. package/studio/web/assets/{xml-C4_sqOkX.js → xml-06pZp00U.js} +1 -1
  302. package/studio/web/assets/{yaml-CVkbDqtW.js → yaml-iSnWMVlV.js} +1 -1
  303. package/studio/web/index.html +1 -1
  304. package/upgrade/directives/5-3-0.ts +61 -54
  305. package/utility/DESIGN.md +5 -1
  306. package/utility/errors/hdbError.ts +56 -8
  307. package/utility/fsync.ts +16 -0
  308. package/utility/hdbTerms.ts +3 -0
  309. package/utility/signalling.ts +33 -4
  310. package/utility/when.ts +22 -0
  311. 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
- // Memoized per process, but `table()` is NOT skipped merely because the table already exists.
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":"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"}
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"}
@@ -12,7 +12,6 @@ export declare class CertificateVerificationSource extends Resource {
12
12
  status: any;
13
13
  reason: any;
14
14
  checked_at: number;
15
- expiresAt: any;
16
15
  method: string;
17
16
  }>;
18
17
  }
@@ -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
- // Handle result consistently
66
- const expiresAt = Date.now() + methodConfig.cacheTtl;
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,6BAA6B;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC;QAErD,OAAO;YACN,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,SAAS;YACT,MAAM;SACN,CAAC;IACH,CAAC;CACD;AAxDD,sEAwDC"}
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 result = await downloadAndParseCRL(distributionPoint, issuerPemStr, config.timeout);
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
- const crlExpiry = result.next_update;
86
- const configExpiry = Date.now() + config.cacheTtl;
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
- const expiresAt = Date.now() + verificationConfig_ts_1.ERROR_CACHE_TTL;
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, databases_ts_1.table)({
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
- if (!revokedCertificateTable) {
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 was just fetched/refreshed — re-check the revoked table since it may have
323
- // been populated by processRevokedCertificates during the download above
324
- const revokedEntryFresh = await revokedTable.get(compositeId);
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 downloadAndParseCRL(distributionPoint, issuerPem, config.timeout);
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 timeout - Download timeout in milliseconds
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, timeout) {
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
- * Process revoked certificates from CRL and store them in the revoked certificates table
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
- // Clear existing entries for this CRL to ensure data consistency
505
- // This prevents stale revocation data when certificates are removed from updated CRLs
506
- try {
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
- catch (error) {
510
- logger.warn?.(`Failed to clear existing CRL entries: ${error}`);
511
- // Continue with processing - partial cleanup is better than no update
512
- }
513
- // Add new revoked certificates
514
- if (crl.revokedCertificates) {
515
- for (const revokedCert of crl.revokedCertificates) {
516
- try {
517
- // Extract serial number using PKI.js - same method as extractSerialNumber() function
518
- // This gives us the clean serial number without ASN.1 encoding
519
- const serialHex = revokedCert.userCertificate.valueBlock.valueHexView;
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
- const revocationReason = 'unspecified';
532
- const entry = {
533
- composite_id: compositeId,
534
- serial_number: serialNumber,
535
- issuer_key_id: issuerKeyId,
536
- revocation_date: revocationDate,
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
- * Clear existing revoked certificate entries for a specific CRL source
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
- // We need to find all entries with the matching crl_source and delete them individually
559
- try {
560
- // Use Harper's search capabilities to find entries by crl_source
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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"}