pub enum NodeRegistryOperationV2 {
RegisterEncryptionKey {
encryption_pubkey: [u8; 32],
},
}Expand description
V2 node registry operations. Additive — V1 NodeRegistryOperation is unchanged.
Currently carries account-level X25519 encryption-key registration for SNIP V2 Ask 3. May grow to cover other V2 account-level keying ops over time.
Variants§
RegisterEncryptionKey
Register (or rotate) the X25519 encryption pubkey for the signer’s address.
One key per account; subsequent calls overwrite. The pubkey is a 32-byte
Montgomery U-coordinate (RFC 7748). Clamping is on the private scalar,
not the public, so no clamping check applies. The executor does
reject the seven libsodium-blocklisted low/small-order encodings (and
their high-bit-set variants), via
sumchain_crypto::is_low_order_x25519_public_key, with
TxStatus::Failed(22) and reason
"low-order x25519 public key rejected" — this prevents griefing where
a registered low-order pubkey would force every legitimate sender’s
wrap operation to fail.
Rotation does not retro-revoke previously-issued bundles encrypted under the prior X25519 pubkey — the old private key still decrypts old bundles. Reissuing bundles after rotation is the client’s (SNIP’s) responsibility.
Trait Implementations§
Source§impl Clone for NodeRegistryOperationV2
impl Clone for NodeRegistryOperationV2
Source§fn clone(&self) -> NodeRegistryOperationV2
fn clone(&self) -> NodeRegistryOperationV2
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NodeRegistryOperationV2
impl Debug for NodeRegistryOperationV2
Source§impl<'de> Deserialize<'de> for NodeRegistryOperationV2
impl<'de> Deserialize<'de> for NodeRegistryOperationV2
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for NodeRegistryOperationV2
impl PartialEq for NodeRegistryOperationV2
Source§fn eq(&self, other: &NodeRegistryOperationV2) -> bool
fn eq(&self, other: &NodeRegistryOperationV2) -> bool
self and other values to be equal, and is used by ==.