- A bundle
- A path to a blob located on the filesystem (optional)
- Parameters/trust root material
- Signature verification material. One of: a public key or a X509 root certificate
- Root certificate for verifying CT signature.
- A list of X509 root certificates for trust timestamp authorities.
- A threshold in minimum number of signatures from a timestamp authority.
- A list of public keys for the transparency log (Rekor)
- A threshold of minimum number of transparency logs the artifact has been appended to.
- Perform inclusion proof on transparency logs (true/false)
If any step is failing, abort verification unless otherwise specified.
- Verify the signature of the artifact.
- Bundle contains a DSSE envelope.
- Perform the three first step of the verification as defined here.
- Bundle refers to a blob.
- Recalculate the blob's digest with the hash algoritm specified in the bundle.
- Recalculate the signature over the blob by using the algorithm specified by the public key1 or the certificate.
- Bundle contains a DSSE envelope.
- The signature shall be verified against the provided material
(public key or X509 certificate).
- If certificate is used, verify that the complete certificate chain is valid and trusted by the provided root certificate.
- Verify transparency log inclusion.
- For each transparency log entry:
- Verify that the kind/version is exactly the same as the previous entry's (omit for the first entry).
- Recreate the Rekor entry from the bundle and blob (if provided).
- Get the public key for the log. Go to next entry if no key is found.
- Verify that the entry was included onto the log during the time the signing certificate was valid (skip if signature was made with a key-pair).
- Verify that the inclusion proof (SET) is sound given the log's public key.
- If requested, perform an online inclusion proof against the log.
- Increment the number of successful transparency log verifications.
- Compare the number of successful transparency log verifications against the provided threshold.
- For each transparency log entry:
- Verify timestamp authority signatures.
- For each signed timestamp
- Verity that the entire chain from the timestamping authority is trusted by the provided root certificates. If not, proceed with the next signed timestamp.
- Verify that the timestamp token's signature is valid.
- Recreate the digest of the artifact's signature using the algorithm specified in the timestamp token.
- Compare the computed digest with the one in the timestamp token.
- Verify that the artifact was witnessed by the timestamp authority during the time the certificate was valid.
- Increment the number of successful signed timestamps.
- Compare the number of successful signed timestamps against the provided threshold.
- For each signed timestamp
- Return success.
1: The neccesary parameters for are considered to be part of the public key, even if they are not expressed in the encoded key (.e.g PEM).