mirror of
https://github.com/bitwarden/browser
synced 2025-12-23 11:43:46 +00:00
* Made domain classes ts-strict compliant and fixed spec files * Fixed domain base class and other test files * Added conditional utils and fixed small nits * removed comments * removd ts expect errors * Added removed counter * renamed test name * fixed tests
111 lines
2.9 KiB
TypeScript
111 lines
2.9 KiB
TypeScript
import { Jsonify } from "type-fest";
|
|
|
|
import { LoginUri as SdkLoginUri } from "@bitwarden/sdk-internal";
|
|
|
|
import { EncString } from "../../../key-management/crypto/models/enc-string";
|
|
import { UriMatchStrategySetting } from "../../../models/domain/domain-service";
|
|
import { Utils } from "../../../platform/misc/utils";
|
|
import Domain from "../../../platform/models/domain/domain-base";
|
|
import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key";
|
|
import { conditionalEncString, encStringFrom } from "../../utils/domain-utils";
|
|
import { LoginUriData } from "../data/login-uri.data";
|
|
import { LoginUriView } from "../view/login-uri.view";
|
|
|
|
export class LoginUri extends Domain {
|
|
uri?: EncString;
|
|
uriChecksum?: EncString;
|
|
match?: UriMatchStrategySetting;
|
|
|
|
constructor(obj?: LoginUriData) {
|
|
super();
|
|
if (obj == null) {
|
|
return;
|
|
}
|
|
|
|
this.uri = conditionalEncString(obj.uri);
|
|
this.uriChecksum = conditionalEncString(obj.uriChecksum);
|
|
this.match = obj.match ?? undefined;
|
|
}
|
|
|
|
decrypt(
|
|
orgId: string | undefined,
|
|
context: string = "No Cipher Context",
|
|
encKey?: SymmetricCryptoKey,
|
|
): Promise<LoginUriView> {
|
|
return this.decryptObj<LoginUri, LoginUriView>(
|
|
this,
|
|
new LoginUriView(this),
|
|
["uri"],
|
|
orgId ?? null,
|
|
encKey,
|
|
context,
|
|
);
|
|
}
|
|
|
|
async validateChecksum(clearTextUri: string, orgId?: string, encKey?: SymmetricCryptoKey) {
|
|
if (this.uriChecksum == null) {
|
|
return false;
|
|
}
|
|
|
|
const keyService = Utils.getContainerService().getEncryptService();
|
|
const localChecksum = await keyService.hash(clearTextUri, "sha256");
|
|
|
|
const remoteChecksum = await this.uriChecksum.decrypt(orgId ?? null, encKey);
|
|
return remoteChecksum === localChecksum;
|
|
}
|
|
|
|
toLoginUriData(): LoginUriData {
|
|
const u = new LoginUriData();
|
|
this.buildDataModel(
|
|
this,
|
|
u,
|
|
{
|
|
uri: null,
|
|
uriChecksum: null,
|
|
match: null,
|
|
},
|
|
["match"],
|
|
);
|
|
return u;
|
|
}
|
|
|
|
static fromJSON(obj: Jsonify<LoginUri> | undefined): LoginUri | undefined {
|
|
if (obj == null) {
|
|
return undefined;
|
|
}
|
|
|
|
const loginUri = new LoginUri();
|
|
loginUri.uri = encStringFrom(obj.uri);
|
|
loginUri.match = obj.match ?? undefined;
|
|
loginUri.uriChecksum = encStringFrom(obj.uriChecksum);
|
|
|
|
return loginUri;
|
|
}
|
|
|
|
/**
|
|
* Maps LoginUri to SDK format.
|
|
*
|
|
* @returns {SdkLoginUri} The SDK login uri object.
|
|
*/
|
|
toSdkLoginUri(): SdkLoginUri {
|
|
return {
|
|
uri: this.uri?.toSdk(),
|
|
uriChecksum: this.uriChecksum?.toSdk(),
|
|
match: this.match,
|
|
};
|
|
}
|
|
|
|
static fromSdkLoginUri(obj?: SdkLoginUri): LoginUri | undefined {
|
|
if (obj == null) {
|
|
return undefined;
|
|
}
|
|
|
|
const loginUri = new LoginUri();
|
|
loginUri.uri = encStringFrom(obj.uri);
|
|
loginUri.uriChecksum = encStringFrom(obj.uriChecksum);
|
|
loginUri.match = obj.match;
|
|
|
|
return loginUri;
|
|
}
|
|
}
|