mirror of
https://github.com/bitwarden/browser
synced 2025-12-20 02:03:39 +00:00
* Rename service-factory folder * Move cryptographic service factories * Move crypto models * Move crypto services * Move domain base class * Platform code owners * Move desktop log services * Move log files * Establish component library ownership * Move background listeners * Move background background * Move localization to Platform * Move browser alarms to Platform * Move browser state to Platform * Move CLI state to Platform * Move Desktop native concerns to Platform * Move flag and misc to Platform * Lint fixes * Move electron state to platform * Move web state to Platform * Move lib state to Platform * Fix broken tests * Rename interface to idiomatic TS * `npm run prettier` 🤖 * Resolve review feedback * Set platform as owners of web core and shared * Expand moved services * Fix test types --------- Co-authored-by: Hinton <hinton@users.noreply.github.com>
65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
import { DevicesApiServiceAbstraction } from "../../abstractions/devices/devices-api.service.abstraction";
|
|
import { DeviceResponse } from "../../abstractions/devices/responses/device.response";
|
|
import { Utils } from "../../platform/misc/utils";
|
|
import { ApiService } from "../api.service";
|
|
|
|
import { TrustedDeviceKeysRequest } from "./requests/trusted-device-keys.request";
|
|
|
|
export class DevicesApiServiceImplementation implements DevicesApiServiceAbstraction {
|
|
constructor(private apiService: ApiService) {}
|
|
|
|
async getKnownDevice(email: string, deviceIdentifier: string): Promise<boolean> {
|
|
const r = await this.apiService.send(
|
|
"GET",
|
|
"/devices/knowndevice",
|
|
null,
|
|
false,
|
|
true,
|
|
null,
|
|
(headers) => {
|
|
headers.set("X-Device-Identifier", deviceIdentifier);
|
|
headers.set("X-Request-Email", Utils.fromUtf8ToUrlB64(email));
|
|
}
|
|
);
|
|
return r as boolean;
|
|
}
|
|
|
|
/**
|
|
* Get device by identifier
|
|
* @param deviceIdentifier - client generated id (not device id in DB)
|
|
*/
|
|
async getDeviceByIdentifier(deviceIdentifier: string): Promise<DeviceResponse> {
|
|
const r = await this.apiService.send(
|
|
"GET",
|
|
`/devices/identifier/${deviceIdentifier}`,
|
|
null,
|
|
true,
|
|
true
|
|
);
|
|
return new DeviceResponse(r);
|
|
}
|
|
|
|
async updateTrustedDeviceKeys(
|
|
deviceIdentifier: string,
|
|
devicePublicKeyEncryptedUserSymKey: string,
|
|
userSymKeyEncryptedDevicePublicKey: string,
|
|
deviceKeyEncryptedDevicePrivateKey: string
|
|
): Promise<DeviceResponse> {
|
|
const request = new TrustedDeviceKeysRequest(
|
|
devicePublicKeyEncryptedUserSymKey,
|
|
userSymKeyEncryptedDevicePublicKey,
|
|
deviceKeyEncryptedDevicePrivateKey
|
|
);
|
|
|
|
const result = await this.apiService.send(
|
|
"PUT",
|
|
`/devices/${deviceIdentifier}/keys`,
|
|
request,
|
|
true,
|
|
true
|
|
);
|
|
|
|
return new DeviceResponse(result);
|
|
}
|
|
}
|