pub struct Keyset {
pub raw_keys: HashMap<String, Vec<u8>>,
pub header_key_cache: Option<[u8; 32]>,
}
Fields§
§raw_keys: HashMap<String, Vec<u8>>
§header_key_cache: Option<[u8; 32]>
Implementations§
Source§impl Keyset
impl Keyset
Sourcepub fn from_reader(reader: impl Read + Seek) -> Result<Self>
pub fn from_reader(reader: impl Read + Seek) -> Result<Self>
Parse a key file to extract Nintendo Switch keys
Sourcepub fn header_crypt(&self) -> Option<Xts128<Aes128>>
pub fn header_crypt(&self) -> Option<Xts128<Aes128>>
Creates an XTS128 cipher for NCA header encryption/decryption
The header key is split into two 128-bit keys for XTS, with the first half used for the data unit key and the second half used for the tweak key.
Sourcepub fn get_key_prefixes(&self) -> Vec<String>
pub fn get_key_prefixes(&self) -> Vec<String>
Get a list of all key prefixes in the keyset
Sourcepub fn get_keys_with_prefix(&self, prefix: &str) -> HashMap<String, Vec<u8>>
pub fn get_keys_with_prefix(&self, prefix: &str) -> HashMap<String, Vec<u8>>
Get all keys with a specific prefix
Sourcepub fn get_raw_key(&self, key_name: &str) -> Option<&[u8]>
pub fn get_raw_key(&self, key_name: &str) -> Option<&[u8]>
Try to get a raw key by its exact name
Sourcepub fn get_key<const N: usize>(&self, key_name: &str) -> Option<[u8; N]>
pub fn get_key<const N: usize>(&self, key_name: &str) -> Option<[u8; N]>
Try to get a fixed-size key by its exact name
Sourcepub fn header_key(&self) -> Option<&[u8; 32]>
pub fn header_key(&self) -> Option<&[u8; 32]>
Get the header key (cached for performance)
Sourcepub fn get_indexed_keys<const N: usize>(
&self,
prefix: &str,
) -> HashMap<u8, [u8; N]>
pub fn get_indexed_keys<const N: usize>( &self, prefix: &str, ) -> HashMap<u8, [u8; N]>
Extract indexes from keys with a specific format (e.g., titlekek_10 => 0x10)
Sourcepub fn get_key_area_key_application(&self, idx: usize) -> Option<[u8; 16]>
pub fn get_key_area_key_application(&self, idx: usize) -> Option<[u8; 16]>
Get an application key area key by index
Sourcepub fn get_key_area_key_ocean(&self, idx: usize) -> Option<[u8; 16]>
pub fn get_key_area_key_ocean(&self, idx: usize) -> Option<[u8; 16]>
Get an ocean key area key by index
Sourcepub fn get_key_area_key_system(&self, idx: usize) -> Option<[u8; 16]>
pub fn get_key_area_key_system(&self, idx: usize) -> Option<[u8; 16]>
Get a system key area key by index
Sourcepub fn get_title_kek(&self, key_generation: usize) -> Option<[u8; 16]>
pub fn get_title_kek(&self, key_generation: usize) -> Option<[u8; 16]>
Get the title KEK for the specified key generation
Sourcepub fn title_keks(&self) -> HashMap<u8, [u8; 16]>
pub fn title_keks(&self) -> HashMap<u8, [u8; 16]>
Get all title KEKs as a HashMap indexed by generation
Sourcepub fn key_area_keys_application(&self) -> HashMap<u8, [u8; 16]>
pub fn key_area_keys_application(&self) -> HashMap<u8, [u8; 16]>
Get all application key area keys as a HashMap indexed by generation
Sourcepub fn key_area_keys_ocean(&self) -> HashMap<u8, [u8; 16]>
pub fn key_area_keys_ocean(&self) -> HashMap<u8, [u8; 16]>
Get all ocean key area keys as a HashMap indexed by generation
Sourcepub fn key_area_keys_system(&self) -> HashMap<u8, [u8; 16]>
pub fn key_area_keys_system(&self) -> HashMap<u8, [u8; 16]>
Get all system key area keys as a HashMap indexed by generation
Sourcepub fn has_required_nca_keys(&self) -> bool
pub fn has_required_nca_keys(&self) -> bool
Check if the keyset has the necessary keys for NCA decryption