03e68e2efe
On Linux, `isEncryptionAvailable()` was crashing instead of returning a boolean before the 'ready' event was emitted by the app. The reason of the crash is that [`CreateKeyStorage()`](https://source.chromium.org/chromium/chromium/src/+/main:components/os_crypt/os_crypt_linux.cc;l=74;drc=35be6215ec8f09e50176f36753c68f26c63d1885;bpv=1;bpt=0) expects the config to be set but the function responsible for setting the config, [`SetConfig()`](https://source.chromium.org/chromium/chromium/src/+/main:components/os_crypt/os_crypt_linux.cc;l=237;drc=35be6215ec8f09e50176f36753c68f26c63d1885;bpv=1;bpt=0), is called only after the app is ready inside [`PostCreateMainMessageLoop()`](https://github.com/electron/electron/blob/main/shell/browser/electron_browser_main_parts.cc#L499). So this changes `IsEncryptionAvailable()` to return `false` when the app is not ready on Linux and uses that instead of the raw API in other places like `EncryptString()` and `DecryptString()`. Fixes: https://github.com/electron/electron/issues/32206 Signed-off-by: Darshan Sen <raisinten@gmail.com>
40 lines
1.3 KiB
Markdown
40 lines
1.3 KiB
Markdown
# safeStorage
|
|
|
|
> Allows access to simple encryption and decryption of strings for storage on the local machine.
|
|
|
|
Process: [Main](../glossary.md#main-process)
|
|
|
|
This module protects data stored on disk from being accessed by other applications or users with full disk access.
|
|
|
|
Note that on Mac, access to the system Keychain is required and
|
|
these calls can block the current thread to collect user input.
|
|
The same is true for Linux, if a password management tool is available.
|
|
|
|
## Methods
|
|
|
|
The `safeStorage` module has the following methods:
|
|
|
|
### `safeStorage.isEncryptionAvailable()`
|
|
|
|
Returns `boolean` - Whether encryption is available.
|
|
|
|
On Linux, returns true if the app has emitted the `ready` event and the secret key is available.
|
|
On MacOS, returns true if Keychain is available.
|
|
On Windows, returns true once the app has emitted the `ready` event.
|
|
|
|
### `safeStorage.encryptString(plainText)`
|
|
|
|
* `plainText` string
|
|
|
|
Returns `Buffer` - An array of bytes representing the encrypted string.
|
|
|
|
This function will throw an error if encryption fails.
|
|
|
|
### `safeStorage.decryptString(encrypted)`
|
|
|
|
* `encrypted` Buffer
|
|
|
|
Returns `string` - the decrypted string. Decrypts the encrypted buffer
|
|
obtained with `safeStorage.encryptString` back into a string.
|
|
|
|
This function will throw an error if decryption fails.
|