feat(cybersecurity): auto-commit con 48 cambios

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-04 23:44:39 +02:00
parent efc9911925
commit 729921e16e
48 changed files with 3765 additions and 8 deletions
@@ -0,0 +1,40 @@
package cybersecurity
import (
"crypto/ed25519"
"crypto/rand"
"golang.org/x/crypto/nacl/box"
)
// Identity holds a dual keypair for a messaging participant:
// an Ed25519 keypair for signing and a X25519 keypair for key exchange.
type Identity struct {
SignPub []byte // Ed25519 public key (32 bytes)
SignPriv []byte // Ed25519 private key (64 bytes)
KexPub []byte // X25519 public key (32 bytes)
KexPriv []byte // X25519 private key (32 bytes)
}
// GenerateIdentity creates a new Identity with freshly generated Ed25519 and X25519 keypairs.
// Ed25519 keys are used for signing; X25519 keys for key exchange (sealed box).
func GenerateIdentity() (Identity, error) {
// Ed25519 keypair for message signing
signPub, signPriv, err := ed25519.GenerateKey(rand.Reader)
if err != nil {
return Identity{}, err
}
// X25519 keypair for key exchange (nacl/box uses Curve25519 internally)
kexPub, kexPriv, err := box.GenerateKey(rand.Reader)
if err != nil {
return Identity{}, err
}
return Identity{
SignPub: []byte(signPub),
SignPriv: []byte(signPriv),
KexPub: kexPub[:],
KexPriv: kexPriv[:],
}, nil
}