729921e16e
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
---
|
|
name: sign_ed25519
|
|
kind: function
|
|
lang: go
|
|
domain: cybersecurity
|
|
version: "1.0.0"
|
|
purity: pure
|
|
signature: "func SignEd25519(priv, msg []byte) []byte"
|
|
description: "Firma un mensaje con una clave privada Ed25519 y devuelve la firma de 64 bytes. Determinista: mismas entradas producen siempre la misma firma. Sin efectos secundarios ni I/O."
|
|
tags: [messaging, e2e-crypto, crypto, ed25519, signing, pure, e2e-messaging]
|
|
uses_functions: []
|
|
uses_types: []
|
|
returns: []
|
|
returns_optional: false
|
|
error_type: ""
|
|
imports:
|
|
- crypto/ed25519
|
|
params:
|
|
- name: priv
|
|
desc: "Clave privada Ed25519 de 64 bytes. Viene del campo SignPriv de Identity."
|
|
- name: msg
|
|
desc: "Bytes a firmar. Puede ser cualquier dato: ciphertext, evento, room key distribuida, etc."
|
|
output: "Firma Ed25519 de exactamente 64 bytes. Siempre determinista para la misma (priv, msg)."
|
|
tested: true
|
|
tests:
|
|
- "firma y verificacion exitosa"
|
|
- "firma es determinista (misma entrada, misma firma)"
|
|
- "falla con mensaje modificado"
|
|
- "falla con clave publica incorrecta"
|
|
- "falla con firma corrupta"
|
|
test_file_path: "functions/cybersecurity/e2e_messaging_crypto_test.go"
|
|
file_path: "functions/cybersecurity/sign_ed25519.go"
|
|
---
|
|
|
|
## Ejemplo
|
|
|
|
```go
|
|
// Firmar el ciphertext de un mensaje antes de transmitirlo
|
|
sig := cybersecurity.SignEd25519(id.SignPriv, ciphertext)
|
|
// Transmitir ciphertext + sig; el receptor verifica con VerifyEd25519
|
|
```
|
|
|
|
## Cuando usarla
|
|
|
|
Después de cifrar un mensaje con SealAEAD: firma el ciphertext (no el plaintext) con tu SignPriv para que el receptor pueda verificar la autoría con VerifyEd25519. También útil para firmar eventos de control del bus (rotación de clave, join/leave de sala).
|