@markdown-ai/cli 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HOW-TO-USE.md +386 -0
- package/README.md +18 -0
- package/dist/cli.js +11297 -0
- package/dist/conformance/README.md +36 -0
- package/dist/conformance/invalid/11-name-uppercase.mda +8 -0
- package/dist/conformance/invalid/12-description-over-1024.mda +8 -0
- package/dist/conformance/invalid/13-skill-output-mda-extended-toplevel.md +10 -0
- package/dist/conformance/invalid/14-signature-without-integrity.mda +14 -0
- package/dist/conformance/invalid/15-version-range-compound.mda +13 -0
- package/dist/conformance/invalid/16-agents-md-allowed-tools-toplevel.md +8 -0
- package/dist/conformance/invalid/17-mcp-server-md-missing-name.md +7 -0
- package/dist/conformance/invalid/18-integrity-bad-digest-length.mda +11 -0
- package/dist/conformance/invalid/19-signature-digest-mismatch.mda +17 -0
- package/dist/conformance/invalid/24-unterminated-frontmatter.mda +7 -0
- package/dist/conformance/invalid/25-invalid-utf8.mda +8 -0
- package/dist/conformance/invalid/26-skill-md-body-only.md +3 -0
- package/dist/conformance/invalid/28-trust-policy-issuer-only.json +12 -0
- package/dist/conformance/invalid/29-sigstore-signature-without-rekor.mda +15 -0
- package/dist/conformance/invalid/30-did-web-signature-with-rekor.mda +17 -0
- package/dist/conformance/invalid/31-payload-type-jcs-suffix.mda +18 -0
- package/dist/conformance/invalid/32-trust-policy-sigstore-without-rekor.json +10 -0
- package/dist/conformance/invalid/33-trust-policy-sigstore-empty-rekor.json +11 -0
- package/dist/conformance/invalid/34-trust-policy-sigstore-rekor-disabled.json +14 -0
- package/dist/conformance/invalid/37-trusted-runtime-missing-integrity.mda +11 -0
- package/dist/conformance/invalid/38-trusted-runtime-missing-signature.mda +14 -0
- package/dist/conformance/invalid/39-trusted-runtime-duplicate-did-web-signature.mda +25 -0
- package/dist/conformance/invalid/40-trusted-runtime-untrusted-did-web-signer.mda +20 -0
- package/dist/conformance/invalid/41-trust-policy-did-web-with-rekor.json +12 -0
- package/dist/conformance/invalid/44-trusted-runtime-untrusted-sigstore-subject.mda +23 -0
- package/dist/conformance/invalid/45-runtime-policy-version-2.json +9 -0
- package/dist/conformance/manifest.yaml +376 -0
- package/dist/conformance/valid/01-frontmatter-minimal.mda +8 -0
- package/dist/conformance/valid/03-relationships-with-mirror.mda +20 -0
- package/dist/conformance/valid/04-depends-on-and-requires.mda +21 -0
- package/dist/conformance/valid/05-integrity-sha256.mda +14 -0
- package/dist/conformance/valid/06-sigstore-signed.mda +22 -0
- package/dist/conformance/valid/07-did-web-signed.mda +20 -0
- package/dist/conformance/valid/08-agents-md-frontmatter-free.md +9 -0
- package/dist/conformance/valid/09-agents-md-with-frontmatter.md +12 -0
- package/dist/conformance/valid/20-bom-prefixed.mda +8 -0
- package/dist/conformance/valid/21-crlf-line-endings.mda +8 -0
- package/dist/conformance/valid/22-body-with-horizontal-rule.mda +16 -0
- package/dist/conformance/valid/23-empty-body.mda +4 -0
- package/dist/conformance/valid/27-trust-policy-github-actions.json +13 -0
- package/dist/conformance/valid/35-trust-policy-did-web.json +9 -0
- package/dist/conformance/valid/36-trust-policy-did-web-two-signatures.json +14 -0
- package/dist/conformance/valid/42-trust-policy-human-sigstore.json +13 -0
- package/dist/conformance/valid/43-trusted-runtime-sigstore-signed.mda +23 -0
- package/dist/schemas/_defs/depends-on.schema.json +18 -0
- package/dist/schemas/_defs/description.schema.json +9 -0
- package/dist/schemas/_defs/integrity.schema.json +34 -0
- package/dist/schemas/_defs/iso8601.schema.json +8 -0
- package/dist/schemas/_defs/mda-extended.schema.json +43 -0
- package/dist/schemas/_defs/mda-keys.schema.json +34 -0
- package/dist/schemas/_defs/metadata-namespaces.schema.json +48 -0
- package/dist/schemas/_defs/name.schema.json +10 -0
- package/dist/schemas/_defs/requires.schema.json +13 -0
- package/dist/schemas/_defs/signature.schema.json +72 -0
- package/dist/schemas/_defs/version-range.schema.json +8 -0
- package/dist/schemas/frontmatter-agents-md.schema.json +24 -0
- package/dist/schemas/frontmatter-mcp-server-md.schema.json +25 -0
- package/dist/schemas/frontmatter-skill-md.schema.json +26 -0
- package/dist/schemas/frontmatter-source.schema.json +37 -0
- package/dist/schemas/mda-trust-policy.schema.json +113 -0
- package/dist/schemas/relationship-footnote.schema.json +45 -0
- package/package.json +42 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# MDA conformance suite
|
|
2
|
+
|
|
3
|
+
A reference set of fixtures for validators and compilers. Every fixture is bound to one or more spec rules in `manifest.yaml` so a failing run identifies which rule fired.
|
|
4
|
+
|
|
5
|
+
## Layout
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
conformance/
|
|
9
|
+
├── manifest.yaml # Binds fixture → rule id → expected verdict
|
|
10
|
+
├── valid/ # MUST pass source-side validation
|
|
11
|
+
├── invalid/ # MUST fail validation; reason in manifest
|
|
12
|
+
└── compile/ # MUST compile to expected output (per-fixture subdir)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## How to use
|
|
16
|
+
|
|
17
|
+
A conforming MDA validator MUST:
|
|
18
|
+
|
|
19
|
+
1. Load `manifest.yaml`.
|
|
20
|
+
2. For each entry under `valid/`: validate the file against the schemas indicated in its `against` list. Verdict MUST be **accept**.
|
|
21
|
+
3. For each entry under `invalid/`: validate the file. Verdict MUST be **reject**. Rule IDs are informative for humans; when `expected-error` is present, the rejection category MUST match it.
|
|
22
|
+
4. For each entry under `compile/`: read `input.mda`, compile to the named target, and compare the output tree to `expected/` byte-for-byte (after YAML-key-order normalization).
|
|
23
|
+
|
|
24
|
+
For trusted-runtime semantic fixtures, `verified-identities` records the
|
|
25
|
+
post-crypto identity that the runner should match against the trust policy.
|
|
26
|
+
|
|
27
|
+
A run that disagrees with the manifest on any entry is a non-conformance.
|
|
28
|
+
|
|
29
|
+
## Adding fixtures
|
|
30
|
+
|
|
31
|
+
When a new spec rule is added, add at least one `valid/` and one `invalid/` fixture exercising it. Update `manifest.yaml` in the same PR.
|
|
32
|
+
|
|
33
|
+
Numbering convention: fixture IDs are stable numeric slugs. Allocate the next
|
|
34
|
+
unused integer; do not infer fixture type from the number.
|
|
35
|
+
|
|
36
|
+
The compiler's CI MUST run this suite on every PR.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: too-long-description
|
|
3
|
+
description: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Too long
|
|
7
|
+
|
|
8
|
+
This source's description exceeds 1024 characters; expected to be rejected by §02-2.2.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bad-skill-output
|
|
3
|
+
description: Compiled SKILL.md keeps `doc-id` at the top level instead of nesting under metadata.mda. Expected to be rejected by §06-targets/skill-md §06-3.3 (unevaluatedProperties:false).
|
|
4
|
+
doc-id: 99999999-9999-9999-9999-999999999999
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Bad SKILL output
|
|
8
|
+
|
|
9
|
+
A conformant compiler MUST relocate `doc-id` to `metadata.mda.doc-id`. This file
|
|
10
|
+
exists to verify that the strict SKILL.md target schema rejects the violation.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bad-signature-no-integrity
|
|
3
|
+
description: Source declaring signatures[] without the required integrity anchor. The dependentRequired clause MUST reject this.
|
|
4
|
+
signatures:
|
|
5
|
+
- signer: "did-web:tools.example.com"
|
|
6
|
+
key-id: "ed25519-9c4e7b"
|
|
7
|
+
payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
8
|
+
algorithm: ed25519
|
|
9
|
+
signature: "BASE64ILLUSTRATIVE=="
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Bad
|
|
13
|
+
|
|
14
|
+
This fixture has a signature but no integrity field; the source schema MUST reject it.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bad-version-range
|
|
3
|
+
description: Source declaring a depends-on entry with a compound version-range. v1.0 admits only exact and caret ranges; the schema MUST reject.
|
|
4
|
+
metadata:
|
|
5
|
+
mda:
|
|
6
|
+
depends-on:
|
|
7
|
+
- name: pdf-tools
|
|
8
|
+
version-range: ">=1.2.0 <2.0.0"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Bad
|
|
12
|
+
|
|
13
|
+
This fixture uses a compound version-range (`>=1.2.0 <2.0.0`) which is not in the v1.0 admitted subset.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: AGENTS.md output that places allowed-tools at the top level. The AGENTS.md target schema forbids this; allowed-tools must nest under the relevant vendor namespace.
|
|
3
|
+
allowed-tools: "Read Bash(git:*)"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Bad AGENTS.md
|
|
7
|
+
|
|
8
|
+
This file violates §06-targets/agents-md §06-3.2.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bad-integrity-length
|
|
3
|
+
description: Source declaring sha256 algorithm with a digest of incorrect length. The conditional length constraint MUST reject.
|
|
4
|
+
integrity:
|
|
5
|
+
algorithm: sha256
|
|
6
|
+
digest: "sha256:a4f9c0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Bad
|
|
10
|
+
|
|
11
|
+
This fixture has a sha256 algorithm but only 6 hex characters in the digest; sha256 requires exactly 64.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bad-signature-digest-mismatch
|
|
3
|
+
description: Source whose signatures[0].payload-digest is well-formed but does NOT equal integrity.digest. The §09-2 cross-field rule MUST reject.
|
|
4
|
+
integrity:
|
|
5
|
+
algorithm: sha256
|
|
6
|
+
digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
7
|
+
signatures:
|
|
8
|
+
- signer: "did-web:tools.example.com"
|
|
9
|
+
key-id: "ed25519-9c4e7b"
|
|
10
|
+
payload-digest: "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
|
11
|
+
algorithm: ed25519
|
|
12
|
+
signature: "BASE64ILLUSTRATIVE=="
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Bad
|
|
16
|
+
|
|
17
|
+
Both digests pass schema validation individually (correct prefix, correct hex length), but they are not equal. §09-2 mandates byte-for-byte equality, enforced by the runner's semantic check.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unterminated
|
|
3
|
+
description: Opening fence with no closing --- line; §02-1.1 step 5 requires extractors to refuse this file.
|
|
4
|
+
|
|
5
|
+
# Body never reached
|
|
6
|
+
|
|
7
|
+
The conformance runner records this fixture as a §02-1.1 step 5 rejection (extraction-expected: unterminated-frontmatter).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: invalid-utf8-source
|
|
3
|
+
description: Body contains a stray 0xFF byte; UTF-8 decode MUST fail per §02-1.1 step 2.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Invalid UTF-8
|
|
7
|
+
|
|
8
|
+
This line ends with a stray byte: � and that byte is not a valid UTF-8 continuation, so the strict TextDecoder raises and the runner records an invalid-encoding rejection.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Skill without frontmatter
|
|
2
|
+
|
|
3
|
+
This file has no opening `---` fence at offset 0. AGENTS.md permits frontmatter-free authoring (§06-targets/agents-md), but every other Tier-1/Tier-2 target — including SKILL.md — requires a YAML frontmatter block. The conformance runner records this fixture as a §02 / §06-targets/skill-md rejection.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sigstore-without-rekor
|
|
3
|
+
description: Invalid Sigstore signature fixture with missing Rekor coordinates.
|
|
4
|
+
integrity:
|
|
5
|
+
algorithm: sha256
|
|
6
|
+
digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
7
|
+
signatures:
|
|
8
|
+
- signer: "sigstore-oidc:https://token.actions.githubusercontent.com"
|
|
9
|
+
key-id: "fulcio:abc123"
|
|
10
|
+
payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
11
|
+
algorithm: ecdsa-p256
|
|
12
|
+
signature: "MEUCIQDkX"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Invalid Sigstore Signature
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: did-web-with-rekor
|
|
3
|
+
description: Invalid did:web signature fixture with Sigstore-only Rekor fields.
|
|
4
|
+
integrity:
|
|
5
|
+
algorithm: sha256
|
|
6
|
+
digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
7
|
+
signatures:
|
|
8
|
+
- signer: "did-web:tools.example.com"
|
|
9
|
+
key-id: "ed25519:abc123"
|
|
10
|
+
payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
11
|
+
algorithm: ed25519
|
|
12
|
+
signature: "MEUCIQDkX"
|
|
13
|
+
rekor-log-id: "c0d23b6c4f2"
|
|
14
|
+
rekor-log-index: 123
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Invalid did:web Signature
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: payload-type-jcs-suffix
|
|
3
|
+
description: Invalid signature fixture using a non-IANA +jcs+json structured suffix.
|
|
4
|
+
integrity:
|
|
5
|
+
algorithm: sha256
|
|
6
|
+
digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
7
|
+
signatures:
|
|
8
|
+
- signer: "sigstore-oidc:https://token.actions.githubusercontent.com"
|
|
9
|
+
key-id: "fulcio:abc123"
|
|
10
|
+
payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
11
|
+
algorithm: ecdsa-p256
|
|
12
|
+
signature: "MEUCIQDkX"
|
|
13
|
+
rekor-log-id: "c0d23b6c4f2"
|
|
14
|
+
rekor-log-index: 123
|
|
15
|
+
payload-type: "application/vnd.example.llm-config+jcs+json"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Invalid Payload Type
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"trustedSigners": [
|
|
4
|
+
{
|
|
5
|
+
"type": "sigstore-oidc",
|
|
6
|
+
"issuer": "https://token.actions.githubusercontent.com",
|
|
7
|
+
"subject": "repo:sno-ai/llmix:ref:refs/tags/v2.0.0"
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
"rekor": {
|
|
11
|
+
"url": "https://rekor.sigstore.dev",
|
|
12
|
+
"required": false
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trusted-runtime-missing-integrity
|
|
3
|
+
description: Schema-valid source that trusted-runtime must reject because integrity is absent.
|
|
4
|
+
metadata:
|
|
5
|
+
mda:
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Missing integrity
|
|
10
|
+
|
|
11
|
+
Schema validation can pass, but production trusted-runtime cannot load it.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trusted-runtime-missing-signature
|
|
3
|
+
description: Schema-valid source that trusted-runtime must reject because signatures are absent.
|
|
4
|
+
integrity:
|
|
5
|
+
algorithm: sha256
|
|
6
|
+
digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
7
|
+
metadata:
|
|
8
|
+
mda:
|
|
9
|
+
version: "1.0.0"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Missing signature
|
|
13
|
+
|
|
14
|
+
Integrity alone is not enough for trusted-runtime.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trusted-runtime-duplicate-did-web-signature
|
|
3
|
+
description: Two valid-looking signatures from the same trusted did:web identity must count once.
|
|
4
|
+
integrity:
|
|
5
|
+
algorithm: sha256
|
|
6
|
+
digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
7
|
+
signatures:
|
|
8
|
+
- signer: "did-web:tools.example.com"
|
|
9
|
+
key-id: "ed25519-9c4e7b"
|
|
10
|
+
payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
11
|
+
algorithm: ed25519
|
|
12
|
+
signature: "BASE64ILLUSTRATIVE=="
|
|
13
|
+
- signer: "did-web:tools.example.com"
|
|
14
|
+
key-id: "ed25519-9c4e7b"
|
|
15
|
+
payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
16
|
+
algorithm: ed25519
|
|
17
|
+
signature: "BASE64ILLUSTRATIVE=="
|
|
18
|
+
metadata:
|
|
19
|
+
mda:
|
|
20
|
+
version: "1.0.0"
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Duplicate signer
|
|
24
|
+
|
|
25
|
+
Duplicate entries do not satisfy a two-identity quorum.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trusted-runtime-untrusted-did-web-signer
|
|
3
|
+
description: Schema-valid signed source whose did:web signer is outside the runtime trust policy.
|
|
4
|
+
integrity:
|
|
5
|
+
algorithm: sha256
|
|
6
|
+
digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
7
|
+
signatures:
|
|
8
|
+
- signer: "did-web:evil.example.com"
|
|
9
|
+
key-id: "ed25519-9c4e7b"
|
|
10
|
+
payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
11
|
+
algorithm: ed25519
|
|
12
|
+
signature: "BASE64ILLUSTRATIVE=="
|
|
13
|
+
metadata:
|
|
14
|
+
mda:
|
|
15
|
+
version: "1.0.0"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Untrusted signer
|
|
19
|
+
|
|
20
|
+
The signature shape is valid, but the signer is not trusted.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trusted-runtime-untrusted-sigstore-subject
|
|
3
|
+
description: Schema-valid Sigstore-signed source whose verified OIDC subject is outside the runtime trust policy.
|
|
4
|
+
integrity:
|
|
5
|
+
algorithm: sha256
|
|
6
|
+
digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
7
|
+
signatures:
|
|
8
|
+
- signer: "sigstore-oidc:https://accounts.google.com"
|
|
9
|
+
key-id: "fulcio:9c4e7b2f1a05c3b9e2d6c2b1e7f0a8d4c3b9e2f1a05c3b9e2d6c2b1e7f0a8d4c"
|
|
10
|
+
payload-digest: "sha256:a4f9c0d2e8b3a16e9c01b8f3d2a5c7b14e9f8a3d6c2b1e7f0a8d4c3b9e2f1a05"
|
|
11
|
+
algorithm: ecdsa-p256
|
|
12
|
+
signature: "MEUCIQDkXILLUSTRATIVESIGNATUREBYTESFORFIXTUREPURPOSESONLY=="
|
|
13
|
+
rekor-log-id: "c0d23b6c4f200000000000000000000000000000000000000000000000000000"
|
|
14
|
+
rekor-log-index: 87654321
|
|
15
|
+
metadata:
|
|
16
|
+
mda:
|
|
17
|
+
version: "1.0.0"
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Untrusted Sigstore subject
|
|
21
|
+
|
|
22
|
+
The Sigstore issuer is recognized, but the verified OIDC subject does not match
|
|
23
|
+
the runtime trust policy.
|