ribaunt 0.2.4 → 0.2.6

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 (63) hide show
  1. package/README.md +53 -11
  2. package/dist/cjs/index.d.ts +103 -0
  3. package/dist/cjs/index.d.ts.map +1 -1
  4. package/dist/cjs/index.js +466 -44
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/redis.d.ts +16 -0
  7. package/dist/cjs/redis.d.ts.map +1 -1
  8. package/dist/cjs/redis.js +30 -0
  9. package/dist/cjs/redis.js.map +1 -1
  10. package/dist/cjs/risk.d.ts +4 -0
  11. package/dist/cjs/risk.d.ts.map +1 -1
  12. package/dist/cjs/risk.js +4 -0
  13. package/dist/cjs/risk.js.map +1 -1
  14. package/dist/hash-wasm.js +2671 -0
  15. package/dist/index.d.ts +103 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +429 -43
  18. package/dist/index.js.map +1 -1
  19. package/dist/redis.d.ts +16 -0
  20. package/dist/redis.d.ts.map +1 -1
  21. package/dist/redis.js +30 -0
  22. package/dist/redis.js.map +1 -1
  23. package/dist/risk.d.ts +4 -0
  24. package/dist/risk.d.ts.map +1 -1
  25. package/dist/risk.js +4 -0
  26. package/dist/risk.js.map +1 -1
  27. package/dist/solver-worker.d.ts.map +1 -1
  28. package/dist/solver-worker.js +17 -2
  29. package/dist/solver-worker.js.map +1 -1
  30. package/dist/solver.d.ts +23 -1
  31. package/dist/solver.d.ts.map +1 -1
  32. package/dist/solver.js +176 -1
  33. package/dist/solver.js.map +1 -1
  34. package/dist/wasm-solver.d.ts +29 -0
  35. package/dist/wasm-solver.d.ts.map +1 -1
  36. package/dist/wasm-solver.js +39 -5
  37. package/dist/wasm-solver.js.map +1 -1
  38. package/dist/widget-browser.d.ts +1 -1
  39. package/dist/widget-browser.d.ts.map +1 -1
  40. package/dist/widget-browser.js +1 -1
  41. package/dist/widget-browser.js.map +1 -1
  42. package/dist/widget-react.d.ts.map +1 -1
  43. package/dist/widget-react.js +12 -0
  44. package/dist/widget-react.js.map +1 -1
  45. package/dist/worker-client.d.ts +20 -1
  46. package/dist/worker-client.d.ts.map +1 -1
  47. package/dist/worker-client.js +18 -0
  48. package/dist/worker-client.js.map +1 -1
  49. package/package.json +9 -3
  50. package/SECURITY.md +0 -36
  51. package/demo/lib/ribaunt-solver.wasm +0 -0
  52. package/demo/lib/solver-worker.js +0 -174
  53. package/demo/lib/solver-worker.js.map +0 -1
  54. package/demo/lib/solver.js +0 -135
  55. package/demo/lib/solver.js.map +0 -1
  56. package/demo/lib/wasm-solver.js +0 -296
  57. package/demo/lib/wasm-solver.js.map +0 -1
  58. package/demo/lib/widget-browser.js +0 -9
  59. package/demo/lib/widget-browser.js.map +0 -1
  60. package/demo/lib/widget.js +0 -942
  61. package/demo/lib/widget.js.map +0 -1
  62. package/demo/lib/worker-client.js +0 -128
  63. package/demo/lib/worker-client.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -2,6 +2,20 @@ import { DEFAULT_RISK_THRESHOLDS } from './risk.js';
2
2
  import type { AssessOptions, RiskAssessment } from './risk.js';
3
3
  export type { AssessOptions, AssessWorkloadOptions, RiskAssessment, RiskScorer, RiskSignals, RiskThresholds } from './risk.js';
4
4
  export { DEFAULT_RISK_THRESHOLDS };
