729921e16e
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
52 lines
1.8 KiB
Markdown
52 lines
1.8 KiB
Markdown
---
|
|
name: verify_ed25519
|
|
kind: function
|
|
lang: go
|
|
domain: cybersecurity
|
|
version: "1.0.0"
|
|
purity: pure
|
|
signature: "func VerifyEd25519(pub, msg, sig []byte) bool"
|
|
description: "Verifica una firma Ed25519 sobre un mensaje usando la clave pública del firmante. Devuelve true solo si la firma es auténtica. 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: pub
|
|
desc: "Clave pública Ed25519 de 32 bytes del firmante. Viene del campo SignPub de su Identity."
|
|
- name: msg
|
|
desc: "Mensaje original que fue firmado. Debe ser idéntico al pasado a SignEd25519."
|
|
- name: sig
|
|
desc: "Firma de 64 bytes producida por SignEd25519."
|
|
output: "true si la firma es válida para (pub, msg). false en cualquier otro caso: firma incorrecta, pub equivocada, msg alterado, o sig corrupta."
|
|
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/verify_ed25519.go"
|
|
---
|
|
|
|
## Ejemplo
|
|
|
|
```go
|
|
// Receptor verifica autoría antes de descifrar
|
|
if !cybersecurity.VerifyEd25519(sender.SignPub, ciphertext, sig) {
|
|
log.Println("firma inválida: mensaje descartado")
|
|
return
|
|
}
|
|
// Solo si la firma es válida, descifrar con OpenAEAD
|
|
plaintext, err := cybersecurity.OpenAEAD(roomKey, nonce, ciphertext, aad)
|
|
```
|
|
|
|
## Cuando usarla
|
|
|
|
Al recibir un mensaje del bus: verifica la firma del remitente sobre el ciphertext antes de intentar descifrar. Devuelve false para cualquier fallo de autenticación — nunca procesar un mensaje con firma inválida.
|