Firma, comprobación y custodia

Cómo se acredita que el expediente no ha sido alterado, quién lo levantó y qué consta en cada traspaso.

Clave de firma

Foruster no genera ni guarda claves: la clave es del laboratorio y se crea una sola vez.

# Privada. Custódiala: quien la tenga puede firmar.
openssl genpkey -algorithm ed25519 -out laboratorio.key
chmod 600 laboratorio.key

# Pública, para quien deba verificar.
openssl pkey -in laboratorio.key -pubout -out laboratorio.pub

Firmar un expediente ya cerrado:

foruster-cli sign /casos/EXP-1-2026 --key laboratorio.key \
  --signer "Nombre Apellidos" --signer-id "ID-0001"

La clave pública se reparte por fuera del expediente: por diligencia, en el pie del informe o desde el registro del laboratorio.

Una clave pública que venga dentro del expediente no sirve de raíz de confianza. Quien pueda alterar el expediente puede cambiarla y volver a firmar. Tienes que aportar por tu cuenta la clave en la que confías; sin ella, Foruster declara que la firma está presente pero sin comprobar, nunca que sea válida.

Verificación

Foruster revisa el manifiesto, la cadena de auditoría y el hash de cada elemento; con --public-key, también la firma. Sale con código distinto de cero si algo no concuerda. Añade --json y obtendrás un campo pass, para no tener que leer la prosa desde un script.

foruster-cli verify /casos/EXP-1-2026 --public-key laboratorio.pub

Por un tercero

La firma se calcula sobre los bytes del manifiesto tal y como están guardados. Por eso se comprueba sin ejecutar Foruster:

openssl pkeyutl -verify -pubin -inkey laboratorio.pub \
  -rawin -in manifest.json -sigfile manifest.sig

Custodia

Cada traspaso se añade al final de la misma cadena. Si vuelves a comprobar el expediente, verás que ese añadido no la rompió.

foruster-cli custody /casos/EXP-1-2026 --to "Secretaría" \
  --operator "Nombre Apellidos" --operator-id "ID-0001"