@structured-id/ui-core 1.2.0 → 1.3.0

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 (101) hide show
  1. package/README.md +9 -5
  2. package/dist/browser-vp/index.d.cts +0 -11
  3. package/dist/browser-vp/index.d.ts +0 -11
  4. package/dist/index.cjs +13721 -9514
  5. package/dist/index.d.cts +4362 -2375
  6. package/dist/index.d.ts +4362 -2375
  7. package/dist/index.js +13937 -9730
  8. package/package.json +3 -3
  9. package/src/browser-vp/crypto.ts +0 -1
  10. package/src/browser-vp/index.ts +0 -2
  11. package/src/browser-vp/prf.ts +0 -2
  12. package/src/browser-vp/storage.ts +0 -2
  13. package/src/browser-vp/types.ts +0 -2
  14. package/src/browser-vp/vp.ts +0 -2
  15. package/src/composables/index.ts +6 -1
  16. package/src/composables/useAccountTransport.test.ts +121 -0
  17. package/src/composables/useAccountTransport.ts +69 -0
  18. package/src/composables/useBffAuth.ts +44 -34
  19. package/src/generated/google/api/httpbody.ts +159 -0
  20. package/src/generated/google/protobuf/any.ts +326 -0
  21. package/src/generated/google/rpc/error_details.ts +1386 -0
  22. package/src/generated/google/rpc/status.ts +127 -0
  23. package/src/generated/sid/v1/account/account.ts +1 -1
  24. package/src/generated/sid/v1/admin/admin.client.ts +15 -12
  25. package/src/generated/sid/v1/admin/admin.ts +24 -89
  26. package/src/generated/sid/v1/admin/enrollment.client.ts +24 -12
  27. package/src/generated/sid/v1/admin/enrollment.ts +65 -3
  28. package/src/generated/sid/v1/admin/events.client.ts +8 -8
  29. package/src/generated/sid/v1/admin/flow.ts +1 -1
  30. package/src/generated/sid/v1/admin/keys.ts +1 -1
  31. package/src/generated/sid/v1/admin/notifications.client.ts +12 -6
  32. package/src/generated/sid/v1/admin/notifications.ts +11 -70
  33. package/src/generated/sid/v1/admin/operations.ts +20 -35
  34. package/src/generated/sid/v1/admin/organizations.client.ts +2 -2
  35. package/src/generated/sid/v1/admin/organizations.ts +15 -32
  36. package/src/generated/sid/v1/admin/provisioning.client.ts +232 -0
  37. package/src/generated/sid/v1/admin/provisioning.ts +1383 -0
  38. package/src/generated/sid/v1/admin/scopes.ts +1 -1
  39. package/src/generated/sid/v1/admin/security.client.ts +22 -24
  40. package/src/generated/sid/v1/admin/security.ts +13 -22
  41. package/src/generated/sid/v1/admin/settings.client.ts +29 -18
  42. package/src/generated/sid/v1/admin/settings.ts +2 -82
  43. package/src/generated/sid/v1/attestation/attestation.client.ts +6 -6
  44. package/src/generated/sid/v1/attestation/attestation.ts +8 -8
  45. package/src/generated/sid/v1/authn/auth.client.ts +101 -58
  46. package/src/generated/sid/v1/authn/auth.ts +842 -414
  47. package/src/generated/sid/v1/authn/flows.ts +0 -12
  48. package/src/generated/sid/v1/authn/issuer.client.ts +489 -0
  49. package/src/generated/sid/v1/authn/issuer.ts +1600 -0
  50. package/src/generated/sid/v1/authn/password_history.client.ts +57 -0
  51. package/src/generated/sid/v1/authn/password_history.ts +578 -0
  52. package/src/generated/sid/v1/authn/system_integration.client.ts +73 -0
  53. package/src/generated/sid/v1/authn/system_integration.ts +218 -0
  54. package/src/generated/sid/v1/authz/authz.ts +1498 -317
  55. package/src/generated/sid/v1/authz/forward_auth.client.ts +97 -0
  56. package/src/generated/sid/v1/authz/forward_auth.ts +79 -0
  57. package/src/generated/sid/v1/authz/governance.client.ts +2 -2
  58. package/src/generated/sid/v1/authz/governance.ts +61 -4
  59. package/src/generated/sid/v1/common/errors.ts +532 -6
  60. package/src/generated/sid/v1/events/event_stream.client.ts +2 -2
  61. package/src/generated/sid/v1/events/event_stream.ts +2 -1
  62. package/src/generated/sid/v1/identity/identity.ts +98 -58
  63. package/src/generated/sid/v1/ids/ids.ts +395 -0
  64. package/src/generated/sid/v1/machine/machine_user.ts +0 -36
  65. package/src/generated/sid/v1/machine/pat.client.ts +2 -19
  66. package/src/generated/sid/v1/machine/pat.ts +1 -186
  67. package/src/generated/sid/v1/projects/projects.client.ts +137 -19
  68. package/src/generated/sid/v1/projects/projects.ts +2105 -405
  69. package/src/generated/sid/v1/scim/scim.client.ts +248 -2
  70. package/src/generated/sid/v1/scim/scim.ts +153 -14
  71. package/src/generated/sid/v1/test/test.ts +1 -1
  72. package/src/i18n/index.ts +0 -11
  73. package/src/index.ts +36 -2
  74. package/src/package-exports.test.ts +18 -0
  75. package/src/profile/components/SidLoginForm.vue +5 -2
  76. package/src/profile/components/SidRegistrationForm.test.ts +58 -1
  77. package/src/profile/components/SidRegistrationForm.vue +110 -12
  78. package/src/profile/components/index.ts +4 -0
  79. package/src/profile/composables/index.ts +2 -1
  80. package/src/profile/composables/useAccountApi.ts +20 -7
  81. package/src/profile/composables/useAuth.test.ts +453 -0
  82. package/src/profile/composables/useAuth.ts +414 -0
  83. package/src/profile/composables/useAuthApi.opaque.test.ts +18 -0
  84. package/src/profile/composables/useAuthApi.ts +188 -20
  85. package/src/profile/composables/useEnrollmentApi.test.ts +33 -0
  86. package/src/profile/composables/useEnrollmentApi.ts +26 -0
  87. package/src/profile/composables/useIdentityApi.ts +17 -7
  88. package/src/profile/composables/useLoginSuccess.test.ts +97 -3
  89. package/src/profile/composables/useLoginSuccess.ts +80 -22
  90. package/src/profile/composables/useSecurityLevel.test.ts +10 -3
  91. package/src/profile/composables/useSecurityLevel.ts +12 -3
  92. package/src/quasar/SidPrincipalInput.vue +4 -7
  93. package/src/utils/normalizePrincipal.test.ts +19 -5
  94. package/src/utils/normalizePrincipal.ts +7 -9
  95. package/src/utils/rpcRefusal.test.ts +151 -0
  96. package/src/utils/rpcRefusal.ts +252 -0
  97. package/src/utils/validators.test.ts +9 -0
  98. package/src/utils/validators.ts +14 -2
  99. package/src/composables/useAuth.ts +0 -40
  100. package/src/profile/composables/useOpaqueAuth.test.ts +0 -290
  101. package/src/profile/composables/useOpaqueAuth.ts +0 -191
@@ -12,6 +12,9 @@ import type { PartialMessage } from "@protobuf-ts/runtime";
12
12
  import { reflectionMergePartial } from "@protobuf-ts/runtime";
13
13
  import { MessageType } from "@protobuf-ts/runtime";
14
14
  import { Timestamp } from "../../../google/protobuf/timestamp";
15
+ import { PasswordRegistrationProof } from "./password_history";
16
+ import { PasswordOperationId } from "../ids/ids";
17
+ import { PasswordHistoryContext } from "./password_history";
15
18
  // ══════════════════════════════════════════════════════════════════════════
16
19
  // OPAQUE registration flow (RFC 9807, 2-step).
17
20
  //
@@ -27,7 +30,7 @@ export interface OpaqueRegistrationStartRequest {
27
30
  /**
28
31
  * User-provided login identifier: email address, phone in E.164 format (+380...),
29
32
  * or username. Server resolves principal type from the value and looks up or creates
30
- * the profile. CE/EE: resolves to Profile. SaaS: may trigger Person creation.
33
+ * the profile.
31
34
  *
32
35
  * @generated from protobuf field: string principal = 1
33
36
  */
@@ -40,6 +43,16 @@ export interface OpaqueRegistrationStartRequest {
40
43
  * @generated from protobuf field: bytes registration_request = 2
41
44
  */
42
45
  registrationRequest: Uint8Array;
46
+ /**
47
+ * Instance claim token (`sidclaim_...`) the operator read from the service log.
48
+ * Required while the installation has no administrator: it is then the only
49
+ * registration accepted, and the new profile becomes the first administrator
50
+ * (the token is consumed with the registration). Ignored once the installation
51
+ * is claimed. Bearer secret: never logged or echoed.
52
+ *
53
+ * @generated from protobuf field: optional string claim_token = 3
54
+ */
55
+ claimToken?: string;
43
56
  }
44
57
  /**
45
58
  * @generated from protobuf message sid.v1.authn.OpaqueRegistrationStartResponse
@@ -124,8 +137,7 @@ export interface OpaqueLoginStartRequest {
124
137
  /**
125
138
  * User-provided login identifier. Server looks up the OPAQUE credential
126
139
  * associated with this principal. If not found, server returns a fake
127
- * response (timing-safe, anti-enumeration). CE/EE: resolves to Profile.
128
- * SaaS: may resolve to Person (profile picker shown after auth).
140
+ * response (timing-safe, anti-enumeration). Resolves to a Profile.
129
141
  *
130
142
  * @generated from protobuf field: string principal = 1
131
143
  */
@@ -214,15 +226,22 @@ export interface OpaqueLoginFinishResponse {
214
226
  expiresIn: bigint;
215
227
  }
216
228
  // ══════════════════════════════════════════════════════════════════════════
217
- // OPAQUE-ZKPP registration flow (2-step with zero-knowledge password policy proof).
229
+ // OPAQUE-ZKPP password installation: registration, change and reset share one
230
+ // operation lifecycle (see password_history.proto):
218
231
  //
219
- // Extends OPAQUE registration with a Halo2 ZK proof that the password meets
220
- // the server's policy (min length, character classes) WITHOUT revealing the password.
221
- // Uses Pallas curve (from Pasta family) for both OPAQUE and ZK circuits.
232
+ // prepare registration start / change challenge / reset verification:
233
+ // authorizes the operation and returns its PasswordHistoryContext
234
+ // evaluate PasswordHistoryEvaluatorService.EvaluatePasswordHistory
235
+ // OPAQUE the OPAQUE registration request/response of the operation
236
+ // prove local, on the client: policy and history over the same password
237
+ // finish the final registration record with its PasswordRegistrationProof;
238
+ // the server verifies, checks history and commits the credential,
239
+ // its evidence, the accepted history entry and the audit in one step
222
240
  //
223
- // Graceful degradation: if client lacks WASM capability, zkpp_proof is empty.
224
- // Server sets zkpp_verified=false and starts a 24h deferred verification window
225
- // (see SubmitDeferredZkProof RPC).
241
+ // Registration carries its OPAQUE request in the start step, so it takes three
242
+ // exchanges; change and reset take four. If the client cannot prove, the
243
+ // finish carries no proof and the credential installs policy-unverified; it
244
+ // becomes verified only through a later installation that carries its own proof.
226
245
  //
227
246
  // Reference: Prudnikov, D. (2026). "Zero-Knowledge Proof System for Password Policy
228
247
  // Verification in Asymmetric Password-Authenticated Key Exchange."
@@ -240,37 +259,18 @@ export interface OpaqueZkppRegistrationStartRequest {
240
259
  */
241
260
  principal: string;
242
261
  /**
243
- * OPAQUE RegistrationRequest on Pallas curve. Client-generated by WASM module.
262
+ * OPAQUE RegistrationRequest on Pallas curve, generated by the client.
244
263
  * Same semantics as basic OPAQUE but uses Pallas-based cipher suite.
245
264
  *
246
265
  * @generated from protobuf field: bytes registration_request = 2
247
266
  */
248
267
  registrationRequest: Uint8Array;
249
268
  /**
250
- * Halo2 zero-knowledge proof that the password satisfies the server's policy.
251
- * Client-generated by WASM module. Proves: min_length, character class counts,
252
- * and password history (not reusing recent passwords) — all without revealing
253
- * the password itself. Empty if WASM not available (graceful degradation).
254
- *
255
- * @generated from protobuf field: bytes zkpp_proof = 3
256
- */
257
- zkppProof: Uint8Array;
258
- /**
259
- * 5 public instance values for the ZK proof verifier (32 bytes each, Pallas scalar field).
260
- * Encoding: [min_length, char_classes_packed, history_commitment, new_commitment, policy_version].
261
- * Client-generated alongside zkpp_proof. Empty if no proof.
269
+ * Instance claim token; same semantics as OpaqueRegistrationStartRequest.claim_token.
262
270
  *
263
- * @generated from protobuf field: repeated bytes instances = 4
271
+ * @generated from protobuf field: optional string claim_token = 6
264
272
  */
265
- instances: Uint8Array[];
266
- /**
267
- * Password policy version the proof was generated against. Server compares with
268
- * its current version — if mismatch, returns error (client must re-fetch policy
269
- * via GetZkppPolicy and regenerate proof). Version negotiation, not derivable.
270
- *
271
- * @generated from protobuf field: uint32 policy_version = 5
272
- */
273
- policyVersion: number;
273
+ claimToken?: string;
274
274
  }
275
275
  /**
276
276
  * @generated from protobuf message sid.v1.authn.OpaqueZkppRegistrationStartResponse
@@ -283,24 +283,23 @@ export interface OpaqueZkppRegistrationStartResponse {
283
283
  */
284
284
  registrationResponse: Uint8Array;
285
285
  /**
286
- * Whether the ZK proof was successfully verified. If false, server starts
287
- * 24h deferred verification window. Client echoes this in Finish request
288
- * so server knows whether to set credential.zkpp_verified = true/false.
286
+ * The history context of this registration: its operation ID, the new
287
+ * owner's history domain and the comparison domains to evaluate.
289
288
  *
290
- * @generated from protobuf field: bool zkpp_verified = 2
289
+ * @generated from protobuf field: sid.v1.authn.PasswordHistoryContext history = 3
291
290
  */
292
- zkppVerified: boolean;
291
+ history?: PasswordHistoryContext;
293
292
  }
294
293
  /**
295
294
  * @generated from protobuf message sid.v1.authn.OpaqueZkppRegistrationFinishRequest
296
295
  */
