pub struct HubMacKey {
inner: B64UU<ByteArray<32>>,
}Expand description
Symmetric key to bind the hub id, but ‘blind’ the hub id from PHC.
The HubMacKey is randomly generated by the hub for each call to EnterStartEP, stored in
the hub-encrypted EnterStartResp::state — which, unlike the EnterNonce, never transits
the transcryptor or PHC — and returned to the global client via EnterStartResp::hub_mac_key.
The global client relays it to the transcryptor via
tr::EhppReq::hub_mac_key.
The transcryptor uses the HubMacKey to HMAC the hub id it pseudonymises for (see
HubMacKey::mac). The mac is passed via the sso::EncryptedHubPseudonymPackage to PHC,
which includes it in the sso::HashedHubPseudonymPackage that eventually ends up back at the
hub, via EnterCompleteReq. The hub can then check the mac is indeed the mac of its own hub
id, using the HubMacKey recovered from its state.
This HubMacKey is known to the hub and the global client, but must remain hidden from PHC.
Fields§
§inner: B64UU<ByteArray<32>>Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for HubMacKey
impl<'de> Deserialize<'de> for HubMacKey
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>,
impl Eq for HubMacKey
impl StructuralPartialEq for HubMacKey
Auto Trait Implementations§
impl Freeze for HubMacKey
impl RefUnwindSafe for HubMacKey
impl Send for HubMacKey
impl Sync for HubMacKey
impl Unpin for HubMacKey
impl UnsafeUnpin for HubMacKey
impl UnwindSafe for HubMacKey
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more