Files
fn_registry/functions/cybersecurity/generate_identity.md
T
2026-06-04 23:44:39 +02:00

2.2 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
generate_identity function go cybersecurity 1.0.0 impure func GenerateIdentity() (Identity, error) Genera una identidad criptográfica dual con un par Ed25519 (firma) y un par X25519 (intercambio de claves). Punto de entrada obligatorio para cualquier participante en el bus de mensajería cifrado.
messaging
e2e-crypto
crypto
identity
ed25519
x25519
keygen
e2e-messaging
false error_go_core
crypto/ed25519
crypto/rand
golang.org/x/crypto/nacl/box
name desc
(ninguno) Sin parámetros. Usa crypto/rand como fuente de entropía del sistema.
Identity{SignPub []byte, SignPriv []byte, KexPub []byte, KexPriv []byte} o error si falla el RNG del sistema. true
genera keypairs con longitudes correctas
dos llamadas producen identidades distintas
functions/cybersecurity/e2e_messaging_crypto_test.go functions/cybersecurity/generate_identity.go

Ejemplo

id, err := cybersecurity.GenerateIdentity()
if err != nil {
    log.Fatal(err)
}
// id.SignPub / id.SignPriv — par Ed25519 para firmar mensajes
// id.KexPub  / id.KexPriv  — par X25519 para recibir claves de sala cifradas
fmt.Printf("identity pub(sign)=%x pub(kex)=%x\n", id.SignPub, id.KexPub)

Cuando usarla

Al registrar un nuevo participante en el bus de mensajería: llama GenerateIdentity una sola vez por dispositivo/sesión, persiste los bytes de las cuatro claves de forma segura, y publica SignPub + KexPub en el directorio de participantes.

Gotchas

  • La función depende de crypto/rand; en entornos con entropía insuficiente (contenedores recién arrancados) puede bloquearse brevemente.
  • SignPriv tiene 64 bytes (no 32): Ed25519 concatena seed (32) + clave pública (32) internamente. No truncar.
  • KexPub/KexPriv son exactamente 32 bytes (Curve25519). Pasar exactamente esos slices a SealKeyBox/OpenKeyBox.
  • Nunca reutilizar una identidad entre dispositivos distintos del mismo usuario sin un protocolo de clonado seguro.