297
296
  export interface OpaqueZkppRegistrationFinishRequest {
298
297
  /**
299
- * Same principal as in Start.
298
+ * The registration operation (from OpaqueZkppRegistrationStartResponse.history).
300
299
  *
301
- * @generated from protobuf field: string principal = 1
300
+ * @generated from protobuf field: sid.v1.ids.PasswordOperationId operation_id = 6
302
301
  */
303
- principal: string;
302
+ operationId?: PasswordOperationId;
304
303
  /**
305
304
  * OPAQUE RegistrationRecord on Pallas curve (same role as basic OPAQUE record).
306
305
  *
@@ -308,27 +307,11 @@ export interface OpaqueZkppRegistrationFinishRequest {
308
307
  */
309
308
  registrationRecord: Uint8Array;
310
309
  /**
311
- * Poseidon hash H(password, salt) — stored server-side for password history.
312
- * Used during future password changes to prove new password differs from old.
313
- * Client-computed by WASM module. 32 bytes.
310
+ * The registration proof; absent when the client cannot prove.
314
311
  *
315
- * @generated from protobuf field: bytes history_commitment = 3
312
+ * @generated from protobuf field: sid.v1.authn.PasswordRegistrationProof proof = 7
316
313
  */
317
- historyCommitment: Uint8Array;
318
- /**
319
- * Random 32-byte salt used in history_commitment. Client-generated.
320
- * Stored alongside commitment for future verification.
321
- *
322
- * @generated from protobuf field: bytes commitment_salt = 4
323
- */
324
- commitmentSalt: Uint8Array;
325
- /**
326
- * Echoed from OpaqueZkppRegistrationStartResponse.zkpp_verified.
327
- * Server validates consistency with its own record.
328
- *
329
- * @generated from protobuf field: bool zkpp_verified = 5
330
- */
331
- zkppVerified: boolean;
314
+ proof?: PasswordRegistrationProof;
332
315
  }
333
316
  /**
334
317
  * @generated from protobuf message sid.v1.authn.OpaqueZkppRegistrationFinishResponse
@@ -370,52 +353,30 @@ export interface PasswordChangeChallengeRequest {
370
353
  */
371
354
  export interface PasswordChangeChallengeResponse {
372
355
  /**
373
- * Server-stored Poseidon hash H(old_password, salt). Client uses this to
374
- * generate ZK proof that the new password differs from the old one.
375
- *
376
- * @generated from protobuf field: bytes history_commitment = 1
377
- */
378
- historyCommitment: Uint8Array;
379
- /**
380
- * Server-stored salt used in history_commitment computation.
381
- *
382
- * @generated from protobuf field: bytes commitment_salt = 2
383
- */
384
- commitmentSalt: Uint8Array;
385
- /**
386
- * Current password policy version. Client must generate ZKPP proof
387
- * against this version. If policy updated since last login, client
388
- * re-fetches via GetZkppPolicy and regenerates proof.
356
+ * The history context of this change: its operation ID, the owner's history
357
+ * domain, the comparison domains the new password is checked in and the
358
+ * policy version the proof is made for.
389
359
  *
390
- * @generated from protobuf field: uint32 policy_version = 3
360
+ * @generated from protobuf field: sid.v1.authn.PasswordHistoryContext history = 4
391
361
  */
392
- policyVersion: number;
362
+ history?: PasswordHistoryContext;
393
363
  }
394
364
  /**
395
365
  * @generated from protobuf message sid.v1.authn.PasswordChangeExecuteRequest
396
366
  */
397
367
  export interface PasswordChangeExecuteRequest {
398
368
  /**
399
- * Target OPAQUE credential (same as in ChallengeRequest).
400
- *
401
- * @generated from protobuf field: string credential_id = 1
402
- */
403
- credentialId: string;
404
- /**
405
- * Halo2 ZK proof that the new password satisfies the policy AND differs
406
- * from the old password (verified against history_commitment).
407
- * Client-generated by WASM module. Optional if ZKPP not available (graceful degradation).
369
+ * The change operation (from PasswordChangeChallengeResponse.history).
408
370
  *
409
- * @generated from protobuf field: bytes zkpp_proof = 3
371
+ * @generated from protobuf field: sid.v1.ids.PasswordOperationId operation_id = 9
410
372
  */
411
- zkppProof: Uint8Array;
373
+ operationId?: PasswordOperationId;
412
374
  /**
413
- * 5 public instance values for the ZK proof verifier (32 bytes each, Pallas base field).
414
- * Encoding: [min_length, char_classes_packed, history_commitment, new_commitment, policy_version].
375
+ * Target OPAQUE credential (same as in ChallengeRequest).
415
376
  *
416
- * @generated from protobuf field: repeated bytes instances = 4
377
+ * @generated from protobuf field: string credential_id = 1
417
378
  */
418
- instances: Uint8Array[];
379
+ credentialId: string;
419
380
  /**
420
381
  * New OPAQUE RegistrationRequest (Pallas curve). Client-side blinded password hash
421
382
  * for the new password. Generated by OpaqueClient.registrationStart(newPassword).
@@ -423,19 +384,6 @@ export interface PasswordChangeExecuteRequest {
423
384
  * @generated from protobuf field: bytes registration_request = 5
424
385
  */
425
386
  registrationRequest: Uint8Array;
426
- /**
427
- * Poseidon H(new_password, new_salt) — stored server-side for future password change
428
- * history checks (prevents reuse of recent passwords).
429
- *
430
- * @generated from protobuf field: bytes new_history_commitment = 6
431
- */
432
- newHistoryCommitment: Uint8Array;
433
- /**
434
- * Random 32-byte salt for new_history_commitment. Client-generated.
435
- *
436
- * @generated from protobuf field: bytes new_commitment_salt = 7
437
- */
438
- newCommitmentSalt: Uint8Array;
439
387
  }
440
388
  /**
441
389
  * @generated from protobuf message sid.v1.authn.PasswordChangeExecuteResponse
@@ -453,6 +401,12 @@ export interface PasswordChangeExecuteResponse {
453
401
  * @generated from protobuf message sid.v1.authn.PasswordChangeFinishRequest
454
402
  */
455
403
  export interface PasswordChangeFinishRequest {
404
+ /**
405
+ * The change operation (from PasswordChangeChallengeResponse.history).
406
+ *
407
+ * @generated from protobuf field: sid.v1.ids.PasswordOperationId operation_id = 4
408
+ */
409
+ operationId?: PasswordOperationId;
456
410
  /**
457
411
  * Target OPAQUE credential (same as in Challenge/Execute).
458
412
  *
@@ -467,6 +421,13 @@ export interface PasswordChangeFinishRequest {
467
421
  * @generated from protobuf field: bytes registration_record = 3
468
422
  */
469
423
  registrationRecord: Uint8Array;
424
+ /**
425
+ * The registration proof for the new password; absent when the client
426
+ * cannot prove, in which case the change installs policy-unverified.
427
+ *
428
+ * @generated from protobuf field: sid.v1.authn.PasswordRegistrationProof proof = 5
429
+ */
430
+ proof?: PasswordRegistrationProof;
470
431
  }
471
432
  /**
472
433
  * @generated from protobuf message sid.v1.authn.PasswordChangeFinishResponse
@@ -476,7 +437,6 @@ export interface PasswordChangeFinishResponse {
476
437
  // WebAuthn registration flow (2-step).
477
438
  // Profile is resolved from the Bearer token (session subject) — not client-provided.
478
439
  // Self-service: user registers passkeys on their own profile.
479
- // Admin registration of passkeys for other users = separate admin RPC (future).
480
440
 
481
441
  /**
482
442
  * @generated from protobuf message sid.v1.authn.WebAuthnRegistrationStartRequest
@@ -559,7 +519,7 @@ export interface WebAuthnAuthenticationStartRequest {
559
519
  * User-provided login identifier for principal-first flow. When present,
560
520
  * server returns allowCredentials filtered to this user's passkeys.
561
521
  * When absent, conditional UI mode: browser shows all available credentials.
562
- * CE/EE: resolves to Profile. SaaS: may resolve to Person.
522
+ * Resolves to a Profile.
563
523
  *
564
524
  * @generated from protobuf field: optional string principal = 1
565
525
  */
