@ibgib/core-gib 0.1.59 → 0.1.61

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 (206) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/dist/common/other/graph-helper.d.mts.map +1 -1
  3. package/dist/common/other/graph-helper.mjs +7 -6
  4. package/dist/common/other/graph-helper.mjs.map +1 -1
  5. package/dist/keystone/keystone-config-builder.d.mts +1 -2
  6. package/dist/keystone/keystone-config-builder.d.mts.map +1 -1
  7. package/dist/keystone/keystone-config-builder.mjs +4 -19
  8. package/dist/keystone/keystone-config-builder.mjs.map +1 -1
  9. package/dist/keystone/keystone-constants.d.mts +2 -0
  10. package/dist/keystone/keystone-constants.d.mts.map +1 -1
  11. package/dist/keystone/keystone-constants.mjs +2 -0
  12. package/dist/keystone/keystone-constants.mjs.map +1 -1
  13. package/dist/keystone/keystone-helpers.d.mts +5 -15
  14. package/dist/keystone/keystone-helpers.d.mts.map +1 -1
  15. package/dist/keystone/keystone-helpers.mjs +59 -73
  16. package/dist/keystone/keystone-helpers.mjs.map +1 -1
  17. package/dist/keystone/keystone-policy-types.d.mts +6 -4
  18. package/dist/keystone/keystone-policy-types.d.mts.map +1 -1
  19. package/dist/keystone/keystone-service-v1.d.mts.map +1 -1
  20. package/dist/keystone/keystone-service-v1.mjs +4 -8
  21. package/dist/keystone/keystone-service-v1.mjs.map +1 -1
  22. package/dist/keystone/keystone-service-v1.respec.mjs +182 -33
  23. package/dist/keystone/keystone-service-v1.respec.mjs.map +1 -1
  24. package/dist/keystone/keystone-types.d.mts +4 -11
  25. package/dist/keystone/keystone-types.d.mts.map +1 -1
  26. package/dist/keystone/policy/keystone-profile-builder.d.mts +25 -0
  27. package/dist/keystone/policy/keystone-profile-builder.d.mts.map +1 -0
  28. package/dist/keystone/policy/keystone-profile-builder.mjs +117 -0
  29. package/dist/keystone/policy/keystone-profile-builder.mjs.map +1 -0
  30. package/dist/keystone/policy/profiles/profile-high.json +84 -0
  31. package/dist/keystone/policy/profiles/profile-low.json +84 -0
  32. package/dist/keystone/policy/profiles/profile-medium.json +84 -0
  33. package/dist/keystone/policy/profiles/profile-session.json +84 -0
  34. package/dist/keystone/policy/profiles/profile-test.json +84 -0
  35. package/dist/keystone/policy/schemas/connect-pool.high.schema.json +23 -0
  36. package/dist/keystone/policy/schemas/connect-pool.low.schema.json +23 -0
  37. package/dist/keystone/policy/schemas/connect-pool.medium.schema.json +23 -0
  38. package/dist/keystone/policy/schemas/keystone.high.schema.json +26 -0
  39. package/dist/keystone/policy/schemas/keystone.low.schema.json +26 -0
  40. package/dist/keystone/policy/schemas/keystone.medium.schema.json +26 -0
  41. package/dist/keystone/policy/schemas/manage-pool.high.schema.json +23 -0
  42. package/dist/keystone/policy/schemas/manage-pool.low.schema.json +23 -0
  43. package/dist/keystone/policy/schemas/manage-pool.medium.schema.json +23 -0
  44. package/dist/keystone/policy/schemas/revoke-pool.high.schema.json +23 -0
  45. package/dist/keystone/policy/schemas/revoke-pool.low.schema.json +23 -0
  46. package/dist/keystone/policy/schemas/revoke-pool.medium.schema.json +23 -0
  47. package/dist/keystone/policy/schemas/sign-pool.high.schema.json +23 -0
  48. package/dist/keystone/policy/schemas/sign-pool.low.schema.json +23 -0
  49. package/dist/keystone/policy/schemas/sign-pool.medium.schema.json +23 -0
  50. package/dist/keystone/policy/schemas/sync-pool.high.schema.json +23 -0
  51. package/dist/keystone/policy/schemas/sync-pool.low.schema.json +23 -0
  52. package/dist/keystone/policy/schemas/sync-pool.medium.schema.json +23 -0
  53. package/dist/sync/sync-conflict-adv-multitimelines.withid.respec.d.mts +8 -0
  54. package/dist/sync/sync-conflict-adv-multitimelines.withid.respec.d.mts.map +1 -0
  55. package/dist/sync/sync-conflict-adv-multitimelines.withid.respec.mjs +582 -0
  56. package/dist/sync/sync-conflict-adv-multitimelines.withid.respec.mjs.map +1 -0
  57. package/dist/sync/sync-conflict-basic-divergence.withid.respec.d.mts +7 -0
  58. package/dist/sync/sync-conflict-basic-divergence.withid.respec.d.mts.map +1 -0
  59. package/dist/sync/sync-conflict-basic-divergence.withid.respec.mjs +274 -0
  60. package/dist/sync/sync-conflict-basic-divergence.withid.respec.mjs.map +1 -0
  61. package/dist/sync/sync-conflict-basic-multitimelines.withid.respec.d.mts +8 -0
  62. package/dist/sync/sync-conflict-basic-multitimelines.withid.respec.d.mts.map +1 -0
  63. package/dist/sync/sync-conflict-basic-multitimelines.withid.respec.mjs +322 -0
  64. package/dist/sync/sync-conflict-basic-multitimelines.withid.respec.mjs.map +1 -0
  65. package/dist/sync/sync-conflict-text-merge.withid.respec.d.mts +7 -0
  66. package/dist/sync/sync-conflict-text-merge.withid.respec.d.mts.map +1 -0
  67. package/dist/sync/sync-conflict-text-merge.withid.respec.mjs +307 -0
  68. package/dist/sync/sync-conflict-text-merge.withid.respec.mjs.map +1 -0
  69. package/dist/sync/sync-innerspace-constants.withid.respec.d.mts +8 -0
  70. package/dist/sync/sync-innerspace-constants.withid.respec.d.mts.map +1 -0
  71. package/dist/sync/sync-innerspace-constants.withid.respec.mjs +233 -0
  72. package/dist/sync/sync-innerspace-constants.withid.respec.mjs.map +1 -0
  73. package/dist/sync/sync-innerspace-deep-updates.withid.respec.d.mts +7 -0
  74. package/dist/sync/sync-innerspace-deep-updates.withid.respec.d.mts.map +1 -0
  75. package/dist/sync/sync-innerspace-deep-updates.withid.respec.mjs +233 -0
  76. package/dist/sync/sync-innerspace-deep-updates.withid.respec.mjs.map +1 -0
  77. package/dist/sync/sync-innerspace-dest-ahead.withid.respec.d.mts +7 -0
  78. package/dist/sync/sync-innerspace-dest-ahead.withid.respec.d.mts.map +1 -0
  79. package/dist/sync/sync-innerspace-dest-ahead.withid.respec.mjs +225 -0
  80. package/dist/sync/sync-innerspace-dest-ahead.withid.respec.mjs.map +1 -0
  81. package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs.map +1 -1
  82. package/dist/sync/sync-innerspace-multiple-timelines.withid.respec.d.mts +7 -0
  83. package/dist/sync/sync-innerspace-multiple-timelines.withid.respec.d.mts.map +1 -0
  84. package/dist/sync/sync-innerspace-multiple-timelines.withid.respec.mjs +235 -0
  85. package/dist/sync/sync-innerspace-multiple-timelines.withid.respec.mjs.map +1 -0
  86. package/dist/sync/sync-innerspace-partial-update.withid.respec.d.mts +7 -0
  87. package/dist/sync/sync-innerspace-partial-update.withid.respec.d.mts.map +1 -0
  88. package/dist/sync/sync-innerspace-partial-update.withid.respec.mjs +211 -0
  89. package/dist/sync/sync-innerspace-partial-update.withid.respec.mjs.map +1 -0
  90. package/dist/sync/sync-innerspace.withid.respec.d.mts +8 -0
  91. package/dist/sync/sync-innerspace.withid.respec.d.mts.map +1 -0
  92. package/dist/sync/sync-innerspace.withid.respec.mjs +260 -0
  93. package/dist/sync/sync-innerspace.withid.respec.mjs.map +1 -0
  94. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs +1 -1
  95. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs.map +1 -1
  96. package/dist/sync/sync-peer/sync-peer-types.d.mts +12 -1
  97. package/dist/sync/sync-peer/sync-peer-types.d.mts.map +1 -1
  98. package/dist/sync/sync-peer/sync-peer-v1.d.mts +7 -0
  99. package/dist/sync/sync-peer/sync-peer-v1.d.mts.map +1 -1
  100. package/dist/sync/sync-peer/sync-peer-v1.mjs +43 -1
  101. package/dist/sync/sync-peer/sync-peer-v1.mjs.map +1 -1
  102. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.d.mts +2 -0
  103. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.d.mts.map +1 -1
  104. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mjs +28 -9
  105. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mjs.map +1 -1
  106. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.d.mts +1 -1
  107. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.d.mts.map +1 -1
  108. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs +5 -3
  109. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs.map +1 -1
  110. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.d.mts +16 -0
  111. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.d.mts.map +1 -1
  112. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mjs +223 -79
  113. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mjs.map +1 -1
  114. package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts.map +1 -1
  115. package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs +41 -2
  116. package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs.map +1 -1
  117. package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts +4 -0
  118. package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts.map +1 -1
  119. package/dist/sync/sync-saga-coordinator.d.mts +6 -0
  120. package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
  121. package/dist/sync/sync-saga-coordinator.mjs +213 -137
  122. package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
  123. package/dist/sync/sync-withid.pingpong.respec.mjs +70 -2
  124. package/dist/sync/sync-withid.pingpong.respec.mjs.map +1 -1
  125. package/dist/timeline/timeline-api.d.mts.map +1 -1
  126. package/dist/timeline/timeline-api.mjs +1 -14
  127. package/dist/timeline/timeline-api.mjs.map +1 -1
  128. package/dist/witness/space/reconciliation-space/reconciliation-space-base.d.mts.map +1 -1
  129. package/dist/witness/space/reconciliation-space/reconciliation-space-base.mjs +0 -40
  130. package/dist/witness/space/reconciliation-space/reconciliation-space-base.mjs.map +1 -1
  131. package/dist/witness/space/reconciliation-space/reconciliation-space-helper.d.mts.map +1 -1
  132. package/dist/witness/space/reconciliation-space/reconciliation-space-helper.mjs +6 -6
  133. package/dist/witness/space/reconciliation-space/reconciliation-space-helper.mjs.map +1 -1
  134. package/ibgib-foundations.md +2 -1
  135. package/package.json +1 -1
  136. package/src/common/other/graph-helper.mts +7 -6
  137. package/src/keystone/README.md +19 -15
  138. package/src/keystone/docs/CRYPTANALYSIS.md +185 -0
  139. package/src/keystone/docs/architecture.md +24 -1
  140. package/src/keystone/docs/profiles.md +124 -0
  141. package/src/keystone/keystone-config-builder.mts +3 -21
  142. package/src/keystone/keystone-constants.mts +2 -0
  143. package/src/keystone/keystone-helpers.mts +74 -77
  144. package/src/keystone/keystone-policy-types.mts +6 -4
  145. package/src/keystone/keystone-service-v1.mts +4 -9
  146. package/src/keystone/keystone-service-v1.respec.mts +214 -32
  147. package/src/keystone/keystone-types.mts +5 -9
  148. package/src/keystone/policy/IMPLEMENTATION.md +60 -0
  149. package/src/keystone/policy/README.md +94 -0
  150. package/src/keystone/policy/keystone-profile-builder.mts +131 -0
  151. package/src/keystone/policy/profiles/profile-high.json +84 -0
  152. package/src/keystone/policy/profiles/profile-low.json +84 -0
  153. package/src/keystone/policy/profiles/profile-medium.json +84 -0
  154. package/src/keystone/policy/profiles/profile-session.json +84 -0
  155. package/src/keystone/policy/profiles/profile-test.json +84 -0
  156. package/src/keystone/policy/schemas/connect-pool.high.schema.json +23 -0
  157. package/src/keystone/policy/schemas/connect-pool.low.schema.json +23 -0
  158. package/src/keystone/policy/schemas/connect-pool.medium.schema.json +23 -0
  159. package/src/keystone/policy/schemas/keystone.high.schema.json +26 -0
  160. package/src/keystone/policy/schemas/keystone.low.schema.json +26 -0
  161. package/src/keystone/policy/schemas/keystone.medium.schema.json +26 -0
  162. package/src/keystone/policy/schemas/manage-pool.high.schema.json +23 -0
  163. package/src/keystone/policy/schemas/manage-pool.low.schema.json +23 -0
  164. package/src/keystone/policy/schemas/manage-pool.medium.schema.json +23 -0
  165. package/src/keystone/policy/schemas/revoke-pool.high.schema.json +23 -0
  166. package/src/keystone/policy/schemas/revoke-pool.low.schema.json +23 -0
  167. package/src/keystone/policy/schemas/revoke-pool.medium.schema.json +23 -0
  168. package/src/keystone/policy/schemas/sign-pool.high.schema.json +23 -0
  169. package/src/keystone/policy/schemas/sign-pool.low.schema.json +23 -0
  170. package/src/keystone/policy/schemas/sign-pool.medium.schema.json +23 -0
  171. package/src/keystone/policy/schemas/sync-pool.high.schema.json +23 -0
  172. package/src/keystone/policy/schemas/sync-pool.low.schema.json +23 -0
  173. package/src/keystone/policy/schemas/sync-pool.medium.schema.json +23 -0
  174. package/src/sync/docs/security-3b.md +92 -0
  175. package/src/sync/docs/security.md +139 -38
  176. package/src/sync/sync-conflict-adv-multitimelines.withid.respec.mts +706 -0
  177. package/src/sync/sync-conflict-basic-divergence.withid.respec.mts +321 -0
  178. package/src/sync/sync-conflict-basic-multitimelines.withid.respec.mts +374 -0
  179. package/src/sync/sync-conflict-text-merge.withid.respec.mts +347 -0
  180. package/src/sync/sync-innerspace-constants.withid.respec.mts +264 -0
  181. package/src/sync/sync-innerspace-deep-updates.withid.respec.mts +272 -0
  182. package/src/sync/sync-innerspace-dest-ahead.withid.respec.mts +266 -0
  183. package/src/sync/sync-innerspace-multiple-timelines.respec.mts +0 -1
  184. package/src/sync/sync-innerspace-multiple-timelines.withid.respec.mts +273 -0
  185. package/src/sync/sync-innerspace-partial-update.withid.respec.mts +249 -0
  186. package/src/sync/sync-innerspace.withid.respec.mts +265 -0
  187. package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mts +1 -1
  188. package/src/sync/sync-peer/sync-peer-types.mts +11 -1
  189. package/src/sync/sync-peer/sync-peer-v1.mts +47 -1
  190. package/src/sync/sync-peer/sync-peer-websocket/README.md +42 -0
  191. package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mts +26 -9
  192. package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mts +5 -3
  193. package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mts +242 -78
  194. package/src/sync/sync-saga-context/sync-saga-context-helpers.mts +46 -4
  195. package/src/sync/sync-saga-context/sync-saga-context-types.mts +5 -0
  196. package/src/sync/sync-saga-coordinator.mts +221 -137
  197. package/src/sync/sync-withid.pingpong.respec.mts +76 -3
  198. package/src/timeline/timeline-api.mts +1 -15
  199. package/src/timeline/timeline-api.respec.mts +3 -3
  200. package/src/witness/space/reconciliation-space/reconciliation-space-base.mts +0 -46
  201. package/src/witness/space/reconciliation-space/reconciliation-space-helper.mts +6 -5
  202. package/tsconfig.json +6 -1
  203. package/src/keystone/keystone-policy.schema.json +0 -51
  204. package/src/sync/docs/ping_pong_plan.md +0 -147
  205. package/src/witness/space/reconciliation-space/reconciliation-space-base.mts.OLD.md +0 -884
  206. package/src/witness/space/reconciliation-space/reconciliation-space-helper.mts.OLD.md +0 -125
