pub struct Keycode(/* private fields */);
Expand description
Input to regenerate keys “stored” in the PUF.
TODO: split into
- key code valid (first four bytes)
- key parameters (user/generated, length, …?)
- actual keycode = last 52 bytes
Empirically, these arrays start with either ‘59595959 01000002’ for 16B keys, or ‘59595959 00000004’ for 32B keys.
A generated UDS key example seens in the wild starts with 59595959 010F0004
however.
Presumably (entire paragraph is speculative), this is followed by 32B of input to be XOR’d or whatnot with the 32B “fingerprint” derived from PUF “startup data” via error correction with the “activation code” (and then truncated to key length). Which would leave 16B hash.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Keycode
impl<'de> Deserialize<'de> for Keycode
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Ord for Keycode
impl Ord for Keycode
Source§impl PartialOrd for Keycode
impl PartialOrd for Keycode
impl Copy for Keycode
impl Eq for Keycode
impl StructuralPartialEq for Keycode
Auto Trait Implementations§
impl Freeze for Keycode
impl RefUnwindSafe for Keycode
impl Send for Keycode
impl Sync for Keycode
impl Unpin for Keycode
impl UnwindSafe for Keycode
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ToHex for T
impl<T> ToHex for T
Source§fn encode_hex<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex<U>(&self) -> Uwhere
U: FromIterator<char>,
Encode the hex strict representing
self
into the result. Lower case
letters are used (e.g. f9b4ca
)Source§fn encode_hex_upper<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex_upper<U>(&self) -> Uwhere
U: FromIterator<char>,
Encode the hex strict representing
self
into the result. Upper case
letters are used (e.g. F9B4CA
)