pub struct BeginWebAuthnRegistrationRequest {
pub username: String,
pub display_name: String,
pub account_id: String,
pub agent_node_id: String,
pub pre_consent_signature: Vec<u8>,
pub nonce: Vec<u8>,
pub authorization_hash: String,
pub expires_at_millis: i64,
}Fields§
§username: String§display_name: String§account_id: StringAdoption path for claiming an agent-created account (api#123 / weft#1357).
When any adoption field is set, all four travel together: weft mints the
WebAuthn challenge only after verifying pre_consent_signature over
(account_id, username, agent_node_id, nonce) plus, when present, the
two trailing counted fields authorization_hash and
expires_at_millis. The counted-statement encoding of those two
fields is defined on the fields themselves. This is the ratified
pre-consent: it commits the handle and agent authority, and does not bind
a credentialId (that id does not exist until WebAuthn create() returns).
agent_node_id: StringIroh node id of the authorizing agent. Empty on the ordinary verified-signup-email / unattenuated-identity begin paths.
pre_consent_signature: Vec<u8>Agent-derived-credential signature over
(account_id, username, agent_node_id, nonce) plus, when present, the
two trailing counted fields authorization_hash and
expires_at_millis. The counted-statement encoding of those two
fields is defined on the fields themselves.
nonce: Vec<u8>Challenge nonce the pre-consent signature binds. Empty on non-adoption begins.
Hex SHA-256 of the claim secret (claim-state id / authorizationHash).
In the counted Ed25519 statement this field is the UTF-8 bytes of
the lowercase hex SHA-256 of the claim secret (64 hex chars).
Do not send uppercase or raw 32-byte digest.
Empty on non-adoption and on old clients.
Empty hash + 0 is old-client v1; when either this or
expires_at_millis is set, both must travel together with the existing
adoption quartet (account_id, username, agent_node_id, nonce).
expires_at_millis: i64Consent expiry as Unix millis. On the wire this stays proto int64.
Inside the counted Ed25519 statement it is
exactly 8 big-endian two’s-complement bytes of that i64 (i64::to_be_bytes).
Not decimal text, not protobuf varint.
Zero on non-adoption and on old clients.
Empty hash + 0 is old-client v1; when either this or
authorization_hash is set, both must travel together with the
existing adoption quartet.
Trait Implementations§
Source§impl Clone for BeginWebAuthnRegistrationRequest
impl Clone for BeginWebAuthnRegistrationRequest
Source§fn clone(&self) -> BeginWebAuthnRegistrationRequest
fn clone(&self) -> BeginWebAuthnRegistrationRequest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Eq for BeginWebAuthnRegistrationRequest
Source§impl Message for BeginWebAuthnRegistrationRequest
impl Message for BeginWebAuthnRegistrationRequest
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.