@learncard/lca-api-service 1.3.2 → 1.5.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.
- package/.env.example +99 -2
- package/AGENTS.md +155 -44
- package/CHANGELOG.md +84 -0
- package/bootstrapLambda.test.ts +76 -0
- package/compose.env +5 -0
- package/config/config.dev.json +23 -0
- package/config/config.example.json +22 -0
- package/config/config.json +1 -0
- package/config/config.production.json +12 -0
- package/config/config.scouts.dev.json +11 -0
- package/config/config.scouts.production.json +11 -0
- package/dist/accesslayer/signing-authority/index.d.ts +8 -2
- package/dist/app.d.ts +361 -8
- package/dist/cache/challenges.d.ts +2 -0
- package/dist/cache/getDel.d.ts +2 -0
- package/dist/cache/getDel.test.d.ts +1 -0
- package/dist/cache/login-tickets.d.ts +12 -0
- package/dist/cache/recoverySessions.d.ts +42 -0
- package/dist/config/applyDockerStageConfig.d.ts +1 -0
- package/dist/config/cacheEnvironment.d.ts +16 -0
- package/dist/config/environment.d.ts +253 -2
- package/dist/config/environment.test.d.ts +1 -0
- package/dist/config/escrowBundleMode.test.d.ts +1 -0
- package/dist/config/escrowDeployment.test.d.ts +1 -0
- package/dist/config/oidcEnvironment.d.ts +74 -0
- package/dist/config/serverlessFunctionEnv.test.d.ts +1 -0
- package/dist/config/stageConfig.d.ts +62 -0
- package/dist/config/stageConfig.test.d.ts +1 -0
- package/dist/didkit_wasm_bg.wasm +0 -0
- package/dist/docker-entry.d.ts +1 -1
- package/dist/helpers/auth.helpers.d.ts +1 -1
- package/dist/helpers/escrowCancelLink.d.ts +7 -0
- package/dist/helpers/escrowCancelLink.test.d.ts +1 -0
- package/dist/helpers/escrowCancelToken.d.ts +4 -0
- package/dist/helpers/escrowCancelToken.test.d.ts +1 -0
- package/dist/helpers/keycloak.helpers.d.ts +23 -0
- package/dist/helpers/learnCard.signingAuthority.test.d.ts +1 -0
- package/dist/helpers/login-ticket.helpers.d.ts +31 -0
- package/dist/helpers/login-ticket.helpers.test.d.ts +1 -0
- package/dist/helpers/oidc.helpers.d.ts +47 -0
- package/dist/helpers/rate-limit.helpers.d.ts +6 -0
- package/dist/helpers/rate-limit.helpers.test.d.ts +1 -0
- package/dist/helpers/rateLimit.helpers.d.ts +4 -0
- package/dist/helpers/seedEncryption.helpers.d.ts +23 -0
- package/dist/helpers/seedEncryption.helpers.test.d.ts +1 -0
- package/dist/helpers/social-token.helpers.d.ts +19 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -2
- package/dist/jobs/escrowBlobRewrap.d.ts +9 -0
- package/dist/jobs/escrowHoldReminders.d.ts +12 -0
- package/dist/migrations/signingAuthoritySeeds.d.ts +13 -0
- package/dist/migrations/signingAuthoritySeedsCli.test.d.ts +1 -0
- package/dist/models/AuthSubject.d.ts +20 -0
- package/dist/models/EscrowHold.d.ts +153 -0
- package/dist/models/Notification.d.ts +5 -0
- package/dist/models/SigningAuthority.d.ts +7 -1
- package/dist/models/UserKey.d.ts +326 -3
- package/dist/models/UserKey.escrowPin.test.d.ts +1 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/oidc.d.ts +5 -0
- package/dist/routes/auth.d.ts +31 -0
- package/dist/routes/escrow.d.ts +164 -0
- package/dist/routes/index.d.ts +6 -0
- package/dist/routes/keys.d.ts +182 -7
- package/dist/routes/notifications.d.ts +5 -0
- package/dist/routes/qr-login.d.ts +1 -1
- package/dist/routes/signing-authority.d.ts +14 -0
- package/dist/services/escrow-enclave/blobIdentity.d.ts +10 -0
- package/dist/services/escrow-enclave/blobIdentity.test.d.ts +1 -0
- package/dist/services/escrow-enclave/cancellation.d.ts +3 -0
- package/dist/services/escrow-enclave/enclaveTrustAnchors.d.ts +1 -0
- package/dist/services/escrow-enclave/index.d.ts +25 -0
- package/dist/services/escrow-enclave/notifications.d.ts +24 -0
- package/dist/services/escrow-enclave/notifications.test.d.ts +1 -0
- package/dist/services/escrow-enclave/production.test.d.ts +1 -0
- package/dist/services/escrow-enclave/remoteEnclave.contract.test.d.ts +1 -0
- package/dist/services/escrow-enclave/remoteEnclave.d.ts +20 -0
- package/dist/services/escrow-enclave/remoteEnclave.test.d.ts +1 -0
- package/dist/services/escrow-enclave/remoteEnclave.tls.test.d.ts +1 -0
- package/dist/services/escrow-enclave/softwareEnclave.d.ts +27 -0
- package/dist/services/escrow-enclave/softwareEnclave.test.d.ts +1 -0
- package/dist/services/escrow-enclave/types.d.ts +111 -0
- package/dist/types/notifications.d.ts +5 -0
- package/dist/types/seed-encryption.d.ts +31 -0
- package/dist/types/seed-migration.d.ts +49 -0
- package/esbuildPlugins.cjs +1 -0
- package/lambda.ts +27 -112
- package/lambdaApp.ts +146 -0
- package/oidcLambda.test.ts +38 -0
- package/oidcLambda.ts +18 -0
- package/oidcLambdaApp.ts +11 -0
- package/package.json +30 -14
- package/scripts/README.md +88 -0
- package/scripts/check-seed-encryption-infrastructure.mjs +139 -0
- package/scripts/check-signing-authority-redis.mjs +93 -0
- package/scripts/escrow-blob-mode-report.test.ts +227 -0
- package/scripts/escrow-blob-mode-report.ts +465 -0
- package/scripts/keycloak-admin.ts +108 -0
- package/scripts/keycloak-provider-links.ts +147 -0
- package/scripts/migrate-signing-authority-seeds-local.sh +51 -0
- package/scripts/migrate-signing-authority-seeds.mjs +105 -0
- package/scripts/print-seed-rollout-flags.ts +21 -0
- package/scripts/provision-keycloak-users.ts +419 -0
- package/seedMigrationApp.test.ts +145 -0
- package/seedMigrationApp.ts +50 -0
- package/seedMigrationLambda.test.ts +40 -0
- package/seedMigrationLambda.ts +19 -0
- package/serverless-local.yml +28 -1
- package/serverless.function-env.cjs +58 -0
- package/serverless.yml +294 -26
- package/src/accesslayer/notifications/index.ts +9 -2
- package/src/accesslayer/signing-authority/create.ts +11 -7
- package/src/accesslayer/signing-authority/index.ts +4 -1
- package/src/app.ts +4 -0
- package/src/cache/challenges.ts +12 -2
- package/src/cache/getDel.test.ts +34 -0
- package/src/cache/getDel.ts +32 -0
- package/src/cache/in-memory-lru.ts +1 -0
- package/src/cache/index.ts +1 -1
- package/src/cache/login-tickets.ts +26 -0
- package/src/cache/recoverySessions.ts +252 -0
- package/src/config/applyDockerStageConfig.ts +6 -0
- package/src/config/cacheEnvironment.ts +34 -0
- package/src/config/environment.test.ts +159 -0
- package/src/config/environment.ts +164 -0
- package/src/config/escrowBundleMode.test.ts +52 -0
- package/src/config/escrowDeployment.test.ts +114 -0
- package/src/config/oidcEnvironment.ts +59 -0
- package/src/config/serverlessFunctionEnv.test.ts +98 -0
- package/src/config/stageConfig.test.ts +26 -0
- package/src/config/stageConfig.ts +24 -0
- package/src/docker-entry.ts +13 -0
- package/src/helpers/auth.helpers.ts +68 -30
- package/src/helpers/escrowCancelLink.test.ts +60 -0
- package/src/helpers/escrowCancelLink.ts +38 -0
- package/src/helpers/escrowCancelToken.test.ts +105 -0
- package/src/helpers/escrowCancelToken.ts +47 -0
- package/src/helpers/keycloak.helpers.ts +120 -0
- package/src/helpers/learnCard.helpers.test.ts +11 -1
- package/src/helpers/learnCard.helpers.ts +57 -45
- package/src/helpers/learnCard.signingAuthority.test.ts +194 -0
- package/src/helpers/login-ticket.helpers.test.ts +45 -0
- package/src/helpers/login-ticket.helpers.ts +91 -0
- package/src/helpers/oidc.helpers.ts +354 -0
- package/src/helpers/rate-limit.helpers.test.ts +61 -0
- package/src/helpers/rate-limit.helpers.ts +73 -0
- package/src/helpers/rateLimit.helpers.ts +112 -0
- package/src/helpers/seedEncryption.helpers.test.ts +427 -0
- package/src/helpers/seedEncryption.helpers.ts +372 -0
- package/src/helpers/signingAuthority.helpers.ts +4 -1
- package/src/helpers/social-token.helpers.ts +144 -0
- package/src/index.ts +1 -0
- package/src/jobs/escrowBlobRewrap.ts +121 -0
- package/src/jobs/escrowHoldReminders.ts +177 -0
- package/src/migrations/signingAuthoritySeeds.ts +430 -0
- package/src/migrations/signingAuthoritySeedsCli.test.ts +70 -0
- package/src/models/AuthSubject.ts +147 -0
- package/src/models/EscrowHold.ts +541 -0
- package/src/models/SigningAuthority.ts +14 -3
- package/src/models/UserKey.escrowPin.test.ts +49 -0
- package/src/models/UserKey.ts +1109 -40
- package/src/models/index.ts +2 -0
- package/src/models/pruneOrphanedRecoveryMethods.ts +3 -1
- package/src/oidc.ts +371 -0
- package/src/routes/auth.ts +173 -0
- package/src/routes/credentials.ts +8 -0
- package/src/routes/escrow.ts +1073 -0
- package/src/routes/firebase.ts +90 -48
- package/src/routes/index.ts +98 -5
- package/src/routes/keys.ts +1022 -174
- package/src/routes/qr-login.ts +51 -53
- package/src/routes/signing-authority.ts +39 -1
- package/src/services/delivery/adapters/postmark.adapter.ts +48 -1
- package/src/services/escrow-enclave/README.md +122 -0
- package/src/services/escrow-enclave/__fixtures__/tls/pinned-ca.pem +11 -0
- package/src/services/escrow-enclave/__fixtures__/tls/pinned-leaf.key +5 -0
- package/src/services/escrow-enclave/__fixtures__/tls/pinned-leaf.pem +12 -0
- package/src/services/escrow-enclave/__fixtures__/tls/rogue-ca.pem +11 -0
- package/src/services/escrow-enclave/__fixtures__/tls/rogue-leaf.key +5 -0
- package/src/services/escrow-enclave/__fixtures__/tls/rogue-leaf.pem +12 -0
- package/src/services/escrow-enclave/blobIdentity.test.ts +42 -0
- package/src/services/escrow-enclave/blobIdentity.ts +55 -0
- package/src/services/escrow-enclave/cancellation.ts +59 -0
- package/src/services/escrow-enclave/enclaveTrustAnchors.ts +34 -0
- package/src/services/escrow-enclave/index.ts +174 -0
- package/src/services/escrow-enclave/notifications.test.ts +377 -0
- package/src/services/escrow-enclave/notifications.ts +348 -0
- package/src/services/escrow-enclave/production.test.ts +34 -0
- package/src/services/escrow-enclave/remoteEnclave.contract.test.ts +344 -0
- package/src/services/escrow-enclave/remoteEnclave.test.ts +490 -0
- package/src/services/escrow-enclave/remoteEnclave.tls.test.ts +62 -0
- package/src/services/escrow-enclave/remoteEnclave.ts +263 -0
- package/src/services/escrow-enclave/softwareEnclave.test.ts +450 -0
- package/src/services/escrow-enclave/softwareEnclave.ts +254 -0
- package/src/services/escrow-enclave/types.ts +122 -0
- package/src/types/seed-encryption.ts +51 -0
- package/src/types/seed-migration.ts +61 -0
- package/test/auth-tickets.spec.ts +480 -0
- package/test/credentials.spec.ts +2 -0
- package/test/helpers/keycloak-broker.ts +181 -0
- package/test/helpers/live-mongo.ts +9 -0
- package/test/jobs/escrowBlobRewrap.spec.ts +262 -0
- package/test/jobs/escrowHoldReminders.spec.ts +319 -0
- package/test/keycloak-admin.spec.ts +58 -0
- package/test/keycloak-broker-roundtrip.integration.spec.ts +40 -0
- package/test/keycloak-migration.integration.spec.ts +266 -0
- package/test/keycloak-provider-links.spec.ts +201 -0
- package/test/keycloak-social-broker.integration.spec.ts +228 -0
- package/test/keycloak-verify.integration.spec.ts +100 -0
- package/test/keycloak-verify.spec.ts +307 -0
- package/test/keys-escrow.spec.ts +2328 -0
- package/test/keys-identity-rebind.spec.ts +456 -0
- package/test/keys-lifecycle-invariants.spec.ts +785 -0
- package/test/keys-recovery-confirmation.spec.ts +586 -0
- package/test/keys-recovery-rate-limit.spec.ts +123 -0
- package/test/keys-secret-leakage.spec.ts +265 -0
- package/test/models/authSubjectIndexes.spec.ts +132 -0
- package/test/models/escrow.spec.ts +572 -0
- package/test/notifications.spec.ts +4 -0
- package/test/oidc-e2e/broker.spec.ts +116 -0
- package/test/oidc-e2e/compose.yaml +33 -0
- package/test/oidc-e2e/fixtures.ts +245 -0
- package/test/oidc-e2e/lock.test.mjs +73 -0
- package/test/oidc-e2e/playwright.config.ts +21 -0
- package/test/oidc-e2e/run.mjs +312 -0
- package/test/oidc-e2e/tsconfig.json +10 -0
- package/test/oidc-e2e/types.ts +21 -0
- package/test/oidc.integration.spec.ts +54 -0
- package/test/oidc.spec.ts +697 -0
- package/test/oidcLambdaApp.boot.spec.ts +105 -0
- package/test/provision-keycloak-users.spec.ts +299 -0
- package/test/signing-authority-http.spec.ts +161 -0
- package/test/signing-authority-seed-migration.spec.ts +414 -0
- package/test/signing-authority.spec.ts +90 -0
- package/tsconfig.build.json +1 -1
- package/tsconfig.json +1 -0
- package/vitest.config.ts +24 -1
- package/vitest.integration.config.ts +25 -3
- package/dist/cache/signing-authority.d.ts +0 -6
- package/src/cache/signing-authority.ts +0 -37
package/dist/models/UserKey.d.ts
CHANGED
|
@@ -33,8 +33,14 @@ export declare const RecoveryMethodValidator: z.ZodObject<{
|
|
|
33
33
|
passkey: "passkey";
|
|
34
34
|
backup: "backup";
|
|
35
35
|
phrase: "phrase";
|
|
36
|
+
escrow: "escrow";
|
|
36
37
|
}>;
|
|
37
38
|
createdAt: z.ZodDate;
|
|
39
|
+
confirmationStatus: z.ZodOptional<z.ZodEnum<{
|
|
40
|
+
pending: "pending";
|
|
41
|
+
confirmed: "confirmed";
|
|
42
|
+
}>>;
|
|
43
|
+
confirmedAt: z.ZodOptional<z.ZodDate>;
|
|
38
44
|
credentialId: z.ZodOptional<z.ZodString>;
|
|
39
45
|
encryptedShare: z.ZodOptional<z.ZodObject<{
|
|
40
46
|
encryptedData: z.ZodString;
|
|
@@ -42,6 +48,10 @@ export declare const RecoveryMethodValidator: z.ZodObject<{
|
|
|
42
48
|
salt: z.ZodOptional<z.ZodString>;
|
|
43
49
|
}, z.core.$strip>>;
|
|
44
50
|
shareVersion: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
confirmationCodeHash: z.ZodOptional<z.ZodString>;
|
|
52
|
+
confirmationCodeExpiresAt: z.ZodOptional<z.ZodDate>;
|
|
53
|
+
confirmationAttempts: z.ZodOptional<z.ZodNumber>;
|
|
54
|
+
confirmationEmail: z.ZodOptional<z.ZodString>;
|
|
45
55
|
}, z.core.$strip>;
|
|
46
56
|
export declare const PreviousAuthShareValidator: z.ZodObject<{
|
|
47
57
|
authShare: z.ZodObject<{
|
|
@@ -52,7 +62,99 @@ export declare const PreviousAuthShareValidator: z.ZodObject<{
|
|
|
52
62
|
shareVersion: z.ZodNumber;
|
|
53
63
|
createdAt: z.ZodDate;
|
|
54
64
|
}, z.core.$strip>;
|
|
55
|
-
export declare const
|
|
65
|
+
export declare const EscrowEnvelopeValidator: z.ZodObject<{
|
|
66
|
+
version: z.ZodLiteral<1>;
|
|
67
|
+
algorithm: z.ZodLiteral<"P-256-HKDF-SHA256-AES-256-GCM">;
|
|
68
|
+
keyId: z.ZodString;
|
|
69
|
+
ephemeralPublicKey: z.ZodString;
|
|
70
|
+
salt: z.ZodString;
|
|
71
|
+
iv: z.ZodString;
|
|
72
|
+
ciphertext: z.ZodString;
|
|
73
|
+
}, z.core.$strict>;
|
|
74
|
+
export declare const EscrowBlobValidator: z.ZodObject<{
|
|
75
|
+
enrollmentEpoch: z.ZodNumber;
|
|
76
|
+
blobHash: z.ZodString;
|
|
77
|
+
envelope: z.ZodObject<{
|
|
78
|
+
version: z.ZodLiteral<1>;
|
|
79
|
+
algorithm: z.ZodLiteral<"P-256-HKDF-SHA256-AES-256-GCM">;
|
|
80
|
+
keyId: z.ZodString;
|
|
81
|
+
ephemeralPublicKey: z.ZodString;
|
|
82
|
+
salt: z.ZodString;
|
|
83
|
+
iv: z.ZodString;
|
|
84
|
+
ciphertext: z.ZodString;
|
|
85
|
+
}, z.core.$strict>;
|
|
86
|
+
enclaveKeyId: z.ZodString;
|
|
87
|
+
enclaveMode: z.ZodEnum<{
|
|
88
|
+
software: "software";
|
|
89
|
+
nitro: "nitro";
|
|
90
|
+
}>;
|
|
91
|
+
measurements: z.ZodObject<{
|
|
92
|
+
imageSha384: z.ZodOptional<z.ZodString>;
|
|
93
|
+
pcr0: z.ZodOptional<z.ZodString>;
|
|
94
|
+
pcr1: z.ZodOptional<z.ZodString>;
|
|
95
|
+
pcr2: z.ZodOptional<z.ZodString>;
|
|
96
|
+
}, z.core.$strip>;
|
|
97
|
+
shareVersion: z.ZodNumber;
|
|
98
|
+
createdAt: z.ZodDate;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
export type EscrowBlob = z.infer<typeof EscrowBlobValidator>;
|
|
101
|
+
export declare const EscrowPinSaltValidator: z.ZodString;
|
|
102
|
+
export declare const EscrowPinValidator: z.ZodObject<{
|
|
103
|
+
salt: z.ZodString;
|
|
104
|
+
failedAttempts: z.ZodNumber;
|
|
105
|
+
verifiedFailedAttempts: z.ZodOptional<z.ZodNumber>;
|
|
106
|
+
enabledAt: z.ZodDate;
|
|
107
|
+
disabledAt: z.ZodOptional<z.ZodDate>;
|
|
108
|
+
shareVersion: z.ZodNumber;
|
|
109
|
+
}, z.core.$strip>;
|
|
110
|
+
export declare const EscrowPinStatusValidator: z.ZodObject<{
|
|
111
|
+
state: z.ZodEnum<{
|
|
112
|
+
none: "none";
|
|
113
|
+
enabled: "enabled";
|
|
114
|
+
locked: "locked";
|
|
115
|
+
stale: "stale";
|
|
116
|
+
}>;
|
|
117
|
+
enabled: z.ZodBoolean;
|
|
118
|
+
attemptsRemaining: z.ZodNumber;
|
|
119
|
+
salt: z.ZodOptional<z.ZodString>;
|
|
120
|
+
}, z.core.$strip>;
|
|
121
|
+
export declare const getEscrowPinStatus: (userKey: MongoUserKeyType) => z.infer<typeof EscrowPinStatusValidator>;
|
|
122
|
+
declare const MongoUserKeyBaseValidator: z.ZodObject<{
|
|
123
|
+
escrowBlob: z.ZodOptional<z.ZodObject<{
|
|
124
|
+
enrollmentEpoch: z.ZodNumber;
|
|
125
|
+
blobHash: z.ZodString;
|
|
126
|
+
envelope: z.ZodObject<{
|
|
127
|
+
version: z.ZodLiteral<1>;
|
|
128
|
+
algorithm: z.ZodLiteral<"P-256-HKDF-SHA256-AES-256-GCM">;
|
|
129
|
+
keyId: z.ZodString;
|
|
130
|
+
ephemeralPublicKey: z.ZodString;
|
|
131
|
+
salt: z.ZodString;
|
|
132
|
+
iv: z.ZodString;
|
|
133
|
+
ciphertext: z.ZodString;
|
|
134
|
+
}, z.core.$strict>;
|
|
135
|
+
enclaveKeyId: z.ZodString;
|
|
136
|
+
enclaveMode: z.ZodEnum<{
|
|
137
|
+
software: "software";
|
|
138
|
+
nitro: "nitro";
|
|
139
|
+
}>;
|
|
140
|
+
measurements: z.ZodObject<{
|
|
141
|
+
imageSha384: z.ZodOptional<z.ZodString>;
|
|
142
|
+
pcr0: z.ZodOptional<z.ZodString>;
|
|
143
|
+
pcr1: z.ZodOptional<z.ZodString>;
|
|
144
|
+
pcr2: z.ZodOptional<z.ZodString>;
|
|
145
|
+
}, z.core.$strip>;
|
|
146
|
+
shareVersion: z.ZodNumber;
|
|
147
|
+
createdAt: z.ZodDate;
|
|
148
|
+
}, z.core.$strip>>;
|
|
149
|
+
escrowPin: z.ZodOptional<z.ZodObject<{
|
|
150
|
+
salt: z.ZodString;
|
|
151
|
+
failedAttempts: z.ZodNumber;
|
|
152
|
+
verifiedFailedAttempts: z.ZodOptional<z.ZodNumber>;
|
|
153
|
+
enabledAt: z.ZodDate;
|
|
154
|
+
disabledAt: z.ZodOptional<z.ZodDate>;
|
|
155
|
+
shareVersion: z.ZodNumber;
|
|
156
|
+
}, z.core.$strip>>;
|
|
157
|
+
escrowOptedOutAt: z.ZodOptional<z.ZodDate>;
|
|
56
158
|
_id: z.ZodOptional<z.ZodString>;
|
|
57
159
|
contactMethod: z.ZodObject<{
|
|
58
160
|
type: z.ZodEnum<{
|
|
@@ -103,8 +205,14 @@ export declare const MongoUserKeyValidator: z.ZodObject<{
|
|
|
103
205
|
passkey: "passkey";
|
|
104
206
|
backup: "backup";
|
|
105
207
|
phrase: "phrase";
|
|
208
|
+
escrow: "escrow";
|
|
106
209
|
}>;
|
|
107
210
|
createdAt: z.ZodDate;
|
|
211
|
+
confirmationStatus: z.ZodOptional<z.ZodEnum<{
|
|
212
|
+
pending: "pending";
|
|
213
|
+
confirmed: "confirmed";
|
|
214
|
+
}>>;
|
|
215
|
+
confirmedAt: z.ZodOptional<z.ZodDate>;
|
|
108
216
|
credentialId: z.ZodOptional<z.ZodString>;
|
|
109
217
|
encryptedShare: z.ZodOptional<z.ZodObject<{
|
|
110
218
|
encryptedData: z.ZodString;
|
|
@@ -112,15 +220,142 @@ export declare const MongoUserKeyValidator: z.ZodObject<{
|
|
|
112
220
|
salt: z.ZodOptional<z.ZodString>;
|
|
113
221
|
}, z.core.$strip>>;
|
|
114
222
|
shareVersion: z.ZodOptional<z.ZodNumber>;
|
|
223
|
+
confirmationCodeHash: z.ZodOptional<z.ZodString>;
|
|
224
|
+
confirmationCodeExpiresAt: z.ZodOptional<z.ZodDate>;
|
|
225
|
+
confirmationAttempts: z.ZodOptional<z.ZodNumber>;
|
|
226
|
+
confirmationEmail: z.ZodOptional<z.ZodString>;
|
|
115
227
|
}, z.core.$strip>>>;
|
|
116
228
|
recoveryEmail: z.ZodOptional<z.ZodString>;
|
|
117
229
|
recoveryEmailVerifiedAt: z.ZodOptional<z.ZodDate>;
|
|
118
230
|
migratedFromWeb3Auth: z.ZodDefault<z.ZodBoolean>;
|
|
119
231
|
migratedAt: z.ZodOptional<z.ZodDate>;
|
|
232
|
+
sssActivationState: z.ZodOptional<z.ZodEnum<{
|
|
233
|
+
provisional: "provisional";
|
|
234
|
+
active: "active";
|
|
235
|
+
}>>;
|
|
236
|
+
provisionalCreatedAt: z.ZodOptional<z.ZodDate>;
|
|
120
237
|
createdAt: z.ZodDate;
|
|
121
238
|
updatedAt: z.ZodDate;
|
|
122
239
|
}, z.core.$strip>;
|
|
123
|
-
export
|
|
240
|
+
export declare const MongoUserKeyValidator: z.ZodObject<{
|
|
241
|
+
escrowBlob: z.ZodOptional<z.ZodObject<{
|
|
242
|
+
enrollmentEpoch: z.ZodNumber;
|
|
243
|
+
blobHash: z.ZodString;
|
|
244
|
+
envelope: z.ZodObject<{
|
|
245
|
+
version: z.ZodLiteral<1>;
|
|
246
|
+
algorithm: z.ZodLiteral<"P-256-HKDF-SHA256-AES-256-GCM">;
|
|
247
|
+
keyId: z.ZodString;
|
|
248
|
+
ephemeralPublicKey: z.ZodString;
|
|
249
|
+
salt: z.ZodString;
|
|
250
|
+
iv: z.ZodString;
|
|
251
|
+
ciphertext: z.ZodString;
|
|
252
|
+
}, z.core.$strict>;
|
|
253
|
+
enclaveKeyId: z.ZodString;
|
|
254
|
+
enclaveMode: z.ZodEnum<{
|
|
255
|
+
software: "software";
|
|
256
|
+
nitro: "nitro";
|
|
257
|
+
}>;
|
|
258
|
+
measurements: z.ZodObject<{
|
|
259
|
+
imageSha384: z.ZodOptional<z.ZodString>;
|
|
260
|
+
pcr0: z.ZodOptional<z.ZodString>;
|
|
261
|
+
pcr1: z.ZodOptional<z.ZodString>;
|
|
262
|
+
pcr2: z.ZodOptional<z.ZodString>;
|
|
263
|
+
}, z.core.$strip>;
|
|
264
|
+
shareVersion: z.ZodNumber;
|
|
265
|
+
createdAt: z.ZodDate;
|
|
266
|
+
}, z.core.$strip>>;
|
|
267
|
+
escrowPin: z.ZodOptional<z.ZodObject<{
|
|
268
|
+
salt: z.ZodString;
|
|
269
|
+
failedAttempts: z.ZodNumber;
|
|
270
|
+
verifiedFailedAttempts: z.ZodOptional<z.ZodNumber>;
|
|
271
|
+
enabledAt: z.ZodDate;
|
|
272
|
+
disabledAt: z.ZodOptional<z.ZodDate>;
|
|
273
|
+
shareVersion: z.ZodNumber;
|
|
274
|
+
}, z.core.$strip>>;
|
|
275
|
+
escrowOptedOutAt: z.ZodOptional<z.ZodDate>;
|
|
276
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
277
|
+
contactMethod: z.ZodObject<{
|
|
278
|
+
type: z.ZodEnum<{
|
|
279
|
+
email: "email";
|
|
280
|
+
phone: "phone";
|
|
281
|
+
}>;
|
|
282
|
+
value: z.ZodString;
|
|
283
|
+
}, z.core.$strip>;
|
|
284
|
+
authProviders: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
285
|
+
type: z.ZodEnum<{
|
|
286
|
+
firebase: "firebase";
|
|
287
|
+
supertokens: "supertokens";
|
|
288
|
+
keycloak: "keycloak";
|
|
289
|
+
oidc: "oidc";
|
|
290
|
+
}>;
|
|
291
|
+
id: z.ZodString;
|
|
292
|
+
}, z.core.$strip>>>;
|
|
293
|
+
primaryDid: z.ZodString;
|
|
294
|
+
linkedDids: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
295
|
+
keyProvider: z.ZodDefault<z.ZodEnum<{
|
|
296
|
+
web3auth: "web3auth";
|
|
297
|
+
sss: "sss";
|
|
298
|
+
}>>;
|
|
299
|
+
authShare: z.ZodOptional<z.ZodObject<{
|
|
300
|
+
encryptedData: z.ZodString;
|
|
301
|
+
encryptedDek: z.ZodString;
|
|
302
|
+
iv: z.ZodString;
|
|
303
|
+
}, z.core.$strip>>;
|
|
304
|
+
shareVersion: z.ZodDefault<z.ZodNumber>;
|
|
305
|
+
shareUpdatedAt: z.ZodOptional<z.ZodDate>;
|
|
306
|
+
previousAuthShares: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
307
|
+
authShare: z.ZodObject<{
|
|
308
|
+
encryptedData: z.ZodString;
|
|
309
|
+
encryptedDek: z.ZodString;
|
|
310
|
+
iv: z.ZodString;
|
|
311
|
+
}, z.core.$strip>;
|
|
312
|
+
shareVersion: z.ZodNumber;
|
|
313
|
+
createdAt: z.ZodDate;
|
|
314
|
+
}, z.core.$strip>>>;
|
|
315
|
+
securityLevel: z.ZodDefault<z.ZodEnum<{
|
|
316
|
+
basic: "basic";
|
|
317
|
+
enhanced: "enhanced";
|
|
318
|
+
advanced: "advanced";
|
|
319
|
+
}>>;
|
|
320
|
+
recoveryMethods: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
321
|
+
type: z.ZodEnum<{
|
|
322
|
+
email: "email";
|
|
323
|
+
passkey: "passkey";
|
|
324
|
+
backup: "backup";
|
|
325
|
+
phrase: "phrase";
|
|
326
|
+
escrow: "escrow";
|
|
327
|
+
}>;
|
|
328
|
+
createdAt: z.ZodDate;
|
|
329
|
+
confirmationStatus: z.ZodOptional<z.ZodEnum<{
|
|
330
|
+
pending: "pending";
|
|
331
|
+
confirmed: "confirmed";
|
|
332
|
+
}>>;
|
|
333
|
+
confirmedAt: z.ZodOptional<z.ZodDate>;
|
|
334
|
+
credentialId: z.ZodOptional<z.ZodString>;
|
|
335
|
+
encryptedShare: z.ZodOptional<z.ZodObject<{
|
|
336
|
+
encryptedData: z.ZodString;
|
|
337
|
+
iv: z.ZodString;
|
|
338
|
+
salt: z.ZodOptional<z.ZodString>;
|
|
339
|
+
}, z.core.$strip>>;
|
|
340
|
+
shareVersion: z.ZodOptional<z.ZodNumber>;
|
|
341
|
+
confirmationCodeHash: z.ZodOptional<z.ZodString>;
|
|
342
|
+
confirmationCodeExpiresAt: z.ZodOptional<z.ZodDate>;
|
|
343
|
+
confirmationAttempts: z.ZodOptional<z.ZodNumber>;
|
|
344
|
+
confirmationEmail: z.ZodOptional<z.ZodString>;
|
|
345
|
+
}, z.core.$strip>>>;
|
|
346
|
+
recoveryEmail: z.ZodOptional<z.ZodString>;
|
|
347
|
+
recoveryEmailVerifiedAt: z.ZodOptional<z.ZodDate>;
|
|
348
|
+
migratedFromWeb3Auth: z.ZodDefault<z.ZodBoolean>;
|
|
349
|
+
migratedAt: z.ZodOptional<z.ZodDate>;
|
|
350
|
+
sssActivationState: z.ZodOptional<z.ZodEnum<{
|
|
351
|
+
provisional: "provisional";
|
|
352
|
+
active: "active";
|
|
353
|
+
}>>;
|
|
354
|
+
provisionalCreatedAt: z.ZodOptional<z.ZodDate>;
|
|
355
|
+
createdAt: z.ZodDate;
|
|
356
|
+
updatedAt: z.ZodDate;
|
|
357
|
+
}, z.core.$loose>;
|
|
358
|
+
export type MongoUserKeyType = z.infer<typeof MongoUserKeyBaseValidator>;
|
|
124
359
|
export type ContactMethod = z.infer<typeof ContactMethodValidator>;
|
|
125
360
|
export type AuthProviderMapping = z.infer<typeof AuthProviderMappingValidator>;
|
|
126
361
|
export type ServerEncryptedShare = z.infer<typeof ServerEncryptedShareValidator>;
|
|
@@ -128,6 +363,13 @@ export type EncryptedShare = z.infer<typeof EncryptedShareValidator>;
|
|
|
128
363
|
export type RecoveryMethod = z.infer<typeof RecoveryMethodValidator>;
|
|
129
364
|
export type PreviousAuthShare = z.infer<typeof PreviousAuthShareValidator>;
|
|
130
365
|
export declare const MAX_PREVIOUS_AUTH_SHARES = 5;
|
|
366
|
+
export declare const PROVISIONAL_MIGRATION_TTL_MS: number;
|
|
367
|
+
export declare class UserKeyVersionConflictError extends Error {
|
|
368
|
+
constructor();
|
|
369
|
+
}
|
|
370
|
+
export declare const getSssActivationState: (userKey: MongoUserKeyType) => "provisional" | "active";
|
|
371
|
+
export declare const isRecoveryMethodConfirmed: (userKey: MongoUserKeyType, method: RecoveryMethod) => boolean;
|
|
372
|
+
export declare const hasActivatableRecoveryMethod: (userKey: MongoUserKeyType) => boolean;
|
|
131
373
|
export { pruneOrphanedRecoveryMethods };
|
|
132
374
|
export declare const getUserKeysCollection: () => import("mongodb").Collection<{
|
|
133
375
|
contactMethod: {
|
|
@@ -153,8 +395,10 @@ export declare const getUserKeysCollection: () => import("mongodb").Collection<{
|
|
|
153
395
|
}[];
|
|
154
396
|
securityLevel: "basic" | "enhanced" | "advanced";
|
|
155
397
|
recoveryMethods: {
|
|
156
|
-
type: "email" | "passkey" | "backup" | "phrase";
|
|
398
|
+
type: "email" | "passkey" | "backup" | "phrase" | "escrow";
|
|
157
399
|
createdAt: Date;
|
|
400
|
+
confirmationStatus?: "pending" | "confirmed" | undefined;
|
|
401
|
+
confirmedAt?: Date | undefined;
|
|
158
402
|
credentialId?: string | undefined;
|
|
159
403
|
encryptedShare?: {
|
|
160
404
|
encryptedData: string;
|
|
@@ -162,10 +406,46 @@ export declare const getUserKeysCollection: () => import("mongodb").Collection<{
|
|
|
162
406
|
salt?: string | undefined;
|
|
163
407
|
} | undefined;
|
|
164
408
|
shareVersion?: number | undefined;
|
|
409
|
+
confirmationCodeHash?: string | undefined;
|
|
410
|
+
confirmationCodeExpiresAt?: Date | undefined;
|
|
411
|
+
confirmationAttempts?: number | undefined;
|
|
412
|
+
confirmationEmail?: string | undefined;
|
|
165
413
|
}[];
|
|
166
414
|
migratedFromWeb3Auth: boolean;
|
|
167
415
|
createdAt: Date;
|
|
168
416
|
updatedAt: Date;
|
|
417
|
+
escrowBlob?: {
|
|
418
|
+
enrollmentEpoch: number;
|
|
419
|
+
blobHash: string;
|
|
420
|
+
envelope: {
|
|
421
|
+
version: 1;
|
|
422
|
+
algorithm: "P-256-HKDF-SHA256-AES-256-GCM";
|
|
423
|
+
keyId: string;
|
|
424
|
+
ephemeralPublicKey: string;
|
|
425
|
+
salt: string;
|
|
426
|
+
iv: string;
|
|
427
|
+
ciphertext: string;
|
|
428
|
+
};
|
|
429
|
+
enclaveKeyId: string;
|
|
430
|
+
enclaveMode: "software" | "nitro";
|
|
431
|
+
measurements: {
|
|
432
|
+
imageSha384?: string | undefined;
|
|
433
|
+
pcr0?: string | undefined;
|
|
434
|
+
pcr1?: string | undefined;
|
|
435
|
+
pcr2?: string | undefined;
|
|
436
|
+
};
|
|
437
|
+
shareVersion: number;
|
|
438
|
+
createdAt: Date;
|
|
439
|
+
} | undefined;
|
|
440
|
+
escrowPin?: {
|
|
441
|
+
salt: string;
|
|
442
|
+
failedAttempts: number;
|
|
443
|
+
enabledAt: Date;
|
|
444
|
+
shareVersion: number;
|
|
445
|
+
verifiedFailedAttempts?: number | undefined;
|
|
446
|
+
disabledAt?: Date | undefined;
|
|
447
|
+
} | undefined;
|
|
448
|
+
escrowOptedOutAt?: Date | undefined;
|
|
169
449
|
_id?: string | undefined;
|
|
170
450
|
authShare?: {
|
|
171
451
|
encryptedData: string;
|
|
@@ -176,16 +456,59 @@ export declare const getUserKeysCollection: () => import("mongodb").Collection<{
|
|
|
176
456
|
recoveryEmail?: string | undefined;
|
|
177
457
|
recoveryEmailVerifiedAt?: Date | undefined;
|
|
178
458
|
migratedAt?: Date | undefined;
|
|
459
|
+
sssActivationState?: "provisional" | "active" | undefined;
|
|
460
|
+
provisionalCreatedAt?: Date | undefined;
|
|
179
461
|
}>;
|
|
180
462
|
export declare const createUserKeysIndexes: () => Promise<void>;
|
|
463
|
+
export declare const ensureUserKeysIndexes: () => Promise<void>;
|
|
181
464
|
export declare const findUserKeyByContactMethod: (contactMethod: ContactMethod) => Promise<MongoUserKeyType | null>;
|
|
182
465
|
export declare const findUserKeyByAuthProvider: (providerType: string, providerId: string) => Promise<MongoUserKeyType | null>;
|
|
183
466
|
export declare const findUserKeyByDid: (did: string) => Promise<MongoUserKeyType | null>;
|
|
467
|
+
export declare const findUniqueUserKeyByVerifiedRecoveryEmail: (email: string) => Promise<MongoUserKeyType | null>;
|
|
184
468
|
export declare const findAuthShareByVersion: (userKey: MongoUserKeyType, version: number) => ServerEncryptedShare | null;
|
|
185
469
|
export declare const upsertUserKey: (contactMethod: ContactMethod, data: Partial<Omit<MongoUserKeyType, "_id" | "contactMethod" | "createdAt">>) => Promise<MongoUserKeyType>;
|
|
470
|
+
export declare const upsertUserKeyByAuthProvider: (contactMethod: ContactMethod, authProvider: AuthProviderMapping, data: Partial<Omit<MongoUserKeyType, "_id" | "contactMethod" | "createdAt" | "authProviders">>, expectedVersion?: number) => Promise<MongoUserKeyType>;
|
|
186
471
|
export declare const addAuthProviderToUserKey: (contactMethod: ContactMethod, authProvider: AuthProviderMapping) => Promise<void>;
|
|
187
472
|
export declare const addRecoveryMethodToUserKey: (contactMethod: ContactMethod, recoveryMethod: RecoveryMethod) => Promise<void>;
|
|
473
|
+
export declare const setEscrowBlobByAuthProvider: (authProvider: AuthProviderMapping, blob: Omit<EscrowBlob, "enrollmentEpoch" | "blobHash">, expectedShareVersion: number, pin?: {
|
|
474
|
+
salt: string;
|
|
475
|
+
}, carryFrom?: {
|
|
476
|
+
blob: EscrowBlob;
|
|
477
|
+
pin: NonNullable<MongoUserKeyType["escrowPin"]>;
|
|
478
|
+
}) => Promise<MongoUserKeyType | null>;
|
|
479
|
+
export declare const rewrapEscrowBlobByAuthProvider: (authProvider: AuthProviderMapping, oldBlob: EscrowBlob, oldPin: MongoUserKeyType["escrowPin"], newEnvelope: EscrowBlob["envelope"], identity: Pick<EscrowBlob, "enclaveKeyId" | "enclaveMode" | "measurements">) => Promise<MongoUserKeyType | null>;
|
|
480
|
+
export declare const findUserKeysWithEscrowBlobKeyId: (keyIds: string[], limit: number) => Promise<MongoUserKeyType[]>;
|
|
481
|
+
export declare const clearEscrowByAuthProvider: (authProvider: AuthProviderMapping, { optOut }: {
|
|
482
|
+
optOut: boolean;
|
|
483
|
+
}) => Promise<MongoUserKeyType | null>;
|
|
484
|
+
export declare const setEscrowOptInByAuthProvider: (authProvider: AuthProviderMapping) => Promise<MongoUserKeyType | null>;
|
|
485
|
+
export declare const reserveEscrowPinAttempt: (authProvider: AuthProviderMapping, shareVersion: number, expectedCiphertext?: string) => Promise<MongoUserKeyType | null>;
|
|
486
|
+
export declare const refundEscrowPinAttempt: (authProvider: AuthProviderMapping, shareVersion: number, expectedCiphertext: string) => Promise<void>;
|
|
487
|
+
export declare const recordEscrowPinFailure: (authProvider: AuthProviderMapping, shareVersion: number, expectedCiphertext: string) => Promise<MongoUserKeyType | null>;
|
|
488
|
+
export declare const disableEscrowPin: (authProvider: AuthProviderMapping, shareVersion?: number, expectedCiphertext?: string) => Promise<boolean>;
|
|
489
|
+
export declare const addRecoveryMethodToUserKeyByAuthProvider: (authProvider: AuthProviderMapping, recoveryMethod: RecoveryMethod) => Promise<void>;
|
|
490
|
+
export declare const removeRecoveryMethodFromUserKeyByAuthProvider: (authProvider: AuthProviderMapping, type: RecoveryMethod["type"], credentialId?: string) => Promise<void>;
|
|
491
|
+
export declare const incrementRecoveryConfirmationAttemptsByAuthProvider: (authProvider: AuthProviderMapping, shareVersion: number) => Promise<boolean>;
|
|
492
|
+
export declare const confirmRecoveryMethodByAuthProvider: (authProvider: AuthProviderMapping, type: RecoveryMethod["type"], shareVersion: number, credentialId?: string) => Promise<boolean>;
|
|
188
493
|
export declare const markUserKeyMigrated: (contactMethod: ContactMethod) => Promise<void>;
|
|
494
|
+
export declare const markUserKeyMigratedByAuthProvider: (authProvider: AuthProviderMapping) => Promise<void>;
|
|
495
|
+
export declare const markUserKeyMigrationProvisionalByAuthProvider: (authProvider: AuthProviderMapping, provisionalCreatedAt: Date) => Promise<boolean>;
|
|
496
|
+
export declare const activateUserKeyByAuthProvider: (authProvider: AuthProviderMapping, shareVersion: number, isMigration: boolean) => Promise<boolean>;
|
|
497
|
+
export declare const purgeExpiredProvisionalMigrationByAuthProvider: (authProvider: AuthProviderMapping, now?: Date) => Promise<boolean>;
|
|
189
498
|
export declare const setRecoveryEmail: (contactMethod: ContactMethod, email: string) => Promise<void>;
|
|
499
|
+
export declare const setRecoveryEmailByAuthProvider: (authProvider: AuthProviderMapping, email: string) => Promise<void>;
|
|
190
500
|
export declare const upgradeContactMethod: (oldContactMethod: ContactMethod, newContactMethod: ContactMethod) => Promise<boolean>;
|
|
501
|
+
export declare const upgradeContactMethodByAuthProvider: (authProvider: AuthProviderMapping, expectedOldContactMethod: ContactMethod, newContactMethod: ContactMethod) => Promise<boolean>;
|
|
191
502
|
export declare const deleteUserKey: (contactMethod: ContactMethod) => Promise<void>;
|
|
503
|
+
export declare const deleteUserKeyByAuthProvider: (authProvider: AuthProviderMapping) => Promise<void>;
|
|
504
|
+
export interface CompleteIdentityRebindInput {
|
|
505
|
+
oldAuthProvider: AuthProviderMapping;
|
|
506
|
+
newAuthProvider: AuthProviderMapping;
|
|
507
|
+
newContactMethod: ContactMethod;
|
|
508
|
+
primaryDid: string;
|
|
509
|
+
authShare: ServerEncryptedShare;
|
|
510
|
+
}
|
|
511
|
+
export declare const completeIdentityRebind: (input: CompleteIdentityRebindInput) => Promise<{
|
|
512
|
+
shareVersion: number;
|
|
513
|
+
methodsRequiringConfirmation: RecoveryMethod["type"][];
|
|
514
|
+
} | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/models/index.d.ts
CHANGED
package/dist/oidc.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type FastifyPluginAsync } from 'fastify';
|
|
2
|
+
export declare const oidcFastifyPlugin: FastifyPluginAsync;
|
|
3
|
+
export declare const app: import("fastify").FastifyInstance<import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault> & PromiseLike<import("fastify").FastifyInstance<import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault>> & {
|
|
4
|
+
__linterBrands: "SafePromiseLike";
|
|
5
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare const authRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
2
|
+
ctx: import("@routes").Context;
|
|
3
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
4
|
+
errorShape: import("@trpc/server").TRPCDefaultErrorShape;
|
|
5
|
+
transformer: false;
|
|
6
|
+
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
7
|
+
requestLoginTicket: import("@trpc/server").TRPCMutationProcedure<{
|
|
8
|
+
input: {
|
|
9
|
+
email: string;
|
|
10
|
+
code: string;
|
|
11
|
+
};
|
|
12
|
+
output: {
|
|
13
|
+
success: boolean;
|
|
14
|
+
ticket?: string | undefined;
|
|
15
|
+
error?: string | undefined;
|
|
16
|
+
};
|
|
17
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
18
|
+
}>;
|
|
19
|
+
requestSocialLoginTicket: import("@trpc/server").TRPCMutationProcedure<{
|
|
20
|
+
input: {
|
|
21
|
+
provider: "google" | "apple";
|
|
22
|
+
idToken: string;
|
|
23
|
+
};
|
|
24
|
+
output: {
|
|
25
|
+
success: boolean;
|
|
26
|
+
ticket?: string | undefined;
|
|
27
|
+
error?: string | undefined;
|
|
28
|
+
};
|
|
29
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
30
|
+
}>;
|
|
31
|
+
}>>;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { type Context } from '@routes';
|
|
2
|
+
export declare const escrowRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
3
|
+
ctx: Context;
|
|
4
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
5
|
+
errorShape: import("@trpc/server").TRPCDefaultErrorShape;
|
|
6
|
+
transformer: false;
|
|
7
|
+
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
8
|
+
getAttestation: import("@trpc/server").TRPCQueryProcedure<{
|
|
9
|
+
input: {
|
|
10
|
+
nonce?: string | undefined;
|
|
11
|
+
};
|
|
12
|
+
output: {
|
|
13
|
+
attestation: {
|
|
14
|
+
mode: "software" | "nitro";
|
|
15
|
+
keyId: string;
|
|
16
|
+
publicKey: string;
|
|
17
|
+
measurements: {
|
|
18
|
+
imageSha384?: string | undefined;
|
|
19
|
+
pcr0?: string | undefined;
|
|
20
|
+
pcr1?: string | undefined;
|
|
21
|
+
pcr2?: string | undefined;
|
|
22
|
+
};
|
|
23
|
+
document: string;
|
|
24
|
+
issuedAt: string;
|
|
25
|
+
previousKeyIds?: string[] | undefined;
|
|
26
|
+
};
|
|
27
|
+
holdDurationMs: number;
|
|
28
|
+
};
|
|
29
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
30
|
+
}>;
|
|
31
|
+
enroll: import("@trpc/server").TRPCMutationProcedure<{
|
|
32
|
+
input: {
|
|
33
|
+
authToken: string;
|
|
34
|
+
providerType: "firebase" | "supertokens" | "keycloak" | "oidc";
|
|
35
|
+
envelope: {
|
|
36
|
+
version: 1;
|
|
37
|
+
algorithm: "P-256-HKDF-SHA256-AES-256-GCM";
|
|
38
|
+
keyId: string;
|
|
39
|
+
ephemeralPublicKey: string;
|
|
40
|
+
salt: string;
|
|
41
|
+
iv: string;
|
|
42
|
+
ciphertext: string;
|
|
43
|
+
};
|
|
44
|
+
shareVersion: number;
|
|
45
|
+
enclaveKeyId: string;
|
|
46
|
+
pinSalt?: string | undefined;
|
|
47
|
+
clearPin?: boolean | undefined;
|
|
48
|
+
};
|
|
49
|
+
output: {
|
|
50
|
+
success: true;
|
|
51
|
+
shareVersion: number;
|
|
52
|
+
};
|
|
53
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
54
|
+
}>;
|
|
55
|
+
remove: import("@trpc/server").TRPCMutationProcedure<{
|
|
56
|
+
input: {
|
|
57
|
+
authToken: string;
|
|
58
|
+
providerType: "firebase" | "supertokens" | "keycloak" | "oidc";
|
|
59
|
+
optOut: boolean;
|
|
60
|
+
};
|
|
61
|
+
output: {
|
|
62
|
+
success: true;
|
|
63
|
+
};
|
|
64
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
65
|
+
}>;
|
|
66
|
+
optIn: import("@trpc/server").TRPCMutationProcedure<{
|
|
67
|
+
input: {
|
|
68
|
+
authToken: string;
|
|
69
|
+
providerType: "firebase" | "supertokens" | "keycloak" | "oidc";
|
|
70
|
+
};
|
|
71
|
+
output: {
|
|
72
|
+
success: true;
|
|
73
|
+
};
|
|
74
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
75
|
+
}>;
|
|
76
|
+
startRecovery: import("@trpc/server").TRPCMutationProcedure<{
|
|
77
|
+
input: {
|
|
78
|
+
clientEphemeralPublicKey: string;
|
|
79
|
+
releasePolicy?: "pin" | "hold" | undefined;
|
|
80
|
+
restart?: boolean | undefined;
|
|
81
|
+
authToken?: string | undefined;
|
|
82
|
+
providerType?: "firebase" | "supertokens" | "keycloak" | "oidc" | undefined;
|
|
83
|
+
recoverySessionToken?: string | undefined;
|
|
84
|
+
};
|
|
85
|
+
output: {
|
|
86
|
+
holdId: string;
|
|
87
|
+
releasePolicy: "pin" | "hold";
|
|
88
|
+
requestedAt: string;
|
|
89
|
+
releaseAfter: string;
|
|
90
|
+
status: "pending";
|
|
91
|
+
resumeToken: string | null;
|
|
92
|
+
pinSalt?: string | undefined;
|
|
93
|
+
};
|
|
94
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
95
|
+
}>;
|
|
96
|
+
getStatus: import("@trpc/server").TRPCQueryProcedure<{
|
|
97
|
+
input: {
|
|
98
|
+
holdId?: string | undefined;
|
|
99
|
+
resumeToken?: string | undefined;
|
|
100
|
+
authToken?: string | undefined;
|
|
101
|
+
providerType?: "firebase" | "supertokens" | "keycloak" | "oidc" | undefined;
|
|
102
|
+
};
|
|
103
|
+
output: {
|
|
104
|
+
hold: {
|
|
105
|
+
holdId: string;
|
|
106
|
+
status: "pending" | "cancelled" | "completed" | "expired";
|
|
107
|
+
requestedAt: string;
|
|
108
|
+
releaseAfter: string;
|
|
109
|
+
releasePolicy: "pin" | "hold";
|
|
110
|
+
cancelledAt?: string | undefined;
|
|
111
|
+
completedAt?: string | undefined;
|
|
112
|
+
} | null;
|
|
113
|
+
};
|
|
114
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
115
|
+
}>;
|
|
116
|
+
cancelRecovery: import("@trpc/server").TRPCMutationProcedure<{
|
|
117
|
+
input: {
|
|
118
|
+
authToken: string;
|
|
119
|
+
providerType: "firebase" | "supertokens" | "keycloak" | "oidc";
|
|
120
|
+
};
|
|
121
|
+
output: {
|
|
122
|
+
success: true;
|
|
123
|
+
cancelled: boolean;
|
|
124
|
+
};
|
|
125
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
126
|
+
}>;
|
|
127
|
+
cancelRecoveryByLink: import("@trpc/server").TRPCMutationProcedure<{
|
|
128
|
+
input: {
|
|
129
|
+
holdId: string;
|
|
130
|
+
token: string;
|
|
131
|
+
};
|
|
132
|
+
output: {
|
|
133
|
+
cancelled: boolean;
|
|
134
|
+
};
|
|
135
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
136
|
+
}>;
|
|
137
|
+
completeRecovery: import("@trpc/server").TRPCMutationProcedure<{
|
|
138
|
+
input: {
|
|
139
|
+
holdId: string;
|
|
140
|
+
resumeToken: string;
|
|
141
|
+
pinProof?: string | undefined;
|
|
142
|
+
};
|
|
143
|
+
output: {
|
|
144
|
+
sealedShare: {
|
|
145
|
+
version: 1;
|
|
146
|
+
algorithm: "P-256-HKDF-SHA256-AES-256-GCM";
|
|
147
|
+
keyId: string;
|
|
148
|
+
ephemeralPublicKey: string;
|
|
149
|
+
salt: string;
|
|
150
|
+
iv: string;
|
|
151
|
+
ciphertext: string;
|
|
152
|
+
};
|
|
153
|
+
authShare: {
|
|
154
|
+
encryptedData: string;
|
|
155
|
+
encryptedDek: string;
|
|
156
|
+
iv: string;
|
|
157
|
+
};
|
|
158
|
+
primaryDid: string;
|
|
159
|
+
shareVersion: number;
|
|
160
|
+
rebindSessionToken: string;
|
|
161
|
+
};
|
|
162
|
+
meta: import("trpc-to-openapi").OpenApiMeta;
|
|
163
|
+
}>;
|
|
164
|
+
}>>;
|
package/dist/routes/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export type Context = {
|
|
|
24
24
|
tenant: ResolvedTenant;
|
|
25
25
|
debug?: boolean;
|
|
26
26
|
clientIp?: string;
|
|
27
|
+
providerToken?: string;
|
|
27
28
|
};
|
|
28
29
|
export declare const t: import("@trpc/server").TRPCRootObject<Context, OpenApiMeta, import("@trpc/server").TRPCRuntimeConfigOptions<Context, OpenApiMeta>, {
|
|
29
30
|
ctx: Context;
|
|
@@ -32,6 +33,7 @@ export declare const t: import("@trpc/server").TRPCRootObject<Context, OpenApiMe
|
|
|
32
33
|
transformer: false;
|
|
33
34
|
}>;
|
|
34
35
|
export declare const createContext: (options: CreateAWSLambdaContextOptions<APIGatewayProxyEventV2> | CreateFastifyContextOptions | NodeHTTPCreateContextFnOptions<IncomingMessage, ServerResponse>) => Promise<Context>;
|
|
36
|
+
export declare const redactSecretFields: (value: unknown, depth?: number, seen?: Set<object>) => unknown;
|
|
35
37
|
export declare const openRoute: import("@trpc/server").TRPCProcedureBuilder<Context, OpenApiMeta, {
|
|
36
38
|
debug: boolean | undefined;
|
|
37
39
|
user: {
|
|
@@ -42,6 +44,7 @@ export declare const openRoute: import("@trpc/server").TRPCProcedureBuilder<Cont
|
|
|
42
44
|
domain: string;
|
|
43
45
|
tenant: ResolvedTenant;
|
|
44
46
|
clientIp: string | undefined;
|
|
47
|
+
providerToken: string | undefined;
|
|
45
48
|
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
46
49
|
export declare const didRoute: import("@trpc/server").TRPCProcedureBuilder<Context, OpenApiMeta, {
|
|
47
50
|
debug: boolean | undefined;
|
|
@@ -53,6 +56,7 @@ export declare const didRoute: import("@trpc/server").TRPCProcedureBuilder<Conte
|
|
|
53
56
|
domain: string;
|
|
54
57
|
tenant: ResolvedTenant;
|
|
55
58
|
clientIp: string | undefined;
|
|
59
|
+
providerToken: string | undefined;
|
|
56
60
|
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
57
61
|
export declare const authorizedDidRoute: import("@trpc/server").TRPCProcedureBuilder<Context, OpenApiMeta, {
|
|
58
62
|
debug: boolean | undefined;
|
|
@@ -64,6 +68,7 @@ export declare const authorizedDidRoute: import("@trpc/server").TRPCProcedureBui
|
|
|
64
68
|
domain: string;
|
|
65
69
|
tenant: ResolvedTenant;
|
|
66
70
|
clientIp: string | undefined;
|
|
71
|
+
providerToken: string | undefined;
|
|
67
72
|
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
68
73
|
export declare const didAndChallengeRoute: import("@trpc/server").TRPCProcedureBuilder<Context, OpenApiMeta, {
|
|
69
74
|
debug: boolean | undefined;
|
|
@@ -75,4 +80,5 @@ export declare const didAndChallengeRoute: import("@trpc/server").TRPCProcedureB
|
|
|
75
80
|
domain: string;
|
|
76
81
|
tenant: ResolvedTenant;
|
|
77
82
|
clientIp: string | undefined;
|
|
83
|
+
providerToken: string | undefined;
|
|
78
84
|
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|