dfx_core/error/
keyring.rs1use crate::error::structured_file::StructuredFileError;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5pub enum KeyringError {
6 #[error("Failed to decode pem from keyring")]
7 DecodePemFailed(#[source] hex::FromHexError),
8
9 #[error("Failed to delete password from keyring")]
10 DeletePasswordFailed(#[source] keyring::Error),
11
12 #[error("Failed to get password for keyring")]
13 GetPasswordFailed(#[source] keyring::Error),
14
15 #[error("Failed to create entry for keyring")]
16 NewEntryFailed(#[source] keyring::Error),
17
18 #[error("Failed to load mock keyring")]
19 LoadMockKeyringFailed(#[source] StructuredFileError),
20
21 #[error("Mock Keyring: key {0} not found")]
22 MockKeyNotFound(String),
23
24 #[error("Mock keyring unavailable - access rejected.")]
25 MockUnavailable(),
26
27 #[error("Failed to save mock keyring")]
28 SaveMockKeyringFailed(#[source] StructuredFileError),
29
30 #[error("Failed to set password for keyring")]
31 SetPasswordFailed(#[source] keyring::Error),
32
33 #[error(transparent)]
34 MaintenanceRequired(#[from] KeyringMaintenanceError),
35}
36
37#[derive(Error, Debug)]
38#[error("\
39A macOS issue prevents arm64 versions of dfx from accessing your identities while an x64 version of dfx also has access.
40
41You will need to go into Keychain Access and remove dfx from the 'Access Control' tab of all 'internet_computer_identities' keys.
42
43For more information, see the dfx 0.28.0 migration guide: https://github.com/dfinity/sdk/blob/0.28.0/docs/migration/dfx-0.28.0-migration-guide.md
44")]
45pub struct KeyringMaintenanceError;