This repository was archived by the owner on Oct 7, 2024. It is now read-only.

Description
Currently, the encryptor class variable (and the corresponding constructor option) is typed with any.
As a controller client can inject its own encryptor methods, the minimum encryptor interface needed by the controller should be clear.
Moreover, the solution should take into account that:
- MetaMask extension and mobile use different encryptors
- MetaMask extension uses the default encryptor value, provided by KeyringController, which is
@metamask/browser-passworder
- MetaMask mobile injects its own encryptor.
- When
cacheEncryptionKey options is set to true, KeyringController needs an encryptor capable of exporting the encryption key string along with encrypted/decrypted strings. This is only needed by the extension, when using MV3
- This means that when
cacheEncryptionKey is set to true, the encryptor must implement additional methods specific for this