Testigo Insobornable — Verification Material
Cualquier verificador externo (academico, perito, periodista) puede usar la clave publica abajo para confirmar que cada noticia capturada por Mediometro Digital no fue alterada desde su captura.
JSON version:
/index.php?option=com_fuentes&view=testigo&format=json
Public Key
- Algorithm
Ed25519- Curve
edwards25519- Keypair ID
25c5280eaf32a2a9- Public key (hex)
e1fff6ab9afa1e3f0e1865640c0dc2194e339a5a68c5958709e7aab13126af12- Public key (base64)
4f/2q5r6Hj8OGGVkDA3CGU4zmlpoxZWHCeeqsTEmrxI=
How to verify
Canonical blob (LF-separated): item_title
item_link
item_date
captured_at_iso
item_description
- Compute SHA-256 over the canonical blob → 64 hex chars (matches DB
content_sha256). - Verify Ed25519 signature with the public key above against the SHA-256 binary.
Examples
PHP (sodium)
sodium_crypto_sign_verify_detached(hex2bin($sig), hex2bin($sha256), hex2bin($pub_hex))
Python (PyNaCl)
PyNaCl: nacl.signing.VerifyKey(bytes.fromhex(pub)).verify(bytes.fromhex(sha256), bytes.fromhex(sig))
Node.js (tweetnacl)
tweetnacl: nacl.sign.detached.verify(Uint8Array.from(Buffer.from(sha256,"hex")), Uint8Array.from(Buffer.from(sig,"hex")), Uint8Array.from(Buffer.from(pub,"hex")))
Reference
TlamatiniAI Códice 05 §RDSV — Capa A Testigo Insobornable. Implementation: CAL-279 (C1+C5) + CAL-280 (C3).