mirror of
https://github.com/bitwarden/browser
synced 2025-12-21 02:33:46 +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>
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { ipcRenderer } from "electron";
|
|
|
|
import { AbstractStorageService } from "@bitwarden/common/platform/abstractions/storage.service";
|
|
import { StorageOptions } from "@bitwarden/common/platform/models/domain/storage-options";
|
|
|
|
export class ElectronRendererSecureStorageService implements AbstractStorageService {
|
|
async get<T>(key: string, options?: StorageOptions): Promise<T> {
|
|
const val = await ipcRenderer.invoke("keytar", {
|
|
action: "getPassword",
|
|
key: key,
|
|
keySuffix: options?.keySuffix ?? "",
|
|
});
|
|
return val != null ? (JSON.parse(val) as T) : null;
|
|
}
|
|
|
|
async has(key: string, options?: StorageOptions): Promise<boolean> {
|
|
const val = await ipcRenderer.invoke("keytar", {
|
|
action: "hasPassword",
|
|
key: key,
|
|
keySuffix: options?.keySuffix ?? "",
|
|
});
|
|
return !!val;
|
|
}
|
|
|
|
async save(key: string, obj: any, options?: StorageOptions): Promise<any> {
|
|
await ipcRenderer.invoke("keytar", {
|
|
action: "setPassword",
|
|
key: key,
|
|
keySuffix: options?.keySuffix ?? "",
|
|
value: JSON.stringify(obj),
|
|
});
|
|
}
|
|
|
|
async remove(key: string, options?: StorageOptions): Promise<any> {
|
|
await ipcRenderer.invoke("keytar", {
|
|
action: "deletePassword",
|
|
key: key,
|
|
keySuffix: options?.keySuffix ?? "",
|
|
});
|
|
}
|
|
}
|