5
+ export type PowAlgorithm = 'sha256' | 'argon2id';
6
+ export type ArgonProfile = 'mobile' | 'standard';
7
+ export declare const HARD_MAX: {
8
+ readonly m: number;
9
+ readonly t: 3;
10
+ readonly p: 1;
11
+ readonly hashLen: 32;
12
+ };
13
+ export declare const ARGON_PROFILES: Record<ArgonProfile, {
14
+ m: number;
15
+ t: number;
16
+ p: number;
17
+ hashLen: number;
18
+ }>;
5
19
  export type ChallengeToken = string;
6
20
  export interface ChallengeSolution {
7
21
  nonce: string;
@@ -21,11 +35,20 @@ export interface AdaptiveWorkloadOptions extends WorkloadBounds {
21
35
  riskScore?: number;
22
36
  targetDurationMs?: number;
23
37
  calibration?: ClientCalibration;
38
+ algorithm?: PowAlgorithm;
39
+ argonProfile?: ArgonProfile;
24
40
  }
25
41
  export interface Workload {
26
42
  difficulty: number;
27
43
  amount: number;
28
44
  estimatedAttempts: number;
45
+ algorithm: PowAlgorithm;
46
+ argon?: {
47
+ m: number;
48
+ t: number;
49
+ p: number;
50
+ hashLen: number;
51
+ };
29
52
  }
30
53
  export interface ChallengeOptions {
31
54
  difficulty?: number | 'auto';
@@ -42,6 +65,8 @@ export interface ChallengeOptions {
42
65
  maxAmount?: number;
43
66
  rateLimiter?: RateLimiter;
44
67
  onEvent?: (event: RibauntEvent) => void;
68
+ algorithm?: PowAlgorithm;
69
+ argonProfile?: ArgonProfile;
45
70
  }
46
71
  export interface ReplayStore {
47
72
  consume(jti: string, expiresAt: number): Promise<boolean>;
@@ -75,6 +100,7 @@ export type RibauntEvent = {
75
100
  type: 'challenge-issued';
76
101
  difficulty: number;
77
102
  amount: number;
103
+ algorithm?: PowAlgorithm;
78
104
  } | {
79
105
  type: 'verify-success';
80
106
  } | {
@@ -101,6 +127,8 @@ export declare class LocalReplayStore implements ReplayStore {
101
127
  }
102
128
  /**
103
129
  * Selects bounded proof-of-work using a server-owned risk floor and untrusted timing calibration.
130
+ * For `algorithm:'argon2id'` difficulty is capped to the argon max (default 2) and the returned
131
+ * workload carries `argon:{m,t,p}` derived from `argonProfile` so the device can comfortably solve it.
104
132
  */
105
133
  export declare function selectWorkload(options?: AdaptiveWorkloadOptions): Workload;
106
134
  /**
@@ -122,11 +150,86 @@ export declare function selectWorkload(options?: AdaptiveWorkloadOptions): Workl
122
150
  * -> if challenge, delegate to existing selectWorkload() with riskScore
123
151
  */
124
152
  export declare function assess(options: AssessOptions): Promise<RiskAssessment>;
153
+ /**
154
+ * Measures SHA-256 hashing speed on Node.js to calibrate adaptive workload selection.
155
+ * Runs a small benchmark to estimate device performance.
156
+ *
157
+ * @param iterations - Number of SHA-256 hashes to run (default: 128)
158
+ * @returns Calibration object with iterations and measured duration
159
+ */
125
160
  export declare function calibrateNode(iterations?: number): ClientCalibration;
161
+ /**
162
+ * Alias for calibrateNode - measures device hashing speed for adaptive workload.
163
+ */
126
164
  export declare const calibrateClient: typeof calibrateNode;
165
+ /**
166
+ * Calibrate Argon2id on Node — measures device speed for the memory-hard algorithm.
167
+ * Uses a smaller iteration default (16) because each hash is ~6ms (mobile) vs microseconds for SHA.
168
+ * The returned shape is identical to `calibrateNode()` so `selectWorkload({calibration, algorithm:'argon2id'})` can consume it.
169
+ * Keep SHA `calibrateNode()` for `algorithm:'sha256'` — mismatched calibration will over/under-estimate.
170
+ */
171
+ export declare function calibrateArgonNode(iterations?: number): Promise<ClientCalibration>;
172
+ /**
173
+ * Alias for calibrateArgonNode - measures Argon2id performance for adaptive workload.
174
+ */
175
+ export declare const calibrateArgonClient: typeof calibrateArgonNode;
176
+ /**
177
+ * Resets Argon2id module cache for testing purposes.
178
+ * Should not be called in production code.
179
+ */
180
+ export declare function __resetArgonForTesting(): void;
181
+ /**
182
+ * Creates cryptographically-signed challenge tokens for proof-of-work verification.
183
+ *
184
+ * Supports two call signatures:
185
+ * 1. `createChallenge(difficulty, amount, ttlSeconds)` - simple numeric params
186
+ * 2. `createChallenge(options)` - full options object with adaptive workload, rate limiting, etc.
187
+ *
188
+ * When `difficulty: 'auto'` is used, workload is selected based on risk score and calibration.
189
+ * Supports both SHA-256 and Argon2id algorithms (via `algorithm` option).
190
+ *
191
+ * @param difficultyOrOptions - Difficulty level (1-64) or options object
192
+ * @param amount - Number of challenges to create (default: 4)
193
+ * @param ttlSeconds - Token expiration in seconds (default: 30)
194
+ * @returns Array of signed challenge tokens
195
+ */
127
196
  export declare function createChallenge(difficulty?: number, amount?: number, ttlSeconds?: number): Promise<ChallengeToken[]>;
128
197
  export declare function createChallenge(options: ChallengeOptions): Promise<ChallengeToken[]>;
198
+ /**
199
+ * Solves SHA-256 proof-of-work challenge(s) synchronously on Node.js.
200
+ * Does not support Argon2id challenges (use solveChallengeAsync for those).
201
+ *
202
+ * @param token - Single challenge token or array of tokens
203
+ * @param options - Optional constraints (maxIterations, maxDurationMs)
204
+ * @returns Solution(s) with nonce and hash, or undefined if unsolvable
205
+ */
129
206
  export declare function solveChallenge(token: ChallengeToken, options?: SolveChallengeOptions): ChallengeSolution | undefined;
130
207
  export declare function solveChallenge(token: ChallengeToken[], options?: SolveChallengeOptions): ChallengeSolution[] | undefined;
208
+ /**
209
+ * Solves proof-of-work challenge(s) asynchronously on Node.js.
210
+ * Supports both SHA-256 and Argon2id challenges.
211
+ *
212
+ * @param token - Single challenge token or array of tokens
213
+ * @param options - Optional constraints (maxIterations, maxDurationMs)
214
+ * @returns Promise resolving to solution(s) with nonce and hash, or undefined if unsolvable
215
+ */
216
+ export declare function solveChallengeAsync(token: ChallengeToken, options?: SolveChallengeOptions): Promise<ChallengeSolution | undefined>;
217
+ export declare function solveChallengeAsync(token: ChallengeToken[], options?: SolveChallengeOptions): Promise<ChallengeSolution[] | undefined>;
218
+ /**
219
+ * Verifies that a proof-of-work solution correctly solves the challenge token(s).
220
+ *
221
+ * Validation steps:
222
+ * 1. JWT signature and expiration check
223
+ * 2. Hash verification (recomputed hash matches difficulty)
224
+ * 3. Context binding check (if context was provided)
225
+ * 4. Replay prevention (via ReplayStore if configured)
226
+ *
227
+ * Supports batch verification with atomic replay detection.
228
+ *
229
+ * @param token - Challenge token(s) to verify
230
+ * @param nonce - Solution nonce(s) or ChallengeSolution object(s)
231
+ * @param options - Verification options (replay prevention, context, rate limiting)
232
+ * @returns Result indicating validity or specific failure reason
233
+ */
131
234
  export declare function verifySolution(token: ChallengeToken | ChallengeToken[], nonce: number | string | Array<number | string> | ChallengeSolution | ChallengeSolution[], options?: VerifySolutionOptions): Promise<VerifySolutionResult>;
132
235
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}