Skip to main content

VerifyShareResponseMessage

Struct VerifyShareResponseMessage 

Source
pub struct VerifyShareResponseMessage {
    pub result: Option<DeRecResult>,
    pub version: i32,
    pub nonce: u64,
    pub hash: Vec<u8>,
    pub timestamp: Option<Timestamp>,
}
Expand description

VerifyShareResponseMessage contains the result of a verification challenge and, on success, provides a proof of share possession.

§Semantics

In response to a VerifyShareRequestMessage, the Helper:

  • retrieves the requested share version
  • computes the hash over (committedDeRecShare || nonce)
  • returns the result along with the echoed version and nonce

The Owner verifies the response by recomputing the expected hash and comparing it with the received value.

§Failure Handling

If the verification fails (e.g., incorrect hash or error result), the Owner:

  • MAY retry the verification
  • MAY resend the correct share to the Helper
  • MAY mark the Helper as unreliable after repeated failures

§Security Considerations

  • The hash MUST be computed using SHA-384 as defined by the protocol
  • The nonce MUST match the request to ensure the response is not replayed
  • The response MUST be sent over an authenticated and encrypted channel

§Idempotency

Responses are tied to a specific (version, nonce) pair. Replaying a response with a stale nonce SHOULD be rejected by the Owner.

Fields§

§result: Option<DeRecResult>

Result of processing the verification request.

Indicates whether the Helper successfully computed the proof or encountered an error (e.g., share not found).

§version: i32

Share version this response refers to.

MUST match the version provided in the request.

§nonce: u64

Challenge nonce echoed from the request.

MUST exactly match the nonce provided in the request.

§hash: Vec<u8>

Verification proof.

This is the SHA-384 hash of:

committedDeRecShare || nonce

where committedDeRecShare is the exact byte sequence originally stored by the Helper.

§timestamp: Option<Timestamp>

Timestamp indicating when this message was created.

This value is expressed in UTC and can be used for:

  • observability and logging
  • replay detection (in combination with sequence numbers)
  • timeout handling

Trait Implementations§

Source§

impl Clone for VerifyShareResponseMessage

Source§

fn clone(&self) -> VerifyShareResponseMessage

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for VerifyShareResponseMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for VerifyShareResponseMessage

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Hash for VerifyShareResponseMessage

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for VerifyShareResponseMessage

Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
Source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
Source§

fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message to a buffer. Read more
Source§

fn encode_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message to a newly allocated buffer.
Source§

fn encode_length_delimited( &self, buf: &mut impl BufMut, ) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
Source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
Source§

fn decode(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes an instance of the message from a buffer. Read more
Source§

fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes a length-delimited instance of the message from the buffer.
Source§

fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
Source§

fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
Source§

impl PartialEq for VerifyShareResponseMessage

Source§

fn eq(&self, other: &VerifyShareResponseMessage) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for VerifyShareResponseMessage

Source§

impl StructuralPartialEq for VerifyShareResponseMessage

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.