@@ -650,8 +610,9 @@ export interface WebAuthnAuthenticationFinishResponse {
650
610
  */
651
611
  export interface OAuth2AuthorizeRequest {
652
612
  /**
653
- * OAuth2 client identifier. Registered via admin API (CreateApplication).
654
- * Determines ServiceSector for pairwise sub computation.
613
+ * OAuth2 client identifier, registered by CreateApplication or Dynamic
614
+ * Client Registration. Names the relying party; the issuer it belongs to is
615
+ * fixed by its registration, never chosen by this request.
655
616
  *
656
617
  * @generated from protobuf field: string client_id = 1
657
618
  */
@@ -711,6 +672,60 @@ export interface OAuth2AuthorizeRequest {
711
672
  * @generated from protobuf field: optional string acr_values = 9
712
673
  */
713
674
  acrValues?: string;
675
+ /**
676
+ * Handle of the OIDC issuer whose authorization endpoint received the
677
+ * request: the `<handle>` in `https://<host>/i/<handle>/oauth2/authorize`,
678
+ * taken from that path by the protocol edge (or carried by the sign-in UI
679
+ * from the request it is completing). Required. An unknown handle, and a
680
+ * client registered under another issuer, are refused as an unknown client
681
+ * (never redirected), without falling back to another issuer.
682
+ *
683
+ * @generated from protobuf field: string issuer_handle = 10
684
+ */
685
+ issuerHandle: string;
686
+ /**
687
+ * Resource indicators (RFC 8707 §2): absolute URIs without a fragment
688
+ * naming the registered protected resource the access token is for. At most
689
+ * one distinct value; repeating the same value names the same resource.
690
+ * Empty selects the client's configured default resource. An unknown,
691
+ * inactive or not permitted resource, several distinct values, or none with
692
+ * no default are refused with `invalid_target`. The code is bound to the
693
+ * selected resource.
694
+ *
695
+ * @generated from protobuf field: repeated string resource = 11
696
+ */
697
+ resource: string[];
698
+ /**
699
+ * Space-separated OIDC `prompt` values (OpenID Connect Core §3.1.2.1):
700
+ * `none` (no interaction; refused with `login_required`,
701
+ * `account_selection_required`, `consent_required` or
702
+ * `interaction_required` when one is needed), `login` (fresh
703
+ * authentication), `consent`, `select_account`. `none` with any other
704
+ * value is refused with `invalid_request`; an unknown value too.
705
+ *
706
+ * @generated from protobuf field: optional string prompt = 12
707
+ */
708
+ prompt?: string;
709
+ /**
710
+ * OIDC `max_age` (OpenID Connect Core §3.1.2.1): the longest time in
711
+ * seconds since the user last actively authenticated that the request
712
+ * accepts; older authentication requires a new one. 0 behaves like
713
+ * `prompt=login`.
714
+ *
715
+ * @generated from protobuf field: optional uint32 max_age = 13
716
+ */
717
+ maxAge?: number;
718
+ /**
719
+ * Reference to an authorization request the server stored and continues
720
+ * (form of RFC 9126 §2.2), e.g. a cross-site POST resumed through a
721
+ * top-level GET on the issuer host. Opaque, single-issuer, short-lived;
722
+ * when present, every other parameter except `client_id` and
723
+ * `issuer_handle` comes from the stored request, and a `client_id` that
724
+ * differs from the stored one is refused.
725
+ *
726
+ * @generated from protobuf field: optional string request_uri = 14
727
+ */
728
+ requestUri?: string;
714
729
  }
715
730
  /**
716
731
  * @generated from protobuf message sid.v1.authn.OAuth2AuthorizeResponse
@@ -760,10 +775,13 @@ export interface OAuth2AuthorizeResponse {
760
775
  export interface OAuth2TokenRequest {
761
776
  /**
762
777
  * Grant type. Determines which other fields are required. RFC 6749 §4.
763
- * "authorization_code": requires code, redirect_uri, client_id, code_verifier.
764
- * "refresh_token": requires refresh_token, client_id.
765
- * "client_credentials": requires client_id, client_secret (or client_assertion).
778
+ * "authorization_code": requires code, redirect_uri, code_verifier.
779
+ * "refresh_token": requires refresh_token.
780
+ * "client_credentials": a confidential client acting for itself.
766
781
  * "urn:ietf:params:oauth:grant-type:token-exchange": RFC 8693 token exchange.
782
+ * "urn:ietf:params:oauth:grant-type:device_code": RFC 8628 §3.4 device poll,
783
+ * requires device_code.
784
+ * Every grant names or authenticates the client (RFC 6749 §2.3).
767
785
  *
768
786
  * @generated from protobuf field: string grant_type = 1
769
787
  */
@@ -783,15 +801,18 @@ export interface OAuth2TokenRequest {
783
801
  */
784
802
  redirectUri?: string;
785
803
  /**
786
- * Client identifier. Required for public clients, optional for confidential
787
- * (when using client_secret or client_assertion). RFC 6749 §2.2.
804
+ * Client identifier (RFC 6749 §2.2). Required unless HTTP Basic in the
805
+ * `authorization` metadata names the client; when both are present they
806
+ * must be equal.
788
807
  *
789
808
  * @generated from protobuf field: optional string client_id = 4
790
809
  */
791
810
  clientId?: string;
792
811
  /**
793
- * Client secret for confidential clients. Sent in body (not Basic auth).
794
- * Mutually exclusive with client_assertion. RFC 6749 §2.3.1.
812
+ * Client secret of a confidential client registered for
813
+ * `client_secret_post` (RFC 6749 §2.3.1). A client registered for
814
+ * `client_secret_basic` sends it in the `authorization` metadata instead.
815
+ * At most one authentication method per request (RFC 6749 §2.3).
795
816
  *
796
817
  * @generated from protobuf field: optional string client_secret = 5
797
818
  */
@@ -854,6 +875,51 @@ export interface OAuth2TokenRequest {
854
875
  * @generated from protobuf field: optional string subject_token_type = 13
855
876
  */
856
877
  subjectTokenType?: string;
878
+ /**
879
+ * Handle of the OIDC issuer whose token endpoint received the request,
880
+ * bound from the path `/i/{issuer_handle}/oauth2/token`. The client, and
881
+ * every code or refresh token redeemed, must belong to this issuer; anything
882
+ * issued in another context is refused as unknown before any side effect.
883
+ *
884
+ * @generated from protobuf field: string issuer_handle = 14
885
+ */
886
+ issuerHandle: string;
887
+ /**
888
+ * Device code from StartDeviceAuthorization, for the device_code grant
889
+ * (RFC 8628 §3.4). Opaque; a code started under another issuer or client is
890
+ * refused as `invalid_grant`.
891
+ *
892
+ * @generated from protobuf field: optional string device_code = 15
893
+ */
894
+ deviceCode?: string;
895
+ /**
896
+ * Resource indicators (RFC 8707 §2), at most one distinct value. For
897
+ * client_credentials it selects the resource as at OAuth2Authorize (empty =
898
+ * the client's configured default). For a code, refresh token or device
899
+ * code it may only repeat the resource the grant is bound to: another
900
+ * resource is refused with `invalid_target`, never substituted (RFC 8707
901
+ * §2.2). Refresh keeps the grant's resource.
902
+ *
903
+ * @generated from protobuf field: repeated string resource = 16
904
+ */
905
+ resource: string[];
906
+ /**
907
+ * Token exchange only: logical names of the target service (RFC 8693
908
+ * §2.1), at most one distinct value. The name is a registered resource
909
+ * indicator; with `resource` present both must name the same resource,
910
+ * otherwise the request is refused with `invalid_target`.
911
+ *
912
+ * @generated from protobuf field: repeated string audience = 17
913
+ */
914
+ audience: string[];
915
+ /**
916
+ * Token exchange only: the type of token wanted (RFC 8693 §2.1). Absent or
917
+ * "urn:ietf:params:oauth:token-type:access_token"; any other type is
918
+ * refused with `invalid_request` (§2.2.2).
919
+ *
920
+ * @generated from protobuf field: optional string requested_token_type = 18
921
+ */
922
+ requestedTokenType?: string;
857
923
  }
858
924
  /**
859
925
  * @generated from protobuf message sid.v1.authn.OAuth2TokenResponse
@@ -900,17 +966,72 @@ export interface OAuth2TokenResponse {
900
966
  * @generated from protobuf field: optional string scope = 6
901
967
  */
902
968
  scope?: string;
969
+ /**
970
+ * Token exchange only: the type of the issued token (RFC 8693 §2.2.1,
971
+ * required there), "urn:ietf:params:oauth:token-type:access_token".
972
+ * Absent for every other grant.
973
+ *
974
+ * @generated from protobuf field: optional string issued_token_type = 7
975
+ */
976
+ issuedTokenType?: string;
903
977
  }
904
978
  /**
905
979
  * @generated from protobuf message sid.v1.authn.OAuth2IntrospectRequest
906
980
  */
907
981
  export interface OAuth2IntrospectRequest {
908
982
  /**
909
- * Token to introspect (access_token or refresh_token). RFC 7662 §2.1.
983
+ * Token to introspect. RFC 7662 §2.1.
910
984
  *
911
985
  * @generated from protobuf field: string token = 1
912
986
  */
913
987
  token: string;
988
+ /**
989
+ * Handle of the OIDC issuer whose introspection endpoint received the
990
+ * request, bound from the path `/i/{issuer_handle}/oauth2/introspect`. The
991
+ * caller must be a service identity this issuer serves; a token issued by
992
+ * another issuer is reported inactive (RFC 7662 §2.2).
993
+ *
994
+ * @generated from protobuf field: string issuer_handle = 2
995
+ */
996
+ issuerHandle: string;
997
+ /**
998
+ * Identifier of the calling service (RFC 6749 §2.2): a confidential OAuth
999
+ * client, or a machine user, which authenticates with its own credentials
1000
+ * as at the token endpoint (RFC 7662 §2.1): HTTP Basic in the
1001
+ * `authorization` metadata, or this field with `client_secret`. A token is
1002
+ * reported active only to a caller holding the `oauth.token.introspect`
1003
+ * permission (the built-in token inspector role) on the registered
1004
+ * protected resource the token is for; the caller need not be the token's
1005
+ * client nor in its `aud`. To any other caller it is inactive (RFC 7662
1006
+ * §4). When the permission cannot be decided the call fails UNAVAILABLE
1007
+ * and discloses nothing.
1008
+ *
1009
+ * @generated from protobuf field: optional string client_id = 3
1010
+ */
1011
+ clientId?: string;
1012
+ /**
1013
+ * Client secret of a client registered for `client_secret_post`
1014
+ * (RFC 6749 §2.3.1). At most one authentication method per request.
1015
+ *
1016
+ * @generated from protobuf field: optional string client_secret = 4
1017
+ */
1018
+ clientSecret?: string;
1019
+ /**
1020
+ * Signed JWT assertion of a client registered for `private_key_jwt`
1021
+ * (RFC 7523 §2.2), as at the token endpoint: `iss` and `sub` the client,
1022
+ * `aud` the issuer's token endpoint, a single-use `jti`. Signed with the
1023
+ * client's private key, which never leaves it; carries no secret.
1024
+ *
1025
+ * @generated from protobuf field: optional string client_assertion = 5
1026
+ */
1027
+ clientAssertion?: string;
1028
+ /**
1029
+ * Assertion type URN, "urn:ietf:params:oauth:client-assertion-type:jwt-bearer";
1030
+ * required with `client_assertion` (RFC 7523 §2.2).
1031
+ *
1032
+ * @generated from protobuf field: optional string client_assertion_type = 6
1033
+ */
1034
+ clientAssertionType?: string;
914
1035
  }
915
1036
  /**
916
1037
  * @generated from protobuf message sid.v1.authn.OAuth2IntrospectResponse
@@ -929,7 +1050,7 @@ export interface OAuth2IntrospectResponse {
929
1050
  */
930
1051
  scope?: string;
931
1052
  /**
932
- * Client that the token was issued to.
1053
+ * Client the token was issued to (RFC 7662 §2.2, RFC 9068 §2.2).
933
1054
  *
934
1055
  * @generated from protobuf field: optional string client_id = 3
935
1056
  */
@@ -953,8 +1074,9 @@ export interface OAuth2IntrospectResponse {
953
1074
  */
954
1075
  iat?: bigint;
955
1076
  /**
956
- * Subject identifier (polymorphic: ProfileId UUID for public, pairwise hash
957
- * for pairwise clients). See CLAUDE.md Identity Terminology for sub semantics.
1077
+ * Subject identifier exactly as the token carries it. Polymorphic: the
1078
+ * ProfileId for an installation's own users, the opaque BindingId (UUIDv7,
1079
+ * no prefix) for a pairwise recipient. Never parse it as a ProfileId.
958
1080
  *
959
1081
  * @generated from protobuf field: optional string sub = 7
960
1082
  */
@@ -965,8 +1087,8 @@ export interface OAuth2IntrospectResponse {
965
1087
  */
966
1088
  export interface OAuth2RevokeRequest {
967
1089
  /**
968
- * Token to revoke (access or refresh). RFC 7009 §2.1.
969
- * Server always returns success (even if token unknown — anti-enumeration).
1090
+ * Token to revoke (access or refresh). RFC 7009 §2.1. An unknown or
1091
+ * already invalid token is not an error (RFC 7009 §2.2).
970
1092
  *
971
1093
  * @generated from protobuf field: string token = 1
972
1094
  */
@@ -978,6 +1100,48 @@ export interface OAuth2RevokeRequest {
978
1100
  * @generated from protobuf field: optional string token_type_hint = 2
979
1101
  */
980
1102
  tokenTypeHint?: string;
1103
+ /**
1104
+ * Handle of the OIDC issuer whose revocation endpoint received the request,
1105
+ * bound from the path `/i/{issuer_handle}/oauth2/revoke`. The caller must
1106
+ * be a client of this issuer; a token issued by another issuer is left
1107
+ * untouched and the answer is still success (RFC 7009 §2.2).
1108
+ *
1109
+ * @generated from protobuf field: string issuer_handle = 3
1110
+ */
1111
+ issuerHandle: string;
1112
+ /**
1113
+ * Identifier of the calling client (RFC 6749 §2.2). A confidential client
1114
+ * authenticates by its registered method, as at the token endpoint: HTTP
1115
+ * Basic in the `authorization` metadata, or this field with
1116
+ * `client_secret`; a public client only names itself (RFC 7009 §2.1). A
1117
+ * token issued to another client is refused with `unauthorized_client`.
1118
+ *
1119
+ * @generated from protobuf field: optional string client_id = 4
1120
+ */
1121
+ clientId?: string;
1122
+ /**
1123
+ * Client secret of a client registered for `client_secret_post`
1124
+ * (RFC 6749 §2.3.1). At most one authentication method per request.
1125
+ *
1126
+ * @generated from protobuf field: optional string client_secret = 5
1127
+ */
1128
+ clientSecret?: string;
1129
+ /**
1130
+ * Signed JWT assertion of a client registered for `private_key_jwt`
1131
+ * (RFC 7523 §2.2), as at the token endpoint: `iss` and `sub` the client,
1132
+ * `aud` the issuer's token endpoint, a single-use `jti`. Signed with the
1133
+ * client's private key, which never leaves it; carries no secret.
1134
+ *
1135
+ * @generated from protobuf field: optional string client_assertion = 6
1136
+ */
1137
+ clientAssertion?: string;
1138
+ /**
1139
+ * Assertion type URN, "urn:ietf:params:oauth:client-assertion-type:jwt-bearer";
1140
+ * required with `client_assertion` (RFC 7523 §2.2).
1141
+ *
1142
+ * @generated from protobuf field: optional string client_assertion_type = 7
1143
+ */
1144
+ clientAssertionType?: string;
981
1145
  }
982
1146
  /**
983
1147
  * @generated from protobuf message sid.v1.authn.OAuth2RevokeResponse
@@ -1041,17 +1205,60 @@ export interface ValidateSessionResponse {
1041
1205
  */
1042
1206
  export interface DeviceAuthorizationRequest {
1043
1207
  /**
1044
- * OAuth2 client identifier of the device application. RFC 8628 §3.1.
1208
+ * OAuth2 client identifier of the device application (RFC 8628 §3.1).
1209
+ * Required unless HTTP Basic in the `authorization` metadata names the
1210
+ * client.
1045
1211
  *
1046
- * @generated from protobuf field: string client_id = 1
1212
+ * @generated from protobuf field: optional string client_id = 1
1047
1213
  */
1048
- clientId: string;
1214
+ clientId?: string;
1049
1215
  /**
1050
1216
  * Requested scopes (space-separated). RFC 8628 §3.1.
1051
1217
  *
1052
1218
  * @generated from protobuf field: optional string scope = 2
1053
1219
  */
1054
1220
  scope?: string;
1221
+ /**
1222
+ * Handle of the OIDC issuer whose device authorization endpoint received
1223
+ * the request, bound from the path `/i/{issuer_handle}/oauth2/device`. The
1224
+ * client must belong to this issuer; the device transaction stays bound to
1225
+ * it.
1226
+ *
1227
+ * @generated from protobuf field: string issuer_handle = 3
1228
+ */
1229
+ issuerHandle: string;
1230
+ /**
1231
+ * Client secret of a confidential client registered for
1232
+ * `client_secret_post`, which authenticates here as at the token endpoint
1233
+ * (RFC 8628 §3.1, RFC 6749 §2.3.1).
1234
+ *
1235
+ * @generated from protobuf field: optional string client_secret = 4
1236
+ */
1237
+ clientSecret?: string;
1238
+ /**
1239
+ * Resource indicators (RFC 8707 §2), selected as at OAuth2Authorize. The
1240
+ * device transaction is bound to the selected resource; the device code
1241
+ * grant cannot change it.
1242
+ *
1243
+ * @generated from protobuf field: repeated string resource = 5
1244
+ */
1245
+ resource: string[];
1246
+ /**
1247
+ * Signed JWT assertion of a client registered for `private_key_jwt`
1248
+ * (RFC 7523 §2.2), which authenticates here as at the token endpoint
1249
+ * (RFC 8628 §3.1): `iss` and `sub` the client, `aud` the issuer's token
1250
+ * endpoint, a single-use `jti`. Carries no secret.
1251
+ *
1252
+ * @generated from protobuf field: optional string client_assertion = 6
1253
+ */
1254
+ clientAssertion?: string;
1255
+ /**
1256
+ * Assertion type URN, "urn:ietf:params:oauth:client-assertion-type:jwt-bearer";
1257
+ * required with `client_assertion` (RFC 7523 §2.2).
1258
+ *
1259
+ * @generated from protobuf field: optional string client_assertion_type = 7
1260
+ */
1261
+ clientAssertionType?: string;
1055
1262
  }
1056
1263
  /**
1057
1264
  * @generated from protobuf message sid.v1.authn.DeviceAuthorizationResponse
@@ -1098,23 +1305,6 @@ export interface DeviceAuthorizationResponse {
1098
1305
  */
1099
1306
  interval: number;
1100
1307
  }
1101
- /**
1102
- * @generated from protobuf message sid.v1.authn.PollDeviceTokenRequest
1103
- */
1104
- export interface PollDeviceTokenRequest {
1105
- /**
1106
- * OAuth2 client identifier (same as in DeviceAuthorizationRequest).
1107
- *
1108
- * @generated from protobuf field: string client_id = 1
1109
- */
1110
- clientId: string;
1111
- /**
1112
- * Device code from DeviceAuthorizationResponse. RFC 8628 §3.4.
1113
- *
1114
- * @generated from protobuf field: string device_code = 2
1115
- */
1116
- deviceCode: string;
1117
- }
1118
1308
  /**
1119
1309
  * @generated from protobuf message sid.v1.authn.SubmitDeviceUserCodeRequest
1120
1310
  */
@@ -1258,7 +1448,8 @@ export interface VerifyMagicLinkResponse {
1258
1448
  */
1259
1449
  export interface ResolvePrincipalRequest {
1260
1450
  /**
1261
- * User-provided login identifier (email, phone, or username).
1451
+ * User-provided login identifier (email, phone, or username). Only its
1452
+ * type is read; the server looks up no account.
1262
1453
  *
1263
1454
  * @generated from protobuf field: string principal = 1
1264
1455
  */
@@ -1269,19 +1460,18 @@ export interface ResolvePrincipalRequest {
1269
1460
  */
1270
1461
  export interface ResolvePrincipalResponse {
1271
1462
  /**
1272
- * Auth methods available for this principal: "opaque", "webauthn", "magic_link".
1273
- * For non-existent principals, returns plausible defaults (anti-enumeration).
1463
+ * Sign-in methods this installation offers for an identifier of this type,
1464
+ * the same for every identifier of the type whether or not an account
1465
+ * holds it (WebAuthn Level 3 §14.6.2): "opaque" when password sign-in is
1466
+ * enabled, "webauthn" when passkeys are enabled (the discoverable flow,
1467
+ * started without credential IDs), "magic_link" when magic links are
1468
+ * enabled and the identifier is an email address or phone number. Whether
1469
+ * the account can use a method is decided at that method's step, which
1470
+ * refuses an unknown account exactly as a wrong secret.
1274
1471
  *
1275
1472
  * @generated from protobuf field: repeated string available_methods = 1
1276
1473
  */
1277
1474
  availableMethods: string[];
1278
- /**
1279
- * Server-suggested method based on user's last successful login.
1280
- * UI may highlight this as the default option.
1281
- *
1282
- * @generated from protobuf field: optional string suggested_method = 2
1283
- */
1284
- suggestedMethod?: string;
1285
1475
  }
1286
1476
  // ══════════════════════════════════════════════════════════════════════════
1287
1477
  // Legacy password migration (transparent on-login OPAQUE re-registration).
@@ -1454,13 +1644,13 @@ export interface SubmitDeferredZkProofRequest {
1454
1644
  */
1455
1645
  credentialId: string;
1456
1646
  /**
1457
- * Halo2 ZK proof (same format as OpaqueZkppRegistrationStartRequest.zkpp_proof).
1647
+ * Halo2 password-policy proof over the credential's OPAQUE blinded element.
1458
1648
  *
1459
1649
  * @generated from protobuf field: bytes zkpp_proof = 2
1460
1650
  */
1461
1651
  zkppProof: Uint8Array;
1462
1652
  /**
1463
- * Public instances (same format as OpaqueZkppRegistrationStartRequest.instances).
1653
+ * Public instances of the proof, each a serialized circuit field element.
1464
1654
  *
1465
1655
  * @generated from protobuf field: repeated bytes instances = 3
1466
1656
  */
@@ -1490,7 +1680,7 @@ export interface SubmitDeferredZkProofResponse {
1490
1680
  // Enrollment: server generates secret → client displays QR → user scans with
1491
1681
  // authenticator app → client submits verification code → server confirms.
1492
1682
  // Verification: during MFA challenge, user enters 6-digit code from app.
1493
- // ══════════════════════════════════════════════════════════════��═══════════
1683
+ // ══════════════════════════════════════════════════════════════════════════
1494
1684
 
1495
1685
  /**
1496
1686
  * Empty request — profile resolved from Bearer token.
@@ -1742,6 +1932,27 @@ export interface VerifyOtpResponse {
1742
1932
  * @generated from protobuf field: optional string redirect_to = 2
1743
1933
  */
1744
1934
  redirectTo?: string;
1935
+ /**
1936
+ * Provisional session the verified code opened (set only when verified).
1937
+ * Mailbox possession grants provisional scopes only: it cannot add or
1938
+ * change a credential of an existing account.
1939
+ *
1940
+ * @generated from protobuf field: optional string session_id = 3
1941
+ */
1942
+ sessionId?: string;
1943
+ /**
1944
+ * Access token of that provisional session (same semantics as
1945
+ * OpaqueLoginFinishResponse.access_token, restricted scopes).
1946
+ *
1947
+ * @generated from protobuf field: optional string access_token = 4
1948
+ */
1949
+ accessToken?: string;
1950
+ /**
1951
+ * Access token lifetime in seconds.
1952
+ *
1953
+ * @generated from protobuf field: optional int64 expires_in = 5
1954
+ */
1955
+ expiresIn?: bigint;
1745
1956
  }
1746
1957
  /**
1747
1958
  * @generated from protobuf message sid.v1.authn.ResendOtpRequest
@@ -1975,7 +2186,7 @@ export interface AcceptTermsResponse {
1975
2186
  redirectTo?: string;
1976
2187
  }
1977
2188
  // ══════════════════════════════════════════════════════════════════════════
1978
- // CIBA consent (EE)
2189
+ // CIBA consent
1979
2190
  // ══════════════════════════════════════════════════════════════════════════
1980
2191
 
1981
2192
  /**
@@ -2039,15 +2250,17 @@ export interface VerifyCaptchaResponse {
2039
2250
  */
2040
2251
  redirectTo?: string;
2041
2252
  /**
2042
- * Short-lived HMAC token. Include as `captcha_token` metadata on login retry
2043
- * to bypass RequireCaptcha for 60 seconds.
2253
+ * Single-use pass for the sign-in the challenge was asked of: the same
2254
+ * profile from the same client address, within 60 seconds. Sent back as
2255
+ * `captcha-pass` metadata on the retry; it answers the CAPTCHA requirement
2256
+ * only, never a lockout or a block.
2044
2257
  *
2045
2258
  * @generated from protobuf field: string bypass_token = 3
2046
2259
  */
2047
2260
  bypassToken: string;
2048
2261
  }
2049
2262
  // ══════════════════════════════════════════════════════════════════════════
2050
- // Dynamic prompt (EE custom auth steps)
2263
+ // Dynamic prompt (custom auth steps)
2051
2264
  // ══════════════════════════════════════════════════════════════════════════
2052
2265
 
2053
2266
  /**
@@ -2157,7 +2370,7 @@ export interface SubmitDynamicPromptResponse {
2157
2370
  redirectTo?: string;
2158
2371
  }
2159
2372
  /**
2160
- * Phase 1: Request challenge (WebAuthn, future: Push). Skipped for TOTP/recovery.
2373
+ * Phase 1: Request challenge (WebAuthn). Skipped for TOTP/recovery.
2161
2374
  *
2162
2375
  * @generated from protobuf message sid.v1.authn.RequestStepUpRequest
2163
2376
  */
@@ -2198,7 +2411,7 @@ export interface StepUpChallenge {
2198
2411
  oneofKind: undefined;
2199
2412
  };
2200
2413
  /**
2201
- * Available step-up methods at current session decay level (#666).
2414
+ * Available step-up methods at current session decay level.
2202
2415
  * Populated by RequestStepUp based on enrolled methods + decay filtering.
2203
2416
  * Frontend uses this to show only valid method buttons.
2204
2417
  *
@@ -2329,8 +2542,7 @@ export interface ConfirmAccountDeletionResponse {
2329
2542
  redirectTo?: string;
2330
2543
  }
2331
2544
  // ══════════════════════════════════════════════════════════════════════════
2332
- // Password reset (CE: simple credential replacement)
2333
- // SaaS extends with: recovery shard RPCs, key recovery — in proto-ee.
2545
+ // Password reset (credential replacement)
2334
2546
  // ══════════════════════════════════════════════════════════════════════════
2335
2547
 
2336
2548
  /**
@@ -2388,40 +2600,74 @@ export interface VerifyPasswordResetResponse {
2388
2600
  * @generated from protobuf field: int32 expires_in = 2
2389
2601
  */
2390
2602
  expiresIn: number; // Reset session TTL (seconds)
2603
+ /**
2604
+ * The history context of the replacement password: its operation ID, the
2605
+ * owner's history domain and the comparison domains it is checked in. The
2606
+ * reset needs no old password: the retained history is the owner's, not the client's.
2607
+ *
2608
+ * @generated from protobuf field: sid.v1.authn.PasswordHistoryContext history = 3
2609
+ */
2610
+ history?: PasswordHistoryContext;
2391
2611
  }
2392
2612
  /**
2393
- * @generated from protobuf message sid.v1.authn.CompletePasswordResetRequest
2613
+ * @generated from protobuf message sid.v1.authn.ExecutePasswordResetRequest
2394
2614
  */
2395
- export interface CompletePasswordResetRequest {
2615
+ export interface ExecutePasswordResetRequest {
2396
2616
  /**
2397
- * @generated from protobuf field: string reset_session_id = 1
2617
+ * The reset operation (from VerifyPasswordResetResponse.history). Carries
2618
+ * the verified reset session's authority; no bearer token is involved.
2619
+ *
2620
+ * @generated from protobuf field: sid.v1.ids.PasswordOperationId operation_id = 1
2398
2621
  */
2399
- resetSessionId: string;
2622
+ operationId?: PasswordOperationId;
2400
2623
  /**
2401
- * New OPAQUE credential (client calls OpaqueRegistrationStart separately first,
2402
- * then computes registration_record from the server's RegistrationResponse).
2624
+ * OPAQUE RegistrationRequest (Pallas curve) for the replacement password.
2625
+ * Generated by the client, as in registration.
2403
2626
  *
2404
- * @generated from protobuf field: bytes registration_record = 2
2627
+ * @generated from protobuf field: bytes registration_request = 2
2405
2628
  */
2406
- registrationRecord: Uint8Array;
2629
+ registrationRequest: Uint8Array;
2630
+ }
2631
+ /**
2632
+ * @generated from protobuf message sid.v1.authn.ExecutePasswordResetResponse
2633
+ */
2634
+ export interface ExecutePasswordResetResponse {
2407
2635
  /**
2408
- * ZK policy proof (optional, deferred if no WASM)
2636
+ * Server's OPAQUE RegistrationResponse for the replacement password. The
2637
+ * client computes the final RegistrationRecord from it for CompletePasswordReset.
2409
2638
  *
2410
- * @generated from protobuf field: bytes zkpp_proof = 3
2639
+ * @generated from protobuf field: bytes registration_response = 1
2411
2640
  */
2412
- zkppProof: Uint8Array;
2641
+ registrationResponse: Uint8Array;
2642
+ }
2643
+ /**
2644
+ * @generated from protobuf message sid.v1.authn.CompletePasswordResetRequest
2645
+ */
2646
+ export interface CompletePasswordResetRequest {
2413
2647
  /**
2414
- * @generated from protobuf field: repeated bytes zkpp_instances = 4
2648
+ * @generated from protobuf field: string reset_session_id = 1
2415
2649
  */
2416
- zkppInstances: Uint8Array[];
2650
+ resetSessionId: string;
2417
2651
  /**
2418
- * @generated from protobuf field: bytes history_commitment = 5
2652
+ * The reset operation (from VerifyPasswordResetResponse.history).
2653
+ *
2654
+ * @generated from protobuf field: sid.v1.ids.PasswordOperationId operation_id = 7
2419
2655
  */
2420
- historyCommitment: Uint8Array;
2656
+ operationId?: PasswordOperationId;
2421
2657
  /**
2422
- * @generated from protobuf field: bytes commitment_salt = 6
2658
+ * Final OPAQUE RegistrationRecord of the replacement password, computed from
2659
+ * ExecutePasswordResetResponse.registration_response.
2660
+ *
2661
+ * @generated from protobuf field: bytes registration_record = 2
2423
2662
  */
2424
- commitmentSalt: Uint8Array; // SaaS extends with: wrapped_data_key, encrypted_shard_a/b/c (in proto-ee)
2663
+ registrationRecord: Uint8Array;
2664
+ /**
2665
+ * The registration proof for the replacement password; absent when the
2666
+ * client cannot prove, in which case it installs policy-unverified.
2667
+ *
2668
+ * @generated from protobuf field: sid.v1.authn.PasswordRegistrationProof proof = 8
2669
+ */
2670
+ proof?: PasswordRegistrationProof;
2425
2671
  }
2426
2672
  /**
2427
2673
  * @generated from protobuf message sid.v1.authn.CompletePasswordResetResponse
@@ -2441,7 +2687,7 @@ export interface CompletePasswordResetResponse {
2441
2687
  expiresIn: number;
2442
2688
  }
2443
2689
  /**
2444
- * Field type for EE dynamic prompt fields.
2690
+ * Field type of a dynamic prompt field.
2445
2691
  *
2446
2692
  * @generated from protobuf enum sid.v1.authn.DynamicPromptFieldType
2447
2693
  */
@@ -2488,7 +2734,7 @@ export enum DynamicPromptFieldType {
2488
2734
  INFO = 6
2489
2735
  }
2490
2736
  // ══════════════════════════════════════════════════════════════════════════
2491
- // Step-up authentication (D006: Pattern D — 2-phase)
2737
+ // Step-up authentication
2492
2738
  //
2493
2739
  // 1-phase methods (TOTP, Recovery): call CompleteStepUp directly.
2494
2740
  // 2-phase methods (WebAuthn): RequestStepUp → challenge → CompleteStepUp.
@@ -2528,7 +2774,8 @@ class OpaqueRegistrationStartRequest$Type extends MessageType<OpaqueRegistration
2528
2774
  constructor() {
2529
2775
  super("sid.v1.authn.OpaqueRegistrationStartRequest", [
2530
2776
  { no: 1, name: "principal", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2531
- { no: 2, name: "registration_request", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }
2777
+ { no: 2, name: "registration_request", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
2778
+ { no: 3, name: "claim_token", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
2532
2779
  ]);
2533
2780
  }
2534
2781
  create(value?: PartialMessage<OpaqueRegistrationStartRequest>): OpaqueRegistrationStartRequest {
@@ -2550,6 +2797,9 @@ class OpaqueRegistrationStartRequest$Type extends MessageType<OpaqueRegistration
2550
2797
  case /* bytes registration_request */ 2:
2551
2798
  message.registrationRequest = reader.bytes();
2552
2799
  break;
2800
+ case /* optional string claim_token */ 3:
2801
+ message.claimToken = reader.string();
2802
+ break;
2553
2803
  default:
2554
2804
  let u = options.readUnknownField;
2555
2805
  if (u === "throw")
@@ -2568,6 +2818,9 @@ class OpaqueRegistrationStartRequest$Type extends MessageType<OpaqueRegistration
2568
2818
  /* bytes registration_request = 2; */
2569
2819
  if (message.registrationRequest.length)
2570
2820
  writer.tag(2, WireType.LengthDelimited).bytes(message.registrationRequest);
2821
+ /* optional string claim_token = 3; */
2822
+ if (message.claimToken !== undefined)
2823
+ writer.tag(3, WireType.LengthDelimited).string(message.claimToken);
2571
2824
  let u = options.writeUnknownFields;
2572
2825
  if (u !== false)
2573
2826
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -2993,18 +3246,13 @@ class OpaqueZkppRegistrationStartRequest$Type extends MessageType<OpaqueZkppRegi
2993
3246
  super("sid.v1.authn.OpaqueZkppRegistrationStartRequest", [
2994
3247
  { no: 1, name: "principal", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2995
3248
  { no: 2, name: "registration_request", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
2996
- { no: 3, name: "zkpp_proof", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
2997
- { no: 4, name: "instances", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 12 /*ScalarType.BYTES*/ },
2998
- { no: 5, name: "policy_version", kind: "scalar", T: 13 /*ScalarType.UINT32*/ }
3249
+ { no: 6, name: "claim_token", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
2999
3250
  ]);
3000
3251
  }
3001
3252
  create(value?: PartialMessage<OpaqueZkppRegistrationStartRequest>): OpaqueZkppRegistrationStartRequest {
3002
3253
  const message = globalThis.Object.create((this.messagePrototype!));
3003
3254
  message.principal = "";
3004
3255
  message.registrationRequest = new Uint8Array(0);
3005
- message.zkppProof = new Uint8Array(0);
3006
- message.instances = [];
3007
- message.policyVersion = 0;
3008
3256
  if (value !== undefined)
3009
3257
  reflectionMergePartial<OpaqueZkppRegistrationStartRequest>(this, message, value);
3010
3258
  return message;
@@ -3020,14 +3268,8 @@ class OpaqueZkppRegistrationStartRequest$Type extends MessageType<OpaqueZkppRegi
3020
3268
  case /* bytes registration_request */ 2:
3021
3269
  message.registrationRequest = reader.bytes();
3022
3270
  break;
3023
- case /* bytes zkpp_proof */ 3:
3024
- message.zkppProof = reader.bytes();
3025
- break;
3026
- case /* repeated bytes instances */ 4:
3027
- message.instances.push(reader.bytes());
3028
- break;
3029
- case /* uint32 policy_version */ 5:
3030
- message.policyVersion = reader.uint32();
3271
+ case /* optional string claim_token */ 6:
3272
+ message.claimToken = reader.string();
3031
3273
  break;
3032
3274
  default:
3033
3275
  let u = options.readUnknownField;
@@ -3047,15 +3289,9 @@ class OpaqueZkppRegistrationStartRequest$Type extends MessageType<OpaqueZkppRegi
3047
3289
  /* bytes registration_request = 2; */
3048
3290
  if (message.registrationRequest.length)
3049
3291
  writer.tag(2, WireType.LengthDelimited).bytes(message.registrationRequest);
3050
- /* bytes zkpp_proof = 3; */
3051
- if (message.zkppProof.length)
3052
- writer.tag(3, WireType.LengthDelimited).bytes(message.zkppProof);
3053
- /* repeated bytes instances = 4; */
3054
- for (let i = 0; i < message.instances.length; i++)
3055
- writer.tag(4, WireType.LengthDelimited).bytes(message.instances[i]);
3056
- /* uint32 policy_version = 5; */
3057
- if (message.policyVersion !== 0)
3058
- writer.tag(5, WireType.Varint).uint32(message.policyVersion);
3292
+ /* optional string claim_token = 6; */
3293
+ if (message.claimToken !== undefined)
3294
+ writer.tag(6, WireType.LengthDelimited).string(message.claimToken);
3059
3295
  let u = options.writeUnknownFields;
3060
3296
  if (u !== false)
3061
3297
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -3071,13 +3307,12 @@ class OpaqueZkppRegistrationStartResponse$Type extends MessageType<OpaqueZkppReg
3071
3307
  constructor() {
3072
3308
  super("sid.v1.authn.OpaqueZkppRegistrationStartResponse", [
3073
3309
  { no: 1, name: "registration_response", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3074
- { no: 2, name: "zkpp_verified", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
3310
+ { no: 3, name: "history", kind: "message", T: () => PasswordHistoryContext }
3075
3311
  ]);
3076
3312
  }
3077
3313
  create(value?: PartialMessage<OpaqueZkppRegistrationStartResponse>): OpaqueZkppRegistrationStartResponse {
3078
3314
  const message = globalThis.Object.create((this.messagePrototype!));
3079
3315
  message.registrationResponse = new Uint8Array(0);
3080
- message.zkppVerified = false;
3081
3316
  if (value !== undefined)
3082
3317
  reflectionMergePartial<OpaqueZkppRegistrationStartResponse>(this, message, value);
3083
3318
  return message;
@@ -3090,8 +3325,8 @@ class OpaqueZkppRegistrationStartResponse$Type extends MessageType<OpaqueZkppReg
3090
3325
  case /* bytes registration_response */ 1:
3091
3326
  message.registrationResponse = reader.bytes();
3092
3327
  break;
3093
- case /* bool zkpp_verified */ 2:
3094
- message.zkppVerified = reader.bool();
3328
+ case /* sid.v1.authn.PasswordHistoryContext history */ 3:
3329
+ message.history = PasswordHistoryContext.internalBinaryRead(reader, reader.uint32(), options, message.history);
3095
3330
  break;
3096
3331
  default:
3097
3332
  let u = options.readUnknownField;
@@ -3108,9 +3343,9 @@ class OpaqueZkppRegistrationStartResponse$Type extends MessageType<OpaqueZkppReg
3108
3343
  /* bytes registration_response = 1; */
3109
3344
  if (message.registrationResponse.length)
3110
3345
  writer.tag(1, WireType.LengthDelimited).bytes(message.registrationResponse);
3111
- /* bool zkpp_verified = 2; */
3112
- if (message.zkppVerified !== false)
3113
- writer.tag(2, WireType.Varint).bool(message.zkppVerified);
3346
+ /* sid.v1.authn.PasswordHistoryContext history = 3; */
3347
+ if (message.history)
3348
+ PasswordHistoryContext.internalBinaryWrite(message.history, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
3114
3349
  let u = options.writeUnknownFields;
3115
3350
  if (u !== false)
3116
3351
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -3125,20 +3360,14 @@ export const OpaqueZkppRegistrationStartResponse = new OpaqueZkppRegistrationSta
3125
3360
  class OpaqueZkppRegistrationFinishRequest$Type extends MessageType<OpaqueZkppRegistrationFinishRequest> {
3126
3361
  constructor() {
3127
3362
  super("sid.v1.authn.OpaqueZkppRegistrationFinishRequest", [
3128
- { no: 1, name: "principal", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
3363
+ { no: 6, name: "operation_id", kind: "message", T: () => PasswordOperationId },
3129
3364
  { no: 2, name: "registration_record", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3130
- { no: 3, name: "history_commitment", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3131
- { no: 4, name: "commitment_salt", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3132
- { no: 5, name: "zkpp_verified", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
3365
+ { no: 7, name: "proof", kind: "message", T: () => PasswordRegistrationProof }
3133
3366
  ]);
3134
3367
  }
3135
3368
  create(value?: PartialMessage<OpaqueZkppRegistrationFinishRequest>): OpaqueZkppRegistrationFinishRequest {
3136
3369
  const message = globalThis.Object.create((this.messagePrototype!));
3137
- message.principal = "";
3138
3370
  message.registrationRecord = new Uint8Array(0);
3139
- message.historyCommitment = new Uint8Array(0);
3140
- message.commitmentSalt = new Uint8Array(0);
3141
- message.zkppVerified = false;
3142
3371
  if (value !== undefined)
3143
3372
  reflectionMergePartial<OpaqueZkppRegistrationFinishRequest>(this, message, value);
3144
3373
  return message;
@@ -3148,20 +3377,14 @@ class OpaqueZkppRegistrationFinishRequest$Type extends MessageType<OpaqueZkppReg
3148
3377
  while (reader.pos < end) {
3149
3378
  let [fieldNo, wireType] = reader.tag();
3150
3379
  switch (fieldNo) {
3151
- case /* string principal */ 1:
3152
- message.principal = reader.string();
3380
+ case /* sid.v1.ids.PasswordOperationId operation_id */ 6:
3381
+ message.operationId = PasswordOperationId.internalBinaryRead(reader, reader.uint32(), options, message.operationId);
3153
3382
  break;
3154
3383
  case /* bytes registration_record */ 2:
3155
3384
  message.registrationRecord = reader.bytes();
3156
3385
  break;
3157
- case /* bytes history_commitment */ 3:
3158
- message.historyCommitment = reader.bytes();
3159
- break;
3160
- case /* bytes commitment_salt */ 4:
3161
- message.commitmentSalt = reader.bytes();
3162
- break;
3163
- case /* bool zkpp_verified */ 5:
3164
- message.zkppVerified = reader.bool();
3386
+ case /* sid.v1.authn.PasswordRegistrationProof proof */ 7:
3387
+ message.proof = PasswordRegistrationProof.internalBinaryRead(reader, reader.uint32(), options, message.proof);
3165
3388
  break;
3166
3389
  default:
3167
3390
  let u = options.readUnknownField;
@@ -3175,21 +3398,15 @@ class OpaqueZkppRegistrationFinishRequest$Type extends MessageType<OpaqueZkppReg
3175
3398
  return message;
3176
3399
  }
3177
3400
  internalBinaryWrite(message: OpaqueZkppRegistrationFinishRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
3178
- /* string principal = 1; */
3179
- if (message.principal !== "")
3180
- writer.tag(1, WireType.LengthDelimited).string(message.principal);
3181
3401
  /* bytes registration_record = 2; */
3182
3402
  if (message.registrationRecord.length)
3183
3403
  writer.tag(2, WireType.LengthDelimited).bytes(message.registrationRecord);
3184
- /* bytes history_commitment = 3; */
3185
- if (message.historyCommitment.length)
3186
- writer.tag(3, WireType.LengthDelimited).bytes(message.historyCommitment);
3187
- /* bytes commitment_salt = 4; */
3188
- if (message.commitmentSalt.length)
3189
- writer.tag(4, WireType.LengthDelimited).bytes(message.commitmentSalt);
3190
- /* bool zkpp_verified = 5; */
3191
- if (message.zkppVerified !== false)
3192
- writer.tag(5, WireType.Varint).bool(message.zkppVerified);
3404
+ /* sid.v1.ids.PasswordOperationId operation_id = 6; */
3405
+ if (message.operationId)
3406
+ PasswordOperationId.internalBinaryWrite(message.operationId, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
3407
+ /* sid.v1.authn.PasswordRegistrationProof proof = 7; */
3408
+ if (message.proof)
3409
+ PasswordRegistrationProof.internalBinaryWrite(message.proof, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
3193
3410
  let u = options.writeUnknownFields;
3194
3411
  if (u !== false)
3195
3412
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -3306,16 +3523,11 @@ export const PasswordChangeChallengeRequest = new PasswordChangeChallengeRequest
3306
3523
  class PasswordChangeChallengeResponse$Type extends MessageType<PasswordChangeChallengeResponse> {
3307
3524
  constructor() {
3308
3525
  super("sid.v1.authn.PasswordChangeChallengeResponse", [
3309
- { no: 1, name: "history_commitment", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3310
- { no: 2, name: "commitment_salt", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3311
- { no: 3, name: "policy_version", kind: "scalar", T: 13 /*ScalarType.UINT32*/ }
3526
+ { no: 4, name: "history", kind: "message", T: () => PasswordHistoryContext }
3312
3527
  ]);
3313
3528
  }
3314
3529
  create(value?: PartialMessage<PasswordChangeChallengeResponse>): PasswordChangeChallengeResponse {
3315
3530
  const message = globalThis.Object.create((this.messagePrototype!));
3316
- message.historyCommitment = new Uint8Array(0);
3317
- message.commitmentSalt = new Uint8Array(0);
3318
- message.policyVersion = 0;
3319
3531
  if (value !== undefined)
3320
3532
  reflectionMergePartial<PasswordChangeChallengeResponse>(this, message, value);
3321
3533
  return message;
@@ -3325,14 +3537,8 @@ class PasswordChangeChallengeResponse$Type extends MessageType<PasswordChangeCha
3325
3537
  while (reader.pos < end) {
3326
3538
  let [fieldNo, wireType] = reader.tag();
3327
3539
  switch (fieldNo) {
3328
- case /* bytes history_commitment */ 1:
3329
- message.historyCommitment = reader.bytes();
3330
- break;
3331
- case /* bytes commitment_salt */ 2:
3332
- message.commitmentSalt = reader.bytes();
3333
- break;
3334
- case /* uint32 policy_version */ 3:
3335
- message.policyVersion = reader.uint32();
3540
+ case /* sid.v1.authn.PasswordHistoryContext history */ 4:
3541
+ message.history = PasswordHistoryContext.internalBinaryRead(reader, reader.uint32(), options, message.history);
3336
3542
  break;
3337
3543
  default:
3338
3544
  let u = options.readUnknownField;
@@ -3346,15 +3552,9 @@ class PasswordChangeChallengeResponse$Type extends MessageType<PasswordChangeCha
3346
3552
  return message;
3347
3553
  }
3348
3554
  internalBinaryWrite(message: PasswordChangeChallengeResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
3349
- /* bytes history_commitment = 1; */
3350
- if (message.historyCommitment.length)
3351
- writer.tag(1, WireType.LengthDelimited).bytes(message.historyCommitment);
3352
- /* bytes commitment_salt = 2; */
3353
- if (message.commitmentSalt.length)
3354
- writer.tag(2, WireType.LengthDelimited).bytes(message.commitmentSalt);
3355
- /* uint32 policy_version = 3; */
3356
- if (message.policyVersion !== 0)
3357
- writer.tag(3, WireType.Varint).uint32(message.policyVersion);
3555
+ /* sid.v1.authn.PasswordHistoryContext history = 4; */
3556
+ if (message.history)
3557
+ PasswordHistoryContext.internalBinaryWrite(message.history, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
3358
3558
  let u = options.writeUnknownFields;
3359
3559
  if (u !== false)
3360
3560
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -3369,22 +3569,15 @@ export const PasswordChangeChallengeResponse = new PasswordChangeChallengeRespon
3369
3569
  class PasswordChangeExecuteRequest$Type extends MessageType<PasswordChangeExecuteRequest> {
3370
3570
  constructor() {
3371
3571
  super("sid.v1.authn.PasswordChangeExecuteRequest", [
3572
+ { no: 9, name: "operation_id", kind: "message", T: () => PasswordOperationId },
3372
3573
  { no: 1, name: "credential_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
3373
- { no: 3, name: "zkpp_proof", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3374
- { no: 4, name: "instances", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 12 /*ScalarType.BYTES*/ },
3375
- { no: 5, name: "registration_request", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3376
- { no: 6, name: "new_history_commitment", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3377
- { no: 7, name: "new_commitment_salt", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }
3574
+ { no: 5, name: "registration_request", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }
3378
3575
  ]);
3379
3576
  }
3380
3577
  create(value?: PartialMessage<PasswordChangeExecuteRequest>): PasswordChangeExecuteRequest {
3381
3578
  const message = globalThis.Object.create((this.messagePrototype!));
3382
3579
  message.credentialId = "";
3383
- message.zkppProof = new Uint8Array(0);
3384
- message.instances = [];
3385
3580
  message.registrationRequest = new Uint8Array(0);
3386
- message.newHistoryCommitment = new Uint8Array(0);
3387
- message.newCommitmentSalt = new Uint8Array(0);
3388
3581
  if (value !== undefined)
3389
3582
  reflectionMergePartial<PasswordChangeExecuteRequest>(this, message, value);
3390
3583
  return message;
@@ -3394,24 +3587,15 @@ class PasswordChangeExecuteRequest$Type extends MessageType<PasswordChangeExecut
3394
3587
  while (reader.pos < end) {
3395
3588
  let [fieldNo, wireType] = reader.tag();
3396
3589
  switch (fieldNo) {
3590
+ case /* sid.v1.ids.PasswordOperationId operation_id */ 9:
3591
+ message.operationId = PasswordOperationId.internalBinaryRead(reader, reader.uint32(), options, message.operationId);
3592
+ break;
3397
3593
  case /* string credential_id */ 1:
3398
3594
  message.credentialId = reader.string();
3399
3595
  break;
3400
- case /* bytes zkpp_proof */ 3:
3401
- message.zkppProof = reader.bytes();
3402
- break;
3403
- case /* repeated bytes instances */ 4:
3404
- message.instances.push(reader.bytes());
3405
- break;
3406
3596
  case /* bytes registration_request */ 5:
3407
3597
  message.registrationRequest = reader.bytes();
3408
3598
  break;
3409
- case /* bytes new_history_commitment */ 6:
3410
- message.newHistoryCommitment = reader.bytes();
3411
- break;
3412
- case /* bytes new_commitment_salt */ 7:
3413
- message.newCommitmentSalt = reader.bytes();
3414
- break;
3415
3599
  default:
3416
3600
  let u = options.readUnknownField;
3417
3601
  if (u === "throw")
@@ -3427,21 +3611,12 @@ class PasswordChangeExecuteRequest$Type extends MessageType<PasswordChangeExecut
3427
3611
  /* string credential_id = 1; */
3428
3612
  if (message.credentialId !== "")
3429
3613
  writer.tag(1, WireType.LengthDelimited).string(message.credentialId);
3430
- /* bytes zkpp_proof = 3; */
3431
- if (message.zkppProof.length)
3432
- writer.tag(3, WireType.LengthDelimited).bytes(message.zkppProof);
3433
- /* repeated bytes instances = 4; */
3434
- for (let i = 0; i < message.instances.length; i++)
3435
- writer.tag(4, WireType.LengthDelimited).bytes(message.instances[i]);
3436
3614
  /* bytes registration_request = 5; */
3437
3615
  if (message.registrationRequest.length)
3438
3616
  writer.tag(5, WireType.LengthDelimited).bytes(message.registrationRequest);
3439
- /* bytes new_history_commitment = 6; */
3440
- if (message.newHistoryCommitment.length)
3441
- writer.tag(6, WireType.LengthDelimited).bytes(message.newHistoryCommitment);
3442
- /* bytes new_commitment_salt = 7; */
3443
- if (message.newCommitmentSalt.length)
3444
- writer.tag(7, WireType.LengthDelimited).bytes(message.newCommitmentSalt);
3617
+ /* sid.v1.ids.PasswordOperationId operation_id = 9; */
3618
+ if (message.operationId)
3619
+ PasswordOperationId.internalBinaryWrite(message.operationId, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
3445
3620
  let u = options.writeUnknownFields;
3446
3621
  if (u !== false)
3447
3622
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -3503,8 +3678,10 @@ export const PasswordChangeExecuteResponse = new PasswordChangeExecuteResponse$T
3503
3678
  class PasswordChangeFinishRequest$Type extends MessageType<PasswordChangeFinishRequest> {
3504
3679
  constructor() {
3505
3680
  super("sid.v1.authn.PasswordChangeFinishRequest", [
3681
+ { no: 4, name: "operation_id", kind: "message", T: () => PasswordOperationId },
3506
3682
  { no: 1, name: "credential_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
3507
- { no: 3, name: "registration_record", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }
3683
+ { no: 3, name: "registration_record", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
3684
+ { no: 5, name: "proof", kind: "message", T: () => PasswordRegistrationProof }
3508
3685
  ]);
3509
3686
  }
3510
3687
  create(value?: PartialMessage<PasswordChangeFinishRequest>): PasswordChangeFinishRequest {
@@ -3520,12 +3697,18 @@ class PasswordChangeFinishRequest$Type extends MessageType<PasswordChangeFinishR
3520
3697
  while (reader.pos < end) {
3521
3698
  let [fieldNo, wireType] = reader.tag();
3522
3699
  switch (fieldNo) {
3700
+ case /* sid.v1.ids.PasswordOperationId operation_id */ 4:
3701
+ message.operationId = PasswordOperationId.internalBinaryRead(reader, reader.uint32(), options, message.operationId);
3702
+ break;
3523
3703
  case /* string credential_id */ 1:
3524
3704
  message.credentialId = reader.string();
3525
3705
  break;
3526
3706
  case /* bytes registration_record */ 3:
3527
3707
  message.registrationRecord = reader.bytes();
3528
3708
  break;
3709
+ case /* sid.v1.authn.PasswordRegistrationProof proof */ 5:
3710
+ message.proof = PasswordRegistrationProof.internalBinaryRead(reader, reader.uint32(), options, message.proof);
3711
+ break;
3529
3712
  default:
3530
3713
  let u = options.readUnknownField;
3531
3714
  if (u === "throw")
@@ -3544,6 +3727,12 @@ class PasswordChangeFinishRequest$Type extends MessageType<PasswordChangeFinishR
3544
3727
  /* bytes registration_record = 3; */
3545
3728
  if (message.registrationRecord.length)
3546
3729
  writer.tag(3, WireType.LengthDelimited).bytes(message.registrationRecord);
3730
+ /* sid.v1.ids.PasswordOperationId operation_id = 4; */
3731
+ if (message.operationId)
3732
+ PasswordOperationId.internalBinaryWrite(message.operationId, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
3733
+ /* sid.v1.authn.PasswordRegistrationProof proof = 5; */
3734
+ if (message.proof)
3735
+ PasswordRegistrationProof.internalBinaryWrite(message.proof, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
3547
3736
  let u = options.writeUnknownFields;
3548
3737
  if (u !== false)
3549
3738
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -4039,7 +4228,12 @@ class OAuth2AuthorizeRequest$Type extends MessageType<OAuth2AuthorizeRequest> {
4039
4228
  { no: 6, name: "code_challenge", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4040
4229
  { no: 7, name: "code_challenge_method", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4041
4230
  { no: 8, name: "nonce", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4042
- { no: 9, name: "acr_values", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4231
+ { no: 9, name: "acr_values", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4232
+ { no: 10, name: "issuer_handle", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
4233
+ { no: 11, name: "resource", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
4234
+ { no: 12, name: "prompt", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4235
+ { no: 13, name: "max_age", kind: "scalar", opt: true, T: 13 /*ScalarType.UINT32*/ },
4236
+ { no: 14, name: "request_uri", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4043
4237
  ]);
4044
4238
  }
4045
4239
  create(value?: PartialMessage<OAuth2AuthorizeRequest>): OAuth2AuthorizeRequest {
@@ -4047,6 +4241,8 @@ class OAuth2AuthorizeRequest$Type extends MessageType<OAuth2AuthorizeRequest> {
4047
4241
  message.clientId = "";
4048
4242
  message.redirectUri = "";
4049
4243
  message.responseType = "";
4244
+ message.issuerHandle = "";
4245
+ message.resource = [];
4050
4246
  if (value !== undefined)
4051
4247
  reflectionMergePartial<OAuth2AuthorizeRequest>(this, message, value);
4052
4248
  return message;
@@ -4083,6 +4279,21 @@ class OAuth2AuthorizeRequest$Type extends MessageType<OAuth2AuthorizeRequest> {
4083
4279
  case /* optional string acr_values */ 9:
4084
4280
  message.acrValues = reader.string();
4085
4281
  break;
4282
+ case /* string issuer_handle */ 10:
4283
+ message.issuerHandle = reader.string();
4284
+ break;
4285
+ case /* repeated string resource */ 11:
4286
+ message.resource.push(reader.string());
4287
+ break;
4288
+ case /* optional string prompt */ 12:
4289
+ message.prompt = reader.string();
4290
+ break;
4291
+ case /* optional uint32 max_age */ 13:
4292
+ message.maxAge = reader.uint32();
4293
+ break;
4294
+ case /* optional string request_uri */ 14:
4295
+ message.requestUri = reader.string();
4296
+ break;
4086
4297
  default:
4087
4298
  let u = options.readUnknownField;
4088
4299
  if (u === "throw")
@@ -4122,6 +4333,21 @@ class OAuth2AuthorizeRequest$Type extends MessageType<OAuth2AuthorizeRequest> {
4122
4333
  /* optional string acr_values = 9; */
4123
4334
  if (message.acrValues !== undefined)
4124
4335
  writer.tag(9, WireType.LengthDelimited).string(message.acrValues);
4336
+ /* string issuer_handle = 10; */
4337
+ if (message.issuerHandle !== "")
4338
+ writer.tag(10, WireType.LengthDelimited).string(message.issuerHandle);
4339
+ /* repeated string resource = 11; */
4340
+ for (let i = 0; i < message.resource.length; i++)
4341
+ writer.tag(11, WireType.LengthDelimited).string(message.resource[i]);
4342
+ /* optional string prompt = 12; */
4343
+ if (message.prompt !== undefined)
4344
+ writer.tag(12, WireType.LengthDelimited).string(message.prompt);
4345
+ /* optional uint32 max_age = 13; */
4346
+ if (message.maxAge !== undefined)
4347
+ writer.tag(13, WireType.Varint).uint32(message.maxAge);
4348
+ /* optional string request_uri = 14; */
4349
+ if (message.requestUri !== undefined)
4350
+ writer.tag(14, WireType.LengthDelimited).string(message.requestUri);
4125
4351
  let u = options.writeUnknownFields;
4126
4352
  if (u !== false)
4127
4353
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -4225,12 +4451,20 @@ class OAuth2TokenRequest$Type extends MessageType<OAuth2TokenRequest> {
4225
4451
  { no: 10, name: "client_assertion", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4226
4452
  { no: 11, name: "client_assertion_type", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4227
4453
  { no: 12, name: "subject_token", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4228
- { no: 13, name: "subject_token_type", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4454
+ { no: 13, name: "subject_token_type", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4455
+ { no: 14, name: "issuer_handle", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
4456
+ { no: 15, name: "device_code", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4457
+ { no: 16, name: "resource", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
4458
+ { no: 17, name: "audience", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
4459
+ { no: 18, name: "requested_token_type", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4229
4460
  ]);
4230
4461
  }
4231
4462
  create(value?: PartialMessage<OAuth2TokenRequest>): OAuth2TokenRequest {
4232
4463
  const message = globalThis.Object.create((this.messagePrototype!));
4233
4464
  message.grantType = "";
4465
+ message.issuerHandle = "";
4466
+ message.resource = [];
4467
+ message.audience = [];
4234
4468
  if (value !== undefined)
4235
4469
  reflectionMergePartial<OAuth2TokenRequest>(this, message, value);
4236
4470
  return message;
@@ -4279,6 +4513,21 @@ class OAuth2TokenRequest$Type extends MessageType<OAuth2TokenRequest> {
4279
4513
  case /* optional string subject_token_type */ 13:
4280
4514
  message.subjectTokenType = reader.string();
4281
4515
  break;
4516
+ case /* string issuer_handle */ 14:
4517
+ message.issuerHandle = reader.string();
4518
+ break;
4519
+ case /* optional string device_code */ 15:
4520
+ message.deviceCode = reader.string();
4521
+ break;
4522
+ case /* repeated string resource */ 16:
4523
+ message.resource.push(reader.string());
4524
+ break;
4525
+ case /* repeated string audience */ 17:
4526
+ message.audience.push(reader.string());
4527
+ break;
4528
+ case /* optional string requested_token_type */ 18:
4529
+ message.requestedTokenType = reader.string();
4530
+ break;
4282
4531
  default:
4283
4532
  let u = options.readUnknownField;
4284
4533
  if (u === "throw")
@@ -4330,6 +4579,21 @@ class OAuth2TokenRequest$Type extends MessageType<OAuth2TokenRequest> {
4330
4579
  /* optional string subject_token_type = 13; */
4331
4580
  if (message.subjectTokenType !== undefined)
4332
4581
  writer.tag(13, WireType.LengthDelimited).string(message.subjectTokenType);
4582
+ /* string issuer_handle = 14; */
4583
+ if (message.issuerHandle !== "")
4584
+ writer.tag(14, WireType.LengthDelimited).string(message.issuerHandle);
4585
+ /* optional string device_code = 15; */
4586
+ if (message.deviceCode !== undefined)
4587
+ writer.tag(15, WireType.LengthDelimited).string(message.deviceCode);
4588
+ /* repeated string resource = 16; */
4589
+ for (let i = 0; i < message.resource.length; i++)
4590
+ writer.tag(16, WireType.LengthDelimited).string(message.resource[i]);
4591
+ /* repeated string audience = 17; */
4592
+ for (let i = 0; i < message.audience.length; i++)
4593
+ writer.tag(17, WireType.LengthDelimited).string(message.audience[i]);
4594
+ /* optional string requested_token_type = 18; */
4595
+ if (message.requestedTokenType !== undefined)
4596
+ writer.tag(18, WireType.LengthDelimited).string(message.requestedTokenType);
4333
4597
  let u = options.writeUnknownFields;
4334
4598
  if (u !== false)
4335
4599
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -4349,7 +4613,8 @@ class OAuth2TokenResponse$Type extends MessageType<OAuth2TokenResponse> {
4349
4613
  { no: 3, name: "expires_in", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ },
4350
4614
  { no: 4, name: "refresh_token", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4351
4615
  { no: 5, name: "id_token", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4352
- { no: 6, name: "scope", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4616
+ { no: 6, name: "scope", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4617
+ { no: 7, name: "issued_token_type", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4353
4618
  ]);
4354
4619
  }
4355
4620
  create(value?: PartialMessage<OAuth2TokenResponse>): OAuth2TokenResponse {
@@ -4384,6 +4649,9 @@ class OAuth2TokenResponse$Type extends MessageType<OAuth2TokenResponse> {
4384
4649
  case /* optional string scope */ 6:
4385
4650
  message.scope = reader.string();
4386
4651
  break;
4652
+ case /* optional string issued_token_type */ 7:
4653
+ message.issuedTokenType = reader.string();
4654
+ break;
4387
4655
  default:
4388
4656
  let u = options.readUnknownField;
4389
4657
  if (u === "throw")
@@ -4414,6 +4682,9 @@ class OAuth2TokenResponse$Type extends MessageType<OAuth2TokenResponse> {
4414
4682
  /* optional string scope = 6; */
4415
4683
  if (message.scope !== undefined)
4416
4684
  writer.tag(6, WireType.LengthDelimited).string(message.scope);
4685
+ /* optional string issued_token_type = 7; */
4686
+ if (message.issuedTokenType !== undefined)
4687
+ writer.tag(7, WireType.LengthDelimited).string(message.issuedTokenType);
4417
4688
  let u = options.writeUnknownFields;
4418
4689
  if (u !== false)
4419
4690
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -4428,12 +4699,18 @@ export const OAuth2TokenResponse = new OAuth2TokenResponse$Type();
4428
4699
  class OAuth2IntrospectRequest$Type extends MessageType<OAuth2IntrospectRequest> {
4429
4700
  constructor() {
4430
4701
  super("sid.v1.authn.OAuth2IntrospectRequest", [
4431
- { no: 1, name: "token", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
4702
+ { no: 1, name: "token", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
4703
+ { no: 2, name: "issuer_handle", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
4704
+ { no: 3, name: "client_id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4705
+ { no: 4, name: "client_secret", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4706
+ { no: 5, name: "client_assertion", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4707
+ { no: 6, name: "client_assertion_type", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4432
4708
  ]);
4433
4709
  }
4434
4710
  create(value?: PartialMessage<OAuth2IntrospectRequest>): OAuth2IntrospectRequest {
4435
4711
  const message = globalThis.Object.create((this.messagePrototype!));
4436
4712
  message.token = "";
4713
+ message.issuerHandle = "";
4437
4714
  if (value !== undefined)
4438
4715
  reflectionMergePartial<OAuth2IntrospectRequest>(this, message, value);
4439
4716
  return message;
@@ -4446,6 +4723,21 @@ class OAuth2IntrospectRequest$Type extends MessageType<OAuth2IntrospectRequest>
4446
4723
  case /* string token */ 1:
4447
4724
  message.token = reader.string();
4448
4725
  break;
4726
+ case /* string issuer_handle */ 2:
4727
+ message.issuerHandle = reader.string();
4728
+ break;
4729
+ case /* optional string client_id */ 3:
4730
+ message.clientId = reader.string();
4731
+ break;
4732
+ case /* optional string client_secret */ 4:
4733
+ message.clientSecret = reader.string();
4734
+ break;
4735
+ case /* optional string client_assertion */ 5:
4736
+ message.clientAssertion = reader.string();
4737
+ break;
4738
+ case /* optional string client_assertion_type */ 6:
4739
+ message.clientAssertionType = reader.string();
4740
+ break;
4449
4741
  default:
4450
4742
  let u = options.readUnknownField;
4451
4743
  if (u === "throw")
@@ -4461,6 +4753,21 @@ class OAuth2IntrospectRequest$Type extends MessageType<OAuth2IntrospectRequest>
4461
4753
  /* string token = 1; */
4462
4754
  if (message.token !== "")
4463
4755
  writer.tag(1, WireType.LengthDelimited).string(message.token);
4756
+ /* string issuer_handle = 2; */
4757
+ if (message.issuerHandle !== "")
4758
+ writer.tag(2, WireType.LengthDelimited).string(message.issuerHandle);
4759
+ /* optional string client_id = 3; */
4760
+ if (message.clientId !== undefined)
4761
+ writer.tag(3, WireType.LengthDelimited).string(message.clientId);
4762
+ /* optional string client_secret = 4; */
4763
+ if (message.clientSecret !== undefined)
4764
+ writer.tag(4, WireType.LengthDelimited).string(message.clientSecret);
4765
+ /* optional string client_assertion = 5; */
4766
+ if (message.clientAssertion !== undefined)
4767
+ writer.tag(5, WireType.LengthDelimited).string(message.clientAssertion);
4768
+ /* optional string client_assertion_type = 6; */
4769
+ if (message.clientAssertionType !== undefined)
4770
+ writer.tag(6, WireType.LengthDelimited).string(message.clientAssertionType);
4464
4771
  let u = options.writeUnknownFields;
4465
4772
  if (u !== false)
4466
4773
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -4565,12 +4872,18 @@ class OAuth2RevokeRequest$Type extends MessageType<OAuth2RevokeRequest> {
4565
4872
  constructor() {
4566
4873
  super("sid.v1.authn.OAuth2RevokeRequest", [
4567
4874
  { no: 1, name: "token", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
4568
- { no: 2, name: "token_type_hint", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4875
+ { no: 2, name: "token_type_hint", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4876
+ { no: 3, name: "issuer_handle", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
4877
+ { no: 4, name: "client_id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4878
+ { no: 5, name: "client_secret", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4879
+ { no: 6, name: "client_assertion", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
4880
+ { no: 7, name: "client_assertion_type", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4569
4881
  ]);
4570
4882
  }
4571
4883
  create(value?: PartialMessage<OAuth2RevokeRequest>): OAuth2RevokeRequest {
4572
4884
  const message = globalThis.Object.create((this.messagePrototype!));
4573
4885
  message.token = "";
4886
+ message.issuerHandle = "";
4574
4887
  if (value !== undefined)
4575
4888
  reflectionMergePartial<OAuth2RevokeRequest>(this, message, value);
4576
4889
  return message;
@@ -4586,6 +4899,21 @@ class OAuth2RevokeRequest$Type extends MessageType<OAuth2RevokeRequest> {
4586
4899
  case /* optional string token_type_hint */ 2:
4587
4900
  message.tokenTypeHint = reader.string();
4588
4901
  break;
4902
+ case /* string issuer_handle */ 3:
4903
+ message.issuerHandle = reader.string();
4904
+ break;
4905
+ case /* optional string client_id */ 4:
4906
+ message.clientId = reader.string();
4907
+ break;
4908
+ case /* optional string client_secret */ 5:
4909
+ message.clientSecret = reader.string();
4910
+ break;
4911
+ case /* optional string client_assertion */ 6:
4912
+ message.clientAssertion = reader.string();
4913
+ break;
4914
+ case /* optional string client_assertion_type */ 7:
4915
+ message.clientAssertionType = reader.string();
4916
+ break;
4589
4917
  default:
4590
4918
  let u = options.readUnknownField;
4591
4919
  if (u === "throw")
@@ -4604,6 +4932,21 @@ class OAuth2RevokeRequest$Type extends MessageType<OAuth2RevokeRequest> {
4604
4932
  /* optional string token_type_hint = 2; */
4605
4933
  if (message.tokenTypeHint !== undefined)
4606
4934
  writer.tag(2, WireType.LengthDelimited).string(message.tokenTypeHint);
4935
+ /* string issuer_handle = 3; */
4936
+ if (message.issuerHandle !== "")
4937
+ writer.tag(3, WireType.LengthDelimited).string(message.issuerHandle);
4938
+ /* optional string client_id = 4; */
4939
+ if (message.clientId !== undefined)
4940
+ writer.tag(4, WireType.LengthDelimited).string(message.clientId);
4941
+ /* optional string client_secret = 5; */
4942
+ if (message.clientSecret !== undefined)
4943
+ writer.tag(5, WireType.LengthDelimited).string(message.clientSecret);
4944
+ /* optional string client_assertion = 6; */
4945
+ if (message.clientAssertion !== undefined)
4946
+ writer.tag(6, WireType.LengthDelimited).string(message.clientAssertion);
4947
+ /* optional string client_assertion_type = 7; */
4948
+ if (message.clientAssertionType !== undefined)
4949
+ writer.tag(7, WireType.LengthDelimited).string(message.clientAssertionType);
4607
4950
  let u = options.writeUnknownFields;
4608
4951
  if (u !== false)
4609
4952
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -4772,13 +5115,19 @@ export const ValidateSessionResponse = new ValidateSessionResponse$Type();
4772
5115
  class DeviceAuthorizationRequest$Type extends MessageType<DeviceAuthorizationRequest> {
4773
5116
  constructor() {
4774
5117
  super("sid.v1.authn.DeviceAuthorizationRequest", [
4775
- { no: 1, name: "client_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
4776
- { no: 2, name: "scope", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
5118
+ { no: 1, name: "client_id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
5119
+ { no: 2, name: "scope", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
5120
+ { no: 3, name: "issuer_handle", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
5121
+ { no: 4, name: "client_secret", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
5122
+ { no: 5, name: "resource", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
5123
+ { no: 6, name: "client_assertion", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
5124
+ { no: 7, name: "client_assertion_type", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
4777
5125
  ]);
4778
5126
  }
4779
5127
  create(value?: PartialMessage<DeviceAuthorizationRequest>): DeviceAuthorizationRequest {
4780
5128
  const message = globalThis.Object.create((this.messagePrototype!));
4781
- message.clientId = "";
5129
+ message.issuerHandle = "";
5130
+ message.resource = [];
4782
5131
  if (value !== undefined)
4783
5132
  reflectionMergePartial<DeviceAuthorizationRequest>(this, message, value);
4784
5133
  return message;
@@ -4788,12 +5137,27 @@ class DeviceAuthorizationRequest$Type extends MessageType<DeviceAuthorizationReq
4788
5137
  while (reader.pos < end) {
4789
5138
  let [fieldNo, wireType] = reader.tag();
4790
5139
  switch (fieldNo) {
4791
- case /* string client_id */ 1:
5140
+ case /* optional string client_id */ 1:
4792
5141
  message.clientId = reader.string();
4793
5142
  break;
4794
5143
  case /* optional string scope */ 2:
4795
5144
  message.scope = reader.string();
4796
5145
  break;
5146
+ case /* string issuer_handle */ 3:
5147
+ message.issuerHandle = reader.string();
5148
+ break;
5149
+ case /* optional string client_secret */ 4:
5150
+ message.clientSecret = reader.string();
5151
+ break;
5152
+ case /* repeated string resource */ 5:
5153
+ message.resource.push(reader.string());
5154
+ break;
5155
+ case /* optional string client_assertion */ 6:
5156
+ message.clientAssertion = reader.string();
5157
+ break;
5158
+ case /* optional string client_assertion_type */ 7:
5159
+ message.clientAssertionType = reader.string();
5160
+ break;
4797
5161
  default:
4798
5162
  let u = options.readUnknownField;
4799
5163
  if (u === "throw")
@@ -4806,12 +5170,27 @@ class DeviceAuthorizationRequest$Type extends MessageType<DeviceAuthorizationReq
4806
5170
  return message;
4807
5171
  }
4808
5172
  internalBinaryWrite(message: DeviceAuthorizationRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
4809
- /* string client_id = 1; */
4810
- if (message.clientId !== "")
5173
+ /* optional string client_id = 1; */
5174
+ if (message.clientId !== undefined)
4811
5175
  writer.tag(1, WireType.LengthDelimited).string(message.clientId);
4812
5176
  /* optional string scope = 2; */
4813
5177
  if (message.scope !== undefined)
4814
5178
  writer.tag(2, WireType.LengthDelimited).string(message.scope);
5179
+ /* string issuer_handle = 3; */
5180
+ if (message.issuerHandle !== "")
5181
+ writer.tag(3, WireType.LengthDelimited).string(message.issuerHandle);
5182
+ /* optional string client_secret = 4; */
5183
+ if (message.clientSecret !== undefined)
5184
+ writer.tag(4, WireType.LengthDelimited).string(message.clientSecret);
5185
+ /* repeated string resource = 5; */
5186
+ for (let i = 0; i < message.resource.length; i++)
5187
+ writer.tag(5, WireType.LengthDelimited).string(message.resource[i]);
5188
+ /* optional string client_assertion = 6; */
5189
+ if (message.clientAssertion !== undefined)
5190
+ writer.tag(6, WireType.LengthDelimited).string(message.clientAssertion);
5191
+ /* optional string client_assertion_type = 7; */
5192
+ if (message.clientAssertionType !== undefined)
5193
+ writer.tag(7, WireType.LengthDelimited).string(message.clientAssertionType);
4815
5194
  let u = options.writeUnknownFields;
4816
5195
  if (u !== false)
4817
5196
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -4910,61 +5289,6 @@ class DeviceAuthorizationResponse$Type extends MessageType<DeviceAuthorizationRe
4910
5289
  */
4911
5290
  export const DeviceAuthorizationResponse = new DeviceAuthorizationResponse$Type();
4912
5291
  // @generated message type with reflection information, may provide speed optimized methods
4913
- class PollDeviceTokenRequest$Type extends MessageType<PollDeviceTokenRequest> {
4914
- constructor() {
4915
- super("sid.v1.authn.PollDeviceTokenRequest", [
4916
- { no: 1, name: "client_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
4917
- { no: 2, name: "device_code", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
4918
- ]);
4919
- }
4920
- create(value?: PartialMessage<PollDeviceTokenRequest>): PollDeviceTokenRequest {
4921
- const message = globalThis.Object.create((this.messagePrototype!));
4922
- message.clientId = "";
4923
- message.deviceCode = "";
4924
- if (value !== undefined)
4925
- reflectionMergePartial<PollDeviceTokenRequest>(this, message, value);
4926
- return message;
4927
- }
4928
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PollDeviceTokenRequest): PollDeviceTokenRequest {
4929
- let message = target ?? this.create(), end = reader.pos + length;
4930
- while (reader.pos < end) {
4931
- let [fieldNo, wireType] = reader.tag();
4932
- switch (fieldNo) {
4933
- case /* string client_id */ 1:
4934
- message.clientId = reader.string();
4935
- break;
4936
- case /* string device_code */ 2:
4937
- message.deviceCode = reader.string();
4938
- break;
4939
- default:
4940
- let u = options.readUnknownField;
4941
- if (u === "throw")
4942
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
4943
- let d = reader.skip(wireType);
4944
- if (u !== false)
4945
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
4946
- }
4947
- }
4948
- return message;
4949
- }
4950
- internalBinaryWrite(message: PollDeviceTokenRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
4951
- /* string client_id = 1; */
4952
- if (message.clientId !== "")
4953
- writer.tag(1, WireType.LengthDelimited).string(message.clientId);
4954
- /* string device_code = 2; */
4955
- if (message.deviceCode !== "")
4956
- writer.tag(2, WireType.LengthDelimited).string(message.deviceCode);
4957
- let u = options.writeUnknownFields;
4958
- if (u !== false)
4959
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
4960
- return writer;
4961
- }
4962
- }
4963
- /**
4964
- * @generated MessageType for protobuf message sid.v1.authn.PollDeviceTokenRequest
4965
- */
4966
- export const PollDeviceTokenRequest = new PollDeviceTokenRequest$Type();
4967
- // @generated message type with reflection information, may provide speed optimized methods
4968
5292
  class SubmitDeviceUserCodeRequest$Type extends MessageType<SubmitDeviceUserCodeRequest> {
4969
5293
  constructor() {
4970
5294
  super("sid.v1.authn.SubmitDeviceUserCodeRequest", [
@@ -5368,8 +5692,7 @@ export const ResolvePrincipalRequest = new ResolvePrincipalRequest$Type();
5368
5692
  class ResolvePrincipalResponse$Type extends MessageType<ResolvePrincipalResponse> {
5369
5693
  constructor() {
5370
5694
  super("sid.v1.authn.ResolvePrincipalResponse", [
5371
- { no: 1, name: "available_methods", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
5372
- { no: 2, name: "suggested_method", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
5695
+ { no: 1, name: "available_methods", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }
5373
5696
  ]);
5374
5697
  }
5375
5698
  create(value?: PartialMessage<ResolvePrincipalResponse>): ResolvePrincipalResponse {
@@ -5387,9 +5710,6 @@ class ResolvePrincipalResponse$Type extends MessageType<ResolvePrincipalResponse
5387
5710
  case /* repeated string available_methods */ 1:
5388
5711
  message.availableMethods.push(reader.string());
5389
5712
  break;
5390
- case /* optional string suggested_method */ 2:
5391
- message.suggestedMethod = reader.string();
5392
- break;
5393
5713
  default:
5394
5714
  let u = options.readUnknownField;
5395
5715
  if (u === "throw")
@@ -5405,9 +5725,6 @@ class ResolvePrincipalResponse$Type extends MessageType<ResolvePrincipalResponse
5405
5725
  /* repeated string available_methods = 1; */
5406
5726
  for (let i = 0; i < message.availableMethods.length; i++)
5407
5727
  writer.tag(1, WireType.LengthDelimited).string(message.availableMethods[i]);
5408
- /* optional string suggested_method = 2; */
5409
- if (message.suggestedMethod !== undefined)
5410
- writer.tag(2, WireType.LengthDelimited).string(message.suggestedMethod);
5411
5728
  let u = options.writeUnknownFields;
5412
5729
  if (u !== false)
5413
5730
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -6686,7 +7003,10 @@ class VerifyOtpResponse$Type extends MessageType<VerifyOtpResponse> {
6686
7003
  constructor() {
6687
7004
  super("sid.v1.authn.VerifyOtpResponse", [
6688
7005
  { no: 1, name: "verified", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
6689
- { no: 2, name: "redirect_to", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
7006
+ { no: 2, name: "redirect_to", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
7007
+ { no: 3, name: "session_id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
7008
+ { no: 4, name: "access_token", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
7009
+ { no: 5, name: "expires_in", kind: "scalar", opt: true, T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ }
6690
7010
  ]);
6691
7011
  }
6692
7012
  create(value?: PartialMessage<VerifyOtpResponse>): VerifyOtpResponse {
@@ -6707,6 +7027,15 @@ class VerifyOtpResponse$Type extends MessageType<VerifyOtpResponse> {
6707
7027
  case /* optional string redirect_to */ 2:
6708
7028
  message.redirectTo = reader.string();
6709
7029
  break;
7030
+ case /* optional string session_id */ 3:
7031
+ message.sessionId = reader.string();
7032
+ break;
7033
+ case /* optional string access_token */ 4:
7034
+ message.accessToken = reader.string();
7035
+ break;
7036
+ case /* optional int64 expires_in */ 5:
7037
+ message.expiresIn = reader.int64().toBigInt();
7038
+ break;
6710
7039
  default:
6711
7040
  let u = options.readUnknownField;
6712
7041
  if (u === "throw")
@@ -6725,6 +7054,15 @@ class VerifyOtpResponse$Type extends MessageType<VerifyOtpResponse> {
6725
7054
  /* optional string redirect_to = 2; */
6726
7055
  if (message.redirectTo !== undefined)
6727
7056
  writer.tag(2, WireType.LengthDelimited).string(message.redirectTo);
7057
+ /* optional string session_id = 3; */
7058
+ if (message.sessionId !== undefined)
7059
+ writer.tag(3, WireType.LengthDelimited).string(message.sessionId);
7060
+ /* optional string access_token = 4; */
7061
+ if (message.accessToken !== undefined)
7062
+ writer.tag(4, WireType.LengthDelimited).string(message.accessToken);
7063
+ /* optional int64 expires_in = 5; */
7064
+ if (message.expiresIn !== undefined)
7065
+ writer.tag(5, WireType.Varint).int64(message.expiresIn);
6728
7066
  let u = options.writeUnknownFields;
6729
7067
  if (u !== false)
6730
7068
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -9026,7 +9364,8 @@ class VerifyPasswordResetResponse$Type extends MessageType<VerifyPasswordResetRe
9026
9364
  constructor() {
9027
9365
  super("sid.v1.authn.VerifyPasswordResetResponse", [
9028
9366
  { no: 1, name: "reset_session_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
9029
- { no: 2, name: "expires_in", kind: "scalar", T: 5 /*ScalarType.INT32*/ }
9367
+ { no: 2, name: "expires_in", kind: "scalar", T: 5 /*ScalarType.INT32*/ },
9368
+ { no: 3, name: "history", kind: "message", T: () => PasswordHistoryContext }
9030
9369
  ]);
9031
9370
  }
9032
9371
  create(value?: PartialMessage<VerifyPasswordResetResponse>): VerifyPasswordResetResponse {
@@ -9048,6 +9387,9 @@ class VerifyPasswordResetResponse$Type extends MessageType<VerifyPasswordResetRe
9048
9387
  case /* int32 expires_in */ 2:
9049
9388
  message.expiresIn = reader.int32();
9050
9389
  break;
9390
+ case /* sid.v1.authn.PasswordHistoryContext history */ 3:
9391
+ message.history = PasswordHistoryContext.internalBinaryRead(reader, reader.uint32(), options, message.history);
9392
+ break;
9051
9393
  default:
9052
9394
  let u = options.readUnknownField;
9053
9395
  if (u === "throw")
@@ -9066,6 +9408,9 @@ class VerifyPasswordResetResponse$Type extends MessageType<VerifyPasswordResetRe
9066
9408
  /* int32 expires_in = 2; */
9067
9409
  if (message.expiresIn !== 0)
9068
9410
  writer.tag(2, WireType.Varint).int32(message.expiresIn);
9411
+ /* sid.v1.authn.PasswordHistoryContext history = 3; */
9412
+ if (message.history)
9413
+ PasswordHistoryContext.internalBinaryWrite(message.history, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
9069
9414
  let u = options.writeUnknownFields;
9070
9415
  if (u !== false)
9071
9416
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -9077,25 +9422,120 @@ class VerifyPasswordResetResponse$Type extends MessageType<VerifyPasswordResetRe
9077
9422
  */
9078
9423
  export const VerifyPasswordResetResponse = new VerifyPasswordResetResponse$Type();
9079
9424
  // @generated message type with reflection information, may provide speed optimized methods
9425
+ class ExecutePasswordResetRequest$Type extends MessageType<ExecutePasswordResetRequest> {
9426
+ constructor() {
9427
+ super("sid.v1.authn.ExecutePasswordResetRequest", [
9428
+ { no: 1, name: "operation_id", kind: "message", T: () => PasswordOperationId },
9429
+ { no: 2, name: "registration_request", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }
9430
+ ]);
9431
+ }
9432
+ create(value?: PartialMessage<ExecutePasswordResetRequest>): ExecutePasswordResetRequest {
9433
+ const message = globalThis.Object.create((this.messagePrototype!));
9434
+ message.registrationRequest = new Uint8Array(0);
9435
+ if (value !== undefined)
9436
+ reflectionMergePartial<ExecutePasswordResetRequest>(this, message, value);
9437
+ return message;
9438
+ }
9439
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExecutePasswordResetRequest): ExecutePasswordResetRequest {
9440
+ let message = target ?? this.create(), end = reader.pos + length;
9441
+ while (reader.pos < end) {
9442
+ let [fieldNo, wireType] = reader.tag();
9443
+ switch (fieldNo) {
9444
+ case /* sid.v1.ids.PasswordOperationId operation_id */ 1:
9445
+ message.operationId = PasswordOperationId.internalBinaryRead(reader, reader.uint32(), options, message.operationId);
9446
+ break;
9447
+ case /* bytes registration_request */ 2:
9448
+ message.registrationRequest = reader.bytes();
9449
+ break;
9450
+ default:
9451
+ let u = options.readUnknownField;
9452
+ if (u === "throw")
9453
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
9454
+ let d = reader.skip(wireType);
9455
+ if (u !== false)
9456
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
9457
+ }
9458
+ }
9459
+ return message;
9460
+ }
9461
+ internalBinaryWrite(message: ExecutePasswordResetRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
9462
+ /* sid.v1.ids.PasswordOperationId operation_id = 1; */
9463
+ if (message.operationId)
9464
+ PasswordOperationId.internalBinaryWrite(message.operationId, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
9465
+ /* bytes registration_request = 2; */
9466
+ if (message.registrationRequest.length)
9467
+ writer.tag(2, WireType.LengthDelimited).bytes(message.registrationRequest);
9468
+ let u = options.writeUnknownFields;
9469
+ if (u !== false)
9470
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
9471
+ return writer;
9472
+ }
9473
+ }
9474
+ /**
9475
+ * @generated MessageType for protobuf message sid.v1.authn.ExecutePasswordResetRequest
9476
+ */
9477
+ export const ExecutePasswordResetRequest = new ExecutePasswordResetRequest$Type();
9478
+ // @generated message type with reflection information, may provide speed optimized methods
9479
+ class ExecutePasswordResetResponse$Type extends MessageType<ExecutePasswordResetResponse> {
9480
+ constructor() {
9481
+ super("sid.v1.authn.ExecutePasswordResetResponse", [
9482
+ { no: 1, name: "registration_response", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }
9483
+ ]);
9484
+ }
9485
+ create(value?: PartialMessage<ExecutePasswordResetResponse>): ExecutePasswordResetResponse {
9486
+ const message = globalThis.Object.create((this.messagePrototype!));
9487
+ message.registrationResponse = new Uint8Array(0);
9488
+ if (value !== undefined)
9489
+ reflectionMergePartial<ExecutePasswordResetResponse>(this, message, value);
9490
+ return message;
9491
+ }
9492
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExecutePasswordResetResponse): ExecutePasswordResetResponse {
9493
+ let message = target ?? this.create(), end = reader.pos + length;
9494
+ while (reader.pos < end) {
9495
+ let [fieldNo, wireType] = reader.tag();
9496
+ switch (fieldNo) {
9497
+ case /* bytes registration_response */ 1:
9498
+ message.registrationResponse = reader.bytes();
9499
+ break;
9500
+ default:
9501
+ let u = options.readUnknownField;
9502
+ if (u === "throw")
9503
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
9504
+ let d = reader.skip(wireType);
9505
+ if (u !== false)
9506
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
9507
+ }
9508
+ }
9509
+ return message;
9510
+ }
9511
+ internalBinaryWrite(message: ExecutePasswordResetResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
9512
+ /* bytes registration_response = 1; */
9513
+ if (message.registrationResponse.length)
9514
+ writer.tag(1, WireType.LengthDelimited).bytes(message.registrationResponse);
9515
+ let u = options.writeUnknownFields;
9516
+ if (u !== false)
9517
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
9518
+ return writer;
9519
+ }
9520
+ }
9521
+ /**
9522
+ * @generated MessageType for protobuf message sid.v1.authn.ExecutePasswordResetResponse
9523
+ */
9524
+ export const ExecutePasswordResetResponse = new ExecutePasswordResetResponse$Type();
9525
+ // @generated message type with reflection information, may provide speed optimized methods
9080
9526
  class CompletePasswordResetRequest$Type extends MessageType<CompletePasswordResetRequest> {
9081
9527
  constructor() {
9082
9528
  super("sid.v1.authn.CompletePasswordResetRequest", [
9083
9529
  { no: 1, name: "reset_session_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
9530
+ { no: 7, name: "operation_id", kind: "message", T: () => PasswordOperationId },
9084
9531
  { no: 2, name: "registration_record", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
9085
- { no: 3, name: "zkpp_proof", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
9086
- { no: 4, name: "zkpp_instances", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 12 /*ScalarType.BYTES*/ },
9087
- { no: 5, name: "history_commitment", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
9088
- { no: 6, name: "commitment_salt", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }
9532
+ { no: 8, name: "proof", kind: "message", T: () => PasswordRegistrationProof }
9089
9533
  ]);
9090
9534
  }
9091
9535
  create(value?: PartialMessage<CompletePasswordResetRequest>): CompletePasswordResetRequest {
9092
9536
  const message = globalThis.Object.create((this.messagePrototype!));
9093
9537
  message.resetSessionId = "";
9094
9538
  message.registrationRecord = new Uint8Array(0);
9095
- message.zkppProof = new Uint8Array(0);
9096
- message.zkppInstances = [];
9097
- message.historyCommitment = new Uint8Array(0);
9098
- message.commitmentSalt = new Uint8Array(0);
9099
9539
  if (value !== undefined)
9100
9540
  reflectionMergePartial<CompletePasswordResetRequest>(this, message, value);
9101
9541
  return message;
@@ -9108,20 +9548,14 @@ class CompletePasswordResetRequest$Type extends MessageType<CompletePasswordRese
9108
9548
  case /* string reset_session_id */ 1:
9109
9549
  message.resetSessionId = reader.string();
9110
9550
  break;
9551
+ case /* sid.v1.ids.PasswordOperationId operation_id */ 7:
9552
+ message.operationId = PasswordOperationId.internalBinaryRead(reader, reader.uint32(), options, message.operationId);
9553
+ break;
9111
9554
  case /* bytes registration_record */ 2:
9112
9555
  message.registrationRecord = reader.bytes();
9113
9556
  break;
9114
- case /* bytes zkpp_proof */ 3:
9115
- message.zkppProof = reader.bytes();
9116
- break;
9117
- case /* repeated bytes zkpp_instances */ 4:
9118
- message.zkppInstances.push(reader.bytes());
9119
- break;
9120
- case /* bytes history_commitment */ 5:
9121
- message.historyCommitment = reader.bytes();
9122
- break;
9123
- case /* bytes commitment_salt */ 6:
9124
- message.commitmentSalt = reader.bytes();
9557
+ case /* sid.v1.authn.PasswordRegistrationProof proof */ 8:
9558
+ message.proof = PasswordRegistrationProof.internalBinaryRead(reader, reader.uint32(), options, message.proof);
9125
9559
  break;
9126
9560
  default:
9127
9561
  let u = options.readUnknownField;
@@ -9141,18 +9575,12 @@ class CompletePasswordResetRequest$Type extends MessageType<CompletePasswordRese
9141
9575
  /* bytes registration_record = 2; */
9142
9576
  if (message.registrationRecord.length)
9143
9577
  writer.tag(2, WireType.LengthDelimited).bytes(message.registrationRecord);
9144
- /* bytes zkpp_proof = 3; */
9145
- if (message.zkppProof.length)
9146
- writer.tag(3, WireType.LengthDelimited).bytes(message.zkppProof);
9147
- /* repeated bytes zkpp_instances = 4; */
9148
- for (let i = 0; i < message.zkppInstances.length; i++)
9149
- writer.tag(4, WireType.LengthDelimited).bytes(message.zkppInstances[i]);
9150
- /* bytes history_commitment = 5; */
9151
- if (message.historyCommitment.length)
9152
- writer.tag(5, WireType.LengthDelimited).bytes(message.historyCommitment);
9153
- /* bytes commitment_salt = 6; */
9154
- if (message.commitmentSalt.length)
9155
- writer.tag(6, WireType.LengthDelimited).bytes(message.commitmentSalt);
9578
+ /* sid.v1.ids.PasswordOperationId operation_id = 7; */
9579
+ if (message.operationId)
9580
+ PasswordOperationId.internalBinaryWrite(message.operationId, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
9581
+ /* sid.v1.authn.PasswordRegistrationProof proof = 8; */
9582
+ if (message.proof)
9583
+ PasswordRegistrationProof.internalBinaryWrite(message.proof, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
9156
9584
  let u = options.writeUnknownFields;
9157
9585
  if (u !== false)
9158
9586
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -9243,12 +9671,11 @@ export const AuthService = new ServiceType("sid.v1.authn.AuthService", [
9243
9671
  { name: "WebAuthnRegistrationFinish", idempotency: "IDEMPOTENT", options: { "google.api.http": { post: "/v1/auth/webauthn/registration/finish", body: "*" } }, I: WebAuthnRegistrationFinishRequest, O: WebAuthnRegistrationFinishResponse },
9244
9672
  { name: "WebAuthnAuthenticationStart", idempotency: "NO_SIDE_EFFECTS", options: { "google.api.http": { post: "/v1/auth/webauthn/authentication/start", body: "*" } }, I: WebAuthnAuthenticationStartRequest, O: WebAuthnAuthenticationStartResponse },
9245
9673
  { name: "WebAuthnAuthenticationFinish", options: { "google.api.http": { post: "/v1/auth/webauthn/authentication/finish", body: "*" } }, I: WebAuthnAuthenticationFinishRequest, O: WebAuthnAuthenticationFinishResponse },
9246
- { name: "OAuth2Authorize", options: { "google.api.http": { post: "/v1/oauth2/authorize", body: "*" } }, I: OAuth2AuthorizeRequest, O: OAuth2AuthorizeResponse },
9247
- { name: "OAuth2Token", options: { "google.api.http": { post: "/v1/oauth2/token", body: "*" } }, I: OAuth2TokenRequest, O: OAuth2TokenResponse },
9248
- { name: "OAuth2Introspect", idempotency: "NO_SIDE_EFFECTS", options: { "google.api.http": { post: "/v1/oauth2/introspect", body: "*" } }, I: OAuth2IntrospectRequest, O: OAuth2IntrospectResponse },
9249
- { name: "OAuth2Revoke", idempotency: "IDEMPOTENT", options: { "google.api.http": { post: "/v1/oauth2/revoke", body: "*" } }, I: OAuth2RevokeRequest, O: OAuth2RevokeResponse },
9250
- { name: "StartDeviceAuthorization", options: { "google.api.http": { post: "/v1/oauth2/device", body: "*" } }, I: DeviceAuthorizationRequest, O: DeviceAuthorizationResponse },
9251
- { name: "PollDeviceToken", idempotency: "NO_SIDE_EFFECTS", options: { "google.api.http": { post: "/v1/oauth2/device/token", body: "*" } }, I: PollDeviceTokenRequest, O: OAuth2TokenResponse },
9674
+ { name: "OAuth2Authorize", options: {}, I: OAuth2AuthorizeRequest, O: OAuth2AuthorizeResponse },
9675
+ { name: "OAuth2Token", options: {}, I: OAuth2TokenRequest, O: OAuth2TokenResponse },
9676
+ { name: "OAuth2Introspect", idempotency: "NO_SIDE_EFFECTS", options: {}, I: OAuth2IntrospectRequest, O: OAuth2IntrospectResponse },
9677
+ { name: "OAuth2Revoke", idempotency: "IDEMPOTENT", options: {}, I: OAuth2RevokeRequest, O: OAuth2RevokeResponse },
9678
+ { name: "StartDeviceAuthorization", options: {}, I: DeviceAuthorizationRequest, O: DeviceAuthorizationResponse },
9252
9679
  { name: "SubmitDeviceUserCode", idempotency: "IDEMPOTENT", options: { "google.api.http": { post: "/v1/oauth2/device/submit", body: "*" } }, I: SubmitDeviceUserCodeRequest, O: SubmitDeviceUserCodeResponse },
9253
9680
  { name: "RequestMagicLink", options: { "google.api.http": { post: "/v1/auth/magic-link/request", body: "*" } }, I: RequestMagicLinkRequest, O: RequestMagicLinkResponse },
9254
9681
  { name: "VerifyMagicLink", options: { "google.api.http": { post: "/v1/auth/magic-link/verify", body: "*" } }, I: VerifyMagicLinkRequest, O: VerifyMagicLinkResponse },
@@ -9287,5 +9714,6 @@ export const AuthService = new ServiceType("sid.v1.authn.AuthService", [
9287
9714
  { name: "ConfirmAccountDeletion", options: { "google.api.http": { post: "/v1/auth/delete-confirm", body: "*" } }, I: ConfirmAccountDeletionRequest, O: ConfirmAccountDeletionResponse },
9288
9715
  { name: "RequestPasswordReset", options: { "google.api.http": { post: "/v1/auth/password/reset/request", body: "*" } }, I: RequestPasswordResetRequest, O: RequestPasswordResetResponse },
9289
9716
  { name: "VerifyPasswordReset", options: { "google.api.http": { post: "/v1/auth/password/reset/verify", body: "*" } }, I: VerifyPasswordResetRequest, O: VerifyPasswordResetResponse },
9717
+ { name: "ExecutePasswordReset", options: { "google.api.http": { post: "/v1/auth/password/reset/execute", body: "*" } }, I: ExecutePasswordResetRequest, O: ExecutePasswordResetResponse },
9290
9718
  { name: "CompletePasswordReset", options: { "google.api.http": { post: "/v1/auth/password/reset/complete", body: "*" } }, I: CompletePasswordResetRequest, O: CompletePasswordResetResponse }
9291
9719
  ]);