Enhance UserDecryptionOptions structure for mobile compatibility; add MasterPasswordUnlock interface

This commit is contained in:
shuaiplus
2026-02-06 00:12:08 +08:00
parent 8e10b65513
commit ef50f44a4e
2 changed files with 31 additions and 4 deletions
+10
View File
@@ -85,6 +85,16 @@ export async function handleToken(request: Request, env: Env): Promise<Response>
UserDecryptionOptions: { UserDecryptionOptions: {
HasMasterPassword: true, HasMasterPassword: true,
Object: 'userDecryptionOptions', Object: 'userDecryptionOptions',
MasterPasswordUnlock: {
Kdf: {
KdfType: user.kdfType,
Iterations: user.kdfIterations,
Memory: user.kdfMemory || null,
Parallelism: user.kdfParallelism || null,
},
MasterKeyEncryptedUserKey: user.key,
Salt: email, // email is already lowercased above
},
}, },
}; };
+21 -4
View File
@@ -145,6 +145,26 @@ export interface JWTPayload {
premium: boolean; premium: boolean;
} }
// UserDecryptionOptions types for mobile client compatibility
export interface MasterPasswordUnlockKdf {
KdfType: number;
Iterations: number;
Memory: number | null;
Parallelism: number | null;
}
export interface MasterPasswordUnlock {
Kdf: MasterPasswordUnlockKdf;
MasterKeyEncryptedUserKey: string;
Salt: string;
}
export interface UserDecryptionOptions {
HasMasterPassword: boolean;
Object: string;
MasterPasswordUnlock?: MasterPasswordUnlock;
}
// API Response types // API Response types
export interface TokenResponse { export interface TokenResponse {
access_token: string; access_token: string;
@@ -161,10 +181,7 @@ export interface TokenResponse {
ResetMasterPassword: boolean; ResetMasterPassword: boolean;
scope: string; scope: string;
unofficialServer: boolean; unofficialServer: boolean;
UserDecryptionOptions: { UserDecryptionOptions: UserDecryptionOptions;
HasMasterPassword: boolean;
Object: string;
};
} }
export interface ProfileResponse { export interface ProfileResponse {