Verificar artefactos y registro
El comando solidiom verify proporciona tres mecanismos de verificación: firmas de artefactos individuales con sigstore, verificación con claves confiables, e integridad del catálogo del registro.
Modos de verificación
El modo de verificación se controla mediante .solidiom/policy.json:
{
"signatureMode": "sigstore"
}Los modos disponibles son:
none— verificación deshabilitada (valor predeterminado)sigstore— verificación sin claves usando Sigstoretrusted-keys— verificación con claves ed25519/RSA explícitas
Verificar un artefacto
solidiom verify ./dist/dialog.tgzEl comando consulta .solidiom/policy.json para determinar el modo de verificación, aplica el método correspondiente, y reporta el resultado.
Modos sin claves (sigstore)
En el modo sigstore, la CLI usa @sigstore/verify y @sigstore/tuf para verificación sin claves:
- Busca un bundle Sigstore junto al artefacto (
<artefacto>.sigstore.json) - Obtiene la raíz de confianza de TUF (o usa la caché con
--no-network) - Verifica la cadena de certificados, inclusión en tlog, e identidad contra
policy.trustedIdentities
solidiom verify ./dist/dialog.tgz --no-networkClaves confiables (trusted-keys)
En el modo trusted-keys, la CLI lee .solidiom/trusted-keys.json y verifica la firma del artefacto contra cada clave activa:
[
{
"id": "key-1",
"algorithm": "ed25519",
"publicKey": "-----BEGIN PUBLIC KEY-----\n...",
"status": "active",
"addedAt": "2025-01-01T00:00:00Z"
}
]Los algoritmos soportados son ed25519, rsa-sha256, y rsa-sha512.
Las claves con status: "retired" se aceptan para artefactos firmados antes de su fecha retiredAt.
Verificar el registro
La bandera --registry activa la verificación de integridad del catálogo:
solidiom verify --registryEste modo verifica:
- Que
registry/index.jsonse ajuste al esquema soportado - Que cada manifiesto por primitivo exista, sea válido, y su
filesHashcoincida con la recomputación de susfileDigests - Si la política lo requiere, que la firma del índice del registro se verifique contra las claves de confianza
Firma del registro
Si policy.registrySignatureRequired es true, el índice del registro debe携带 una firma Ed25519 válida:
{
"registrySignatureRequired": true,
"registryPublicKeys": ["clave-publica-ed25519-base64"]
}La CLI verifica contra claves públicas embebidas en el paquete CLI, REGISTRY_VERIFY_KEY (clave pública Ed25519 en base64), y policy.registryPublicKeys.
export REGISTRY_VERIFY_KEY=clave-publica-ed25519-base64
solidiom verify --registrySalida
Verificación exitosa
solidiom verify ./dist/dialog.tgz
# Verified (sigstore): Sigstore bundle verified
solidiom verify --registry
# Registry verified: 12 manifest(s) checkedVerificación fallida
solidiom verify ./dist/dialog.tgz
# Verification failed (sigstore): No Sigstore bundle found alongside artifact
solidiom verify --registry
# Registry verification failed:
# dialog: filesHash mismatchSalida JSON
solidiom verify ./dist/dialog.tgz --json
solidiom verify --registry --jsonOpciones
| Bandera | Descripción |
|---|---|
--no-network | Saltar obtención de TUF; usar raíz de confianza en caché |
--registry | Verificar integridad del catálogo del registro en lugar de un artefacto |
--json | Salida en formato JSON |
Códigos de salida
0— verificación exitosa1— verificación fallida o violaciones