pub struct TkaInit {
pub disablement_secret: Vec<u8>,
}Expand description
Initialize Tailnet Lock with this node as the sole initial trusted key, gated by
disablement_secret (Go LocalClient.NetworkLockInit — the “lock yourself in” case).
Builds + signs a genesis Checkpoint AUM whose only trusted key is this node’s network-lock
public key (votes 1) and whose single DisablementValue is disablement_value(secret), then
drives the two-phase init: tka/init/begin (submit the genesis) → if control needs no
further node signatures (NeedSignatures empty, the case when this node is the only key) →
tka/init/finish carrying the raw disablement_secret as SupportDisablement. Mirrors
tka_sign/tka_disable: cloned config + keys into a spawned task (delegated reply).
If control returns a non-empty NeedSignatures (other nodes must be re-signed under the new
lock — a multi-node tailnet), this returns TkaSyncError::Unsupported: re-signing each
listed node (incl. the Rotation-key case) is a larger flow deferred to a fuller
tka_init(keys, secrets) — the single-node lock-init is the shipped subset.
Submit-only, like tka_sign/tka_disable: this creates the lock at control and does
NOT seed the local Authority — the node picks up the new lock through
the existing verified netmap-sync (control pushes a TKAInfo, maybe_sync_tka bootstraps
the genesis through VerifiedAumChain::verify). Verify-and-log posture unchanged.
Fields§
§disablement_secret: Vec<u8>Trait Implementations§
Auto Trait Implementations§
impl Freeze for TkaInit
impl RefUnwindSafe for TkaInit
impl Send for TkaInit
impl Sync for TkaInit
impl Unpin for TkaInit
impl UnsafeUnpin for TkaInit
impl UnwindSafe for TkaInit
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<A, T> DynMessage<A> for T
impl<A, T> DynMessage<A> for T
Source§fn handle_dyn<'a>(
self: Box<T>,
state: &'a mut A,
actor_ref: ActorRef<A>,
tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>,
stop: &'a mut bool,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
fn handle_dyn<'a>( self: Box<T>, state: &'a mut A, actor_ref: ActorRef<A>, tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>, stop: &'a mut bool, ) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
impl<T> ErasedDestructor for Twhere
T: 'static,
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