pub enum NkeyType {
Account,
Cluster,
Server,
Operator,
User,
Curve,
}Expand description
The role of a public NATS NKey, identified by its single base32 prefix
letter (the first character of an encoded key string).
§Wire derivation
A public key’s wire form is prefix_byte || 32-byte key || crc16, base32
encoded. base32 packs 5 bits per output character, so the first character is
exactly the top 5 bits of prefix_byte. NATS chooses the role value so that
first character is the role letter: prefix_byte = base32_index(letter) << 3,
which lands the letter’s 5-bit alphabet index in the high 5 bits and leaves
the low 3 bits zero. Those 3 bits just roll into the second base32 character
with the top 2 bits of the key. (base32 alphabet
ABCDEFGHIJKLMNOPQRSTUVWXYZ234567: A=0 C=2 N=13 O=14 U=20 X=23.)
(SEED keys look different, SU/SA/SO, because a seed is not
role << 3: it OR-packs an S marker with the role and spills the role’s low
bits into a second header byte. Only public keys are encoded here, so the
simple role << 3 form holds.)
Variants§
Account
Account key (A…).
Cluster
Cluster key (C…).
Server
Server key (N…).
Operator
Operator key (O…).
User
User key (U…).
Curve
Curve / x25519 (xkey) key (X…); also NATS’s catch-all role.
Implementations§
Source§impl NkeyType
impl NkeyType
Sourcepub const fn letter(self) -> char
pub const fn letter(self) -> char
The role’s NKey prefix letter (the first character of an encoded key).
Sourcepub const fn prefix_byte(self) -> u8
pub const fn prefix_byte(self) -> u8
The wire prefix byte (base32_index(letter) << 3) this role encodes to.
Sourcepub fn from_letter(letter: char) -> Option<Self>
pub fn from_letter(letter: char) -> Option<Self>
Parse a role from its prefix letter, or None if letter is not one of
the supported public roles (A/C/N/O/U/X).