[][src]Struct tox_packet::onion::InnerOnionDataRequest

pub struct InnerOnionDataRequest {
    pub destination_pk: PublicKey,
    pub nonce: Nonce,
    pub temporary_pk: PublicKey,
    pub payload: Vec<u8>,
}

It's used to send data requests to dht node using onion paths.

When DHT node receives OnionDataRequest it sends OnionDataResponse to destination node for which data request is intended. Thus, data request will go through 7 intermediate nodes until destination node gets it - 3 nodes with OnionRequests, onion node that handles OnionDataRequest and 3 nodes with OnionResponses.

Serialized form:

LengthContent
10x85
32PublicKey of destination node
24Nonce
32Temporary PublicKey
variablePayload

Fields

destination_pk: PublicKey

PublicKey of destination node

nonce: Nonce

Nonce for the current encrypted payload

temporary_pk: PublicKey

Temporary PublicKey for the current encrypted payload

payload: Vec<u8>

Encrypted payload

Implementations

impl InnerOnionDataRequest[src]

pub fn new(
    shared_secret: &PrecomputedKey,
    destination_pk: PublicKey,
    temporary_pk: PublicKey,
    nonce: Nonce,
    payload: &OnionDataResponsePayload
) -> InnerOnionDataRequest
[src]

Create InnerOnionDataRequest from OnionDataResponsePayload encrypting it with shared_key and nonce

pub fn get_payload(
    &self,
    shared_secret: &PrecomputedKey
) -> Result<OnionDataResponsePayload, GetPayloadError>
[src]

Decrypt payload and try to parse it as OnionDataResponsePayload. Returns Error in case of failure:

  • fails to decrypt
  • fails to parse as OnionDataResponsePayload

Trait Implementations

impl Clone for InnerOnionDataRequest[src]

impl Debug for InnerOnionDataRequest[src]

impl Eq for InnerOnionDataRequest[src]

impl FromBytes for InnerOnionDataRequest[src]

impl PartialEq<InnerOnionDataRequest> for InnerOnionDataRequest[src]

impl StructuralEq for InnerOnionDataRequest[src]

impl StructuralPartialEq for InnerOnionDataRequest[src]

impl ToBytes for InnerOnionDataRequest[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.