@@ -0,0 +1,131 @@
1
+ import { hash } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
2
+ import { KeystonePoolConfig } from "../keystone-types.mjs";
3
+ import { KeystonePoolTemplate, KeystonePolicyConfigTemplate, KeystoneBehaviorProfileTemplate } from "../keystone-policy-types.mjs";
4
+ import { createPoolConfigFromJson } from "../keystone-config-builder.mjs";
5
+
6
+ import profileHigh from "./profiles/profile-high.json" assert { type: "json" };
7
+ import profileMedium from "./profiles/profile-medium.json" assert { type: "json" };
8
+ import profileLow from "./profiles/profile-low.json" assert { type: "json" };
9
+ import profileSession from "./profiles/profile-session.json" assert { type: "json" };
10
+ import profileTest from "./profiles/profile-test.json" assert { type: "json" };
11
+
12
+ export class KeystoneProfileBuilder {
13
+ private _template: KeystonePolicyConfigTemplate;
14
+ private _username?: string;
15
+ private _email?: string;
16
+ private _description?: string;
17
+ private _details?: any;
18
+ private _customizations: { [poolId: string]: { template?: Partial<KeystonePoolTemplate>, behavior?: Partial<KeystoneBehaviorProfileTemplate> } } = {};
19
+
20
+ private constructor(template: KeystonePolicyConfigTemplate) {
21
+ // Deep copy the template to avoid modifying shared imports
22
+ this._template = JSON.parse(JSON.stringify(template));
23
+ }
24
+
25
+ static buildKeystone(profileName: 'high' | 'medium' | 'low' | 'session' | 'test'): KeystoneProfileBuilder {
26
+ let selected: KeystonePolicyConfigTemplate;
27
+ switch (profileName) {
28
+ case 'high':
29
+ selected = profileHigh as any;
30
+ break;
31
+ case 'medium':
32
+ selected = profileMedium as any;
33
+ break;
34
+ case 'low':
35
+ selected = profileLow as any;
36
+ break;
37
+ case 'session':
38
+ selected = profileSession as any;
39
+ break;
40
+ case 'test':
41
+ selected = profileTest as any;
42
+ break;
43
+ default:
44
+ throw new Error(`Unknown profile name: ${profileName} (E: fc10a8ad482ef2bda871ac567d268d26)`);
45
+ }
46
+ return new KeystoneProfileBuilder(selected);
47
+ }
48
+
49
+ withUsername(username: string): this {
50
+ this._username = username;
51
+ return this;
52
+ }
53
+
54
+ withEmail(email: string): this {
55
+ this._email = email;
56
+ return this;
57
+ }
58
+
59
+ withDescription(description: string): this {
60
+ this._description = description;
61
+ return this;
62
+ }
63
+
64
+ withDetails(details: any): this {
65
+ this._details = details;
66
+ return this;
67
+ }
68
+
69
+ customizePool(
70
+ poolId: string,
71
+ overrides: Omit<Partial<KeystonePoolTemplate>, 'behavior'> & { behavior?: Partial<KeystoneBehaviorProfileTemplate> }
72
+ ): this {
73
+ const { behavior, ...templateOverrides } = overrides;
74
+ this._customizations[poolId] = {
75
+ template: templateOverrides as any,
76
+ behavior
77
+ };
78
+ return this;
79
+ }
80
+
81
+ /**
82
+ * Unifies username, email, description, and details into a frameDetails object for genesis.
83
+ */
84
+ getFrameDetails(): any {
85
+ const details: any = { ...this._details };
86
+ if (this._username) { details.username = this._username; }
87
+ if (this._email) { details.email = this._email; }
88
+ if (this._description) { details.description = this._description; }
89
+ return details;
90
+ }
91
+
92
+ async compileConfigs(): Promise<KeystonePoolConfig[]> {
93
+ const poolConfigs: KeystonePoolConfig[] = [];
94
+
95
+ // Derive a unique user-specific base salt if username/email is provided
96
+ let userSalt = "";
97
+ if (this._username || this._email) {
98
+ const seed = `${this._username || ""}:${this._email || ""}`;
99
+ userSalt = await hash({ s: seed });
100
+ } else {
101
+ // Fallback salt to guarantee unique challenge IDs even without user details
102
+ userSalt = await hash({ s: "default-keystone-salt" });
103
+ }
104
+
105
+ for (const [poolKey, poolTemplate] of Object.entries(this._template.pools)) {
106
+ // Apply customization overrides
107
+ const custom = this._customizations[poolTemplate.id];
108
+ if (custom) {
109
+ if (custom.template) {
110
+ Object.assign(poolTemplate, custom.template);
111
+ }
112
+ if (custom.behavior && poolTemplate.behavior) {
113
+ Object.assign(poolTemplate.behavior, custom.behavior);
114
+ }
115
+ }
116
+
117
+ // Derive a unique salt for this specific pool by hashing userSalt + poolId
118
+ const saltSeed = `${userSalt}-${poolTemplate.id}`;
119
+ const derivedSalt = await hash({ s: saltSeed });
120
+
121
+ const poolConfig = createPoolConfigFromJson({
122
+ template: poolTemplate,
123
+ salt: derivedSalt
124
+ });
125
+
126
+ poolConfigs.push(poolConfig);
127
+ }
128
+
129
+ return poolConfigs;
130
+ }
131
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "$schema": "../schemas/keystone.high.schema.json",
3
+ "metadata": {
4
+ "name": "High Security Profile",
5
+ "securityLevel": "high"
6
+ },
7
+ "pools": {
8
+ "sync": {
9
+ "id": "sync",
10
+ "allowedVerbs": [
11
+ "sync"
12
+ ],
13
+ "algo": "SHA-512",
14
+ "rounds": 4,
15
+ "behavior": {
16
+ "size": 2000,
17
+ "replenish": "top-up",
18
+ "selectSequentially": 10,
19
+ "selectRandomly": 10,
20
+ "targetBindingCount": 16
21
+ }
22
+ },
23
+ "manage": {
24
+ "id": "manage",
25
+ "allowedVerbs": [
26
+ "manage"
27
+ ],
28
+ "algo": "SHA-512",
29
+ "rounds": 4,
30
+ "behavior": {
31
+ "size": 2000,
32
+ "replenish": "replace-all",
33
+ "selectSequentially": 10,
34
+ "selectRandomly": 10,
35
+ "targetBindingCount": 16
36
+ }
37
+ },
38
+ "revoke": {
39
+ "id": "revoke",
40
+ "allowedVerbs": [
41
+ "revoke"
42
+ ],
43
+ "algo": "SHA-512",
44
+ "rounds": 20,
45
+ "behavior": {
46
+ "size": 2000,
47
+ "replenish": "delete-all",
48
+ "selectSequentially": 50,
49
+ "selectRandomly": 50,
50
+ "targetBindingCount": 0
51
+ }
52
+ },
53
+ "connect": {
54
+ "id": "connect",
55
+ "allowedVerbs": [
56
+ "connect"
57
+ ],
58
+ "algo": "SHA-512",
59
+ "rounds": 4,
60
+ "behavior": {
61
+ "size": 2000,
62
+ "replenish": "top-up",
63
+ "selectSequentially": 10,
64
+ "selectRandomly": 10,
65
+ "targetBindingCount": 16
66
+ }
67
+ },
68
+ "sign": {
69
+ "id": "default",
70
+ "allowedVerbs": [
71
+ "sign"
72
+ ],
73
+ "algo": "SHA-512",
74
+ "rounds": 4,
75
+ "behavior": {
76
+ "size": 2000,
77
+ "replenish": "top-up",
78
+ "selectSequentially": 10,
79
+ "selectRandomly": 10,
80
+ "targetBindingCount": 16
81
+ }
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "$schema": "../schemas/keystone.low.schema.json",
3
+ "metadata": {
4
+ "name": "Low Security Profile",
5
+ "securityLevel": "low"
6
+ },
7
+ "pools": {
8
+ "sync": {
9
+ "id": "sync",
10
+ "allowedVerbs": [
11
+ "sync"
12
+ ],
13
+ "algo": "SHA-256",
14
+ "rounds": 1,
15
+ "behavior": {
16
+ "size": 100,
17
+ "replenish": "top-up",
18
+ "selectSequentially": 3,
19
+ "selectRandomly": 3,
20
+ "targetBindingCount": 8
21
+ }
22
+ },
23
+ "manage": {
24
+ "id": "manage",
25
+ "allowedVerbs": [
26
+ "manage"
27
+ ],
28
+ "algo": "SHA-256",
29
+ "rounds": 2,
30
+ "behavior": {
31
+ "size": 100,
32
+ "replenish": "replace-all",
33
+ "selectSequentially": 3,
34
+ "selectRandomly": 3,
35
+ "targetBindingCount": 8
36
+ }
37
+ },
38
+ "revoke": {
39
+ "id": "revoke",
40
+ "allowedVerbs": [
41
+ "revoke"
42
+ ],
43
+ "algo": "SHA-256",
44
+ "rounds": 5,
45
+ "behavior": {
46
+ "size": 100,
47
+ "replenish": "delete-all",
48
+ "selectSequentially": 3,
49
+ "selectRandomly": 3,
50
+ "targetBindingCount": 0
51
+ }
52
+ },
53
+ "connect": {
54
+ "id": "connect",
55
+ "allowedVerbs": [
56
+ "connect"
57
+ ],
58
+ "algo": "SHA-256",
59
+ "rounds": 1,
60
+ "behavior": {
61
+ "size": 100,
62
+ "replenish": "top-up",
63
+ "selectSequentially": 3,
64
+ "selectRandomly": 3,
65
+ "targetBindingCount": 8
66
+ }
67
+ },
68
+ "sign": {
69
+ "id": "default",
70
+ "allowedVerbs": [
71
+ "sign"
72
+ ],
73
+ "algo": "SHA-256",
74
+ "rounds": 2,
75
+ "behavior": {
76
+ "size": 100,
77
+ "replenish": "top-up",
78
+ "selectSequentially": 3,
79
+ "selectRandomly": 3,
80
+ "targetBindingCount": 8
81
+ }
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "$schema": "../schemas/keystone.medium.schema.json",
3
+ "metadata": {
4
+ "name": "Medium Security Profile",
5
+ "securityLevel": "medium"
6
+ },
7
+ "pools": {
8
+ "sync": {
9
+ "id": "sync",
10
+ "allowedVerbs": [
11
+ "sync"
12
+ ],
13
+ "algo": "SHA-256",
14
+ "rounds": 2,
15
+ "behavior": {
16
+ "size": 500,
17
+ "replenish": "top-up",
18
+ "selectSequentially": 5,
19
+ "selectRandomly": 5,
20
+ "targetBindingCount": 10
21
+ }
22
+ },
23
+ "manage": {
24
+ "id": "manage",
25
+ "allowedVerbs": [
26
+ "manage"
27
+ ],
28
+ "algo": "SHA-256",
29
+ "rounds": 2,
30
+ "behavior": {
31
+ "size": 500,
32
+ "replenish": "replace-all",
33
+ "selectSequentially": 5,
34
+ "selectRandomly": 5,
35
+ "targetBindingCount": 10
36
+ }
37
+ },
38
+ "revoke": {
39
+ "id": "revoke",
40
+ "allowedVerbs": [
41
+ "revoke"
42
+ ],
43
+ "algo": "SHA-256",
44
+ "rounds": 10,
45
+ "behavior": {
46
+ "size": 500,
47
+ "replenish": "delete-all",
48
+ "selectSequentially": 20,
49
+ "selectRandomly": 20,
50
+ "targetBindingCount": 0
51
+ }
52
+ },
53
+ "connect": {
54
+ "id": "connect",
55
+ "allowedVerbs": [
56
+ "connect"
57
+ ],
58
+ "algo": "SHA-256",
59
+ "rounds": 2,
60
+ "behavior": {
61
+ "size": 500,
62
+ "replenish": "top-up",
63
+ "selectSequentially": 5,
64
+ "selectRandomly": 5,
65
+ "targetBindingCount": 10
66
+ }
67
+ },
68
+ "sign": {
69
+ "id": "default",
70
+ "allowedVerbs": [
71
+ "sign"
72
+ ],
73
+ "algo": "SHA-256",
74
+ "rounds": 2,
75
+ "behavior": {
76
+ "size": 500,
77
+ "replenish": "top-up",
78
+ "selectSequentially": 5,
79
+ "selectRandomly": 5,
80
+ "targetBindingCount": 10
81
+ }
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "$schema": "../schemas/keystone.low.schema.json",
3
+ "metadata": {
4
+ "name": "Session/Saga Identity Profile",
5
+ "securityLevel": "low"
6
+ },
7
+ "pools": {
8
+ "sync": {
9
+ "id": "sync",
10
+ "allowedVerbs": [
11
+ "sync"
12
+ ],
13
+ "algo": "SHA-256",
14
+ "rounds": 1,
15
+ "behavior": {
16
+ "size": 50,
17
+ "replenish": "top-up",
18
+ "selectSequentially": 2,
19
+ "selectRandomly": 2,
20
+ "targetBindingCount": 6
21
+ }
22
+ },
23
+ "manage": {
24
+ "id": "manage",
25
+ "allowedVerbs": [
26
+ "manage"
27
+ ],
28
+ "algo": "SHA-256",
29
+ "rounds": 2,
30
+ "behavior": {
31
+ "size": 50,
32
+ "replenish": "replace-all",
33
+ "selectSequentially": 2,
34
+ "selectRandomly": 2,
35
+ "targetBindingCount": 6
36
+ }
37
+ },
38
+ "revoke": {
39
+ "id": "revoke",
40
+ "allowedVerbs": [
41
+ "revoke"
42
+ ],
43
+ "algo": "SHA-256",
44
+ "rounds": 5,
45
+ "behavior": {
46
+ "size": 50,
47
+ "replenish": "delete-all",
48
+ "selectSequentially": 3,
49
+ "selectRandomly": 3,
50
+ "targetBindingCount": 0
51
+ }
52
+ },
53
+ "connect": {
54
+ "id": "connect",
55
+ "allowedVerbs": [
56
+ "connect"
57
+ ],
58
+ "algo": "SHA-256",
59
+ "rounds": 1,
60
+ "behavior": {
61
+ "size": 50,
62
+ "replenish": "top-up",
63
+ "selectSequentially": 2,
64
+ "selectRandomly": 2,
65
+ "targetBindingCount": 6
66
+ }
67
+ },
68
+ "sign": {
69
+ "id": "default",
70
+ "allowedVerbs": [
71
+ "sign"
72
+ ],
73
+ "algo": "SHA-256",
74
+ "rounds": 2,
75
+ "behavior": {
76
+ "size": 50,
77
+ "replenish": "top-up",
78
+ "selectSequentially": 2,
79
+ "selectRandomly": 2,
80
+ "targetBindingCount": 6
81
+ }
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "$schema": "../schemas/keystone.low.schema.json",
3
+ "metadata": {
4
+ "name": "Test Identity Profile",
5
+ "securityLevel": "low"
6
+ },
7
+ "pools": {
8
+ "sync": {
9
+ "id": "sync",
10
+ "allowedVerbs": [
11
+ "sync"
12
+ ],
13
+ "algo": "SHA-256",
14
+ "rounds": 1,
15
+ "behavior": {
16
+ "size": 12,
17
+ "replenish": "top-up",
18
+ "selectSequentially": 1,
19
+ "selectRandomly": 1,
20
+ "targetBindingCount": 3
21
+ }
22
+ },
23
+ "manage": {
24
+ "id": "manage",
25
+ "allowedVerbs": [
26
+ "manage"
27
+ ],
28
+ "algo": "SHA-256",
29
+ "rounds": 2,
30
+ "behavior": {
31
+ "size": 12,
32
+ "replenish": "replace-all",
33
+ "selectSequentially": 1,
34
+ "selectRandomly": 2,
35
+ "targetBindingCount": 3
36
+ }
37
+ },
38
+ "revoke": {
39
+ "id": "revoke",
40
+ "allowedVerbs": [
41
+ "revoke"
42
+ ],
43
+ "algo": "SHA-256",
44
+ "rounds": 5,
45
+ "behavior": {
46
+ "size": 12,
47
+ "replenish": "delete-all",
48
+ "selectSequentially": 3,
49
+ "selectRandomly": 3,
50
+ "targetBindingCount": 0
51
+ }
52
+ },
53
+ "connect": {
54
+ "id": "connect",
55
+ "allowedVerbs": [
56
+ "connect"
57
+ ],
58
+ "algo": "SHA-256",
59
+ "rounds": 1,
60
+ "behavior": {
61
+ "size": 12,
62
+ "replenish": "top-up",
63
+ "selectSequentially": 1,
64
+ "selectRandomly": 1,
65
+ "targetBindingCount": 3
66
+ }
67
+ },
68
+ "sign": {
69
+ "id": "default",
70
+ "allowedVerbs": [
71
+ "sign"
72
+ ],
73
+ "algo": "SHA-256",
74
+ "rounds": 2,
75
+ "behavior": {
76
+ "size": 20,
77
+ "replenish": "top-up",
78
+ "selectSequentially": 1,
79
+ "selectRandomly": 1,
80
+ "targetBindingCount": 3
81
+ }
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "HighSecurityConnectPool",
4
+ "type": "object",
5
+ "properties": {
6
+ "id": { "type": "string", "const": "connect" },
7
+ "allowedVerbs": { "type": "array", "items": { "const": "connect" } },
8
+ "algo": { "type": "string", "const": "SHA-512" },
9
+ "rounds": { "type": "integer", "minimum": 4 },
10
+ "behavior": {
11
+ "type": "object",
12
+ "properties": {
13
+ "size": { "type": "integer", "minimum": 2000 },
14
+ "replenish": { "type": "string", "const": "top-up" },
15
+ "selectSequentially": { "type": "integer", "minimum": 10 },
16
+ "selectRandomly": { "type": "integer", "minimum": 10 },
17
+ "targetBindingCount": { "type": "integer", "minimum": 16 }
18
+ },
19
+ "required": ["size", "replenish", "selectSequentially", "selectRandomly", "targetBindingCount"]
20
+ }
21
+ },
22
+ "required": ["id", "allowedVerbs", "algo", "rounds", "behavior"]
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "LowSecurityConnectPool",
4
+ "type": "object",
5
+ "properties": {
6
+ "id": { "type": "string", "const": "connect" },
7
+ "allowedVerbs": { "type": "array", "items": { "const": "connect" } },
8
+ "algo": { "type": "string", "const": "SHA-256" },
9
+ "rounds": { "type": "integer", "minimum": 1 },
10
+ "behavior": {
11
+ "type": "object",
12
+ "properties": {
13
+ "size": { "type": "integer", "minimum": 12 },
14
+ "replenish": { "type": "string", "const": "top-up" },
15
+ "selectSequentially": { "type": "integer", "minimum": 1 },
16
+ "selectRandomly": { "type": "integer", "minimum": 1 },
17
+ "targetBindingCount": { "type": "integer", "minimum": 3 }
18
+ },
19
+ "required": ["size", "replenish", "selectSequentially", "selectRandomly", "targetBindingCount"]
20
+ }
21
+ },
22
+ "required": ["id", "allowedVerbs", "algo", "rounds", "behavior"]
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "MediumSecurityConnectPool",
4
+ "type": "object",
5
+ "properties": {
6
+ "id": { "type": "string", "const": "connect" },
7
+ "allowedVerbs": { "type": "array", "items": { "const": "connect" } },
8
+ "algo": { "type": "string", "enum": ["SHA-256", "SHA-512"] },
9
+ "rounds": { "type": "integer", "minimum": 2 },
10
+ "behavior": {
11
+ "type": "object",
12
+ "properties": {
13
+ "size": { "type": "integer", "minimum": 500 },
14
+ "replenish": { "type": "string", "const": "top-up" },
15
+ "selectSequentially": { "type": "integer", "minimum": 5 },
16
+ "selectRandomly": { "type": "integer", "minimum": 5 },
17
+ "targetBindingCount": { "type": "integer", "minimum": 10 }
18
+ },
19
+ "required": ["size", "replenish", "selectSequentially", "selectRandomly", "targetBindingCount"]
20
+ }
21
+ },
22
+ "required": ["id", "allowedVerbs", "algo", "rounds", "behavior"]
23
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "HighSecurityKeystoneProfile",
4
+ "type": "object",
5
+ "properties": {
6
+ "metadata": {
7
+ "type": "object",
8
+ "properties": {
9
+ "name": { "type": "string" },
10
+ "securityLevel": { "type": "string", "const": "high" }
11
+ }
12
+ },
13
+ "pools": {
14
+ "type": "object",
15
+ "properties": {
16
+ "sync": { "$ref": "./sync-pool.high.schema.json" },
17
+ "manage": { "$ref": "./manage-pool.high.schema.json" },
18
+ "revoke": { "$ref": "./revoke-pool.high.schema.json" },
19
+ "connect": { "$ref": "./connect-pool.high.schema.json" },
20
+ "sign": { "$ref": "./sign-pool.high.schema.json" }
21
+ },
22
+ "required": ["sync", "manage", "revoke", "connect", "sign"]
23
+ }
24
+ },
25
+ "required": ["pools"]
26
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "LowSecurityKeystoneProfile",
4
+ "type": "object",
5
+ "properties": {
6
+ "metadata": {
7
+ "type": "object",
8
+ "properties": {
9
+ "name": { "type": "string" },
10
+ "securityLevel": { "type": "string", "const": "low" }
11
+ }
12
+ },
13
+ "pools": {
14
+ "type": "object",
15
+ "properties": {
16
+ "sync": { "$ref": "./sync-pool.low.schema.json" },
17
+ "manage": { "$ref": "./manage-pool.low.schema.json" },
18
+ "revoke": { "$ref": "./revoke-pool.low.schema.json" },
19
+ "connect": { "$ref": "./connect-pool.low.schema.json" },
20
+ "sign": { "$ref": "./sign-pool.low.schema.json" }
21
+ },
22
+ "required": ["sync", "manage", "revoke", "connect", "sign"]
23
+ }
24
+ },
25
+ "required": ["pools"]
26
+ }