### Preflight Checklist

- [X] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/main/CONTRIBUTING.md) for this project.
- [X] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md) that this project adheres to.
- [X] I have searched the [issue tracker](https://www.github.com/electron/electron/issues) for a feature request that matches the one I want to file, without success.

### Electron Version

15 and 16

### What operating system are you using?

Ubuntu

### Operating System Version

Ubuntu 20.04

### What arch are you using?

x64

### Last Known Working Electron version

n/a

### Expected Behavior

calling `electron.safeStorage.isEncryptionAvailable()` returns a boolean

### Actual Behavior

calling `electron.safeStorage.isEncryptionAvailable()` segfaults immediately

### Testcase Gist URL

https://github.com/ganthern/safe-storage-segfault

### Additional Information

It also happens in a fresh openSUSE Leap 15.1.1 VM. 

The API should be available as soon as possible (preferrably before app ready) since it's useful for apps that run on startup without immediately opening BrowserWindows.

For the record, it works as expected on MacOs and returns `false` on windows, which makes the current [documentation](https://www.electronjs.org/docs/latest/api/safe-storage#safestorageisencryptionavailable) of `isEncryptionAvailable` inaccurate.
shell/browser/api/electron_api_safe_storage.cc
if (!OSCrypt::IsEncryptionAvailable()) {
    gin_helper::ErrorThrower(isolate).ThrowError(
        "Error while decrypting the ciphertext provided to "
        "safeStorage.decryptString. "
        "Decryption is not available.");
    return "";
  }
  if (!node::Buffer::HasInstance(buffer)) {
    gin_helper::ErrorThrower(isolate).ThrowError(
        "Expected the first argument of decryptString() to be a buffer");
    return "";
  }
  
  
  const char* data = node::Buffer::Data(buffer);
  auto size = node::Buffer::Length(buffer);
  std::string ciphertext(data, size);
  if (ciphertext.empty()) {
    return "";
  }
  if (ciphertext.find(kEncryptionVersionPrefixV10) != 0 &&
      ciphertext.find(kEncryptionVersionPrefixV11) != 0) {
    gin_helper::ErrorThrower(isolate).ThrowError(