Skip to main content

Token

Struct Token 

Source
pub struct Token(/* private fields */);
Expand description

A bearer token for the control API.

Deliberately neither Debug nor Display. A token that can be formatted is a token that ends up in a log line eventually; the only way out is Token::as_str, which reads as the deliberate act it is.

Implementations§

Source§

impl Token

Source

pub fn generate() -> Result<Self>

Source

pub fn from_hex(s: &str) -> Self

Reconstruct a token generated elsewhere, such as one read back from disk.

Source

pub fn as_str(&self) -> &str

Source

pub fn matches(&self, presented: &str) -> bool

Compare in constant time.

A short-circuiting == leaks the token one byte at a time to anything that can time the response, and on loopback that is every process on the machine. The length is allowed to leak because it is a compile-time constant.

Source

pub fn write_to_disk(&self) -> Option<PathBuf>

Write the token where a local tool can find it, returning where it went.

Best effort. A daemon that cannot write the file still works, because the token is printed at startup as well, and refusing to start over this would be worse than the inconvenience it avoids.

Auto Trait Implementations§

§

impl Freeze for Token

§

impl RefUnwindSafe for Token

§

impl Send for Token

§

impl Sync for Token

§

impl Unpin for Token

§

impl UnsafeUnpin for Token

§

impl UnwindSafe for Token

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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.