Referencia Zigspire-zig (SDK consumido)

zig/src/keyring.zig

Declaraciones públicas de zig/src/keyring.zig (spire-zig (SDK consumido)).

ImplementadoSin versión del tren todavía· generada desde apps/docs/generated/zig/spire.json

Página generada desde spire@spire-0.2.0-XvnrRek1BgCX4Bh8miuITCQgkn0FqeQrYYE3goFfDcQd (zig/src/root.zig). No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere.

Keyring de identidades de servicio (dec-0119 §3): qué claves públicas Ed25519 pertenecen a qué servicio.

  • El kid se deriva de la clave (SHA-256(pk)[0..8]), nunca se configura: una clave y su id no pueden discrepar.
  • Hasta MAX_KEYS_PER_SERVICE claves por servicio (actual + siguiente, para rotar sin corte).
  • Se rechazan claves no canónicas y de orden bajo al cargarlas: una clave débil admitiría firmas triviales.
  • Capacidad fija, sin reservas: se construye al arrancar y después es de sólo lectura (se puede compartir entre hilos sin lock).

Formato de configuración (parse): servicio=<pk base64url> separados por comas, el mismo en TS (@spire/bus parseKeyring).

keyring.MAX_ENTRIES

const · línea 21

pub const MAX_ENTRIES: usize = 256

Sin ///.

keyring.MAX_KEYS_PER_SERVICE

const · línea 22

pub const MAX_KEYS_PER_SERVICE: usize = 4

Sin ///.

keyring.Entry

type · línea 24

pub const Entry = struct

Sin ///.

keyring.Entry.name

fn · línea 30

pub fn name(e: *const Entry) []const u8

Sin ///.

keyring.AddError

const · línea 35

pub const AddError = error{ InvalidServiceName, WeakPublicKey, KeyringFull, TooManyKeysForService, DuplicateKid }

Sin ///.

keyring.checkPublicKey

fn · línea 38

pub fn checkPublicKey(raw: [32]u8) error{WeakPublicKey}!Ed25519.PublicKey

Valida una clave pública cruda: canónica, no identidad, no de orden bajo.

keyring.Keyring

type · línea 46

pub const Keyring = struct

Sin ///.

keyring.Keyring.add

fn · línea 50

pub fn add(self: *Keyring, service: []const u8, raw: [32]u8) AddError!void

Sin ///.

keyring.Keyring.byKid

fn · línea 67

pub fn byKid(self: *const Keyring, kid: envelope.Kid) ?*const Entry

Sin ///.

keyring.Keyring.hasService

fn · línea 74

pub fn hasService(self: *const Keyring, service: []const u8) bool

Sin ///.

keyring.Keyring.ParseError

const · línea 81

pub const ParseError = AddError || error{ MalformedEntry, InvalidPublicKeyEncoding }

Sin ///.

keyring.Keyring.parse

fn · línea 84

pub fn parse(self: *Keyring, text: []const u8) ParseError!void

svc-a=<b64url>,svc-b=<b64url> (espacios alrededor ignorados).