safeStorage.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. import { ipcRenderer } from 'electron';
  2. import { safeStorageStore } from '../stores/safeStorage.store';
  3. import { logError } from '../utils/logging';
  4. export async function setEncryptionKey(encryptionKey: string) {
  5. try {
  6. const encryptedKey: Buffer = await ipcRenderer.invoke(
  7. 'safeStorage-encrypt',
  8. encryptionKey
  9. );
  10. const b64EncryptedKey = Buffer.from(encryptedKey).toString('base64');
  11. safeStorageStore.set('encryptionKey', b64EncryptedKey);
  12. } catch (e) {
  13. logError(e, 'setEncryptionKey failed');
  14. throw e;
  15. }
  16. }
  17. export async function getEncryptionKey(): Promise<string> {
  18. try {
  19. const b64EncryptedKey = safeStorageStore.get('encryptionKey');
  20. if (b64EncryptedKey) {
  21. const keyBuffer = new Uint8Array(
  22. Buffer.from(b64EncryptedKey, 'base64')
  23. );
  24. return await ipcRenderer.invoke('safeStorage-decrypt', keyBuffer);
  25. }
  26. } catch (e) {
  27. logError(e, 'setEncryptionKey failed');
  28. throw e;
  29. }
  30. }