Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Export Center CI / export-ci (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
- Introduced DigestUpsertRequest for handling digest upsert requests with properties like ChannelId, Recipient, DigestKey, Events, and CollectUntil. - Created LockEntity to represent a lightweight distributed lock entry with properties such as Id, TenantId, Resource, Owner, ExpiresAt, and CreatedAt. feat: Implement ILockRepository interface and LockRepository class - Defined ILockRepository interface with methods for acquiring and releasing locks. - Implemented LockRepository class with methods to try acquiring a lock and releasing it, using SQL for upsert operations. feat: Add SurfaceManifestPointer record for manifest pointers - Introduced SurfaceManifestPointer to represent a minimal pointer to a Surface.FS manifest associated with an image digest. feat: Create PolicySimulationInputLock and related validation logic - Added PolicySimulationInputLock record to describe policy simulation inputs and expected digests. - Implemented validation logic for policy simulation inputs, including checks for digest drift and shadow mode requirements. test: Add unit tests for ReplayVerificationService and ReplayVerifier - Created ReplayVerificationServiceTests to validate the behavior of the ReplayVerificationService under various scenarios. - Developed ReplayVerifierTests to ensure the correctness of the ReplayVerifier logic. test: Implement PolicySimulationInputLockValidatorTests - Added tests for PolicySimulationInputLockValidator to verify the validation logic against expected inputs and conditions. chore: Add cosign key example and signing scripts - Included a placeholder cosign key example for development purposes. - Added a script for signing Signals artifacts using cosign with support for both v2 and v3. chore: Create script for uploading evidence to the evidence locker - Developed a script to upload evidence to the evidence locker, ensuring required environment variables are set.
124 lines
3.9 KiB
JSON
124 lines
3.9 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://stellaops.local/airgap/manifest.schema.json",
|
|
"title": "Offline Kit Manifest",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"schemaVersion",
|
|
"bundleId",
|
|
"tenant",
|
|
"environment",
|
|
"createdAt",
|
|
"stalenessWindowHours",
|
|
"replayPolicy",
|
|
"tools",
|
|
"feeds",
|
|
"policies",
|
|
"chunks",
|
|
"hashes"
|
|
],
|
|
"properties": {
|
|
"schemaVersion": { "type": "string", "pattern": "^1\\.\\d+\\.\\d+$" },
|
|
"bundleId": { "type": "string", "pattern": "^offline-kit:[A-Za-z0-9._:-]+$" },
|
|
"tenant": { "type": "string", "minLength": 1 },
|
|
"environment": { "type": "string", "enum": ["prod", "stage", "dev", "test"] },
|
|
"createdAt": { "type": "string", "format": "date-time" },
|
|
"stalenessWindowHours": { "type": "integer", "minimum": 0 },
|
|
"replayPolicy": { "type": "string", "enum": ["hash-only", "full-recompute", "policy-freeze"] },
|
|
"tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["name", "version", "sha256"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"version": { "type": "string" },
|
|
"sha256": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" }
|
|
}
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"feeds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["name", "snapshot", "sha256"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"snapshot": { "type": "string" },
|
|
"sha256": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
|
|
"stalenessHours": { "type": "integer", "minimum": 0 }
|
|
}
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"policies": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["name", "version", "sha256"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"version": { "type": "string" },
|
|
"sha256": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" }
|
|
}
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"chunks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["path", "sha256", "size"],
|
|
"properties": {
|
|
"path": { "type": "string" },
|
|
"sha256": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
|
|
"size": { "type": "integer", "minimum": 0 },
|
|
"kind": { "type": "string", "enum": ["advisory", "sbom", "vex", "policy", "graph", "tooling", "other"] }
|
|
}
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"avScan": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["status"],
|
|
"properties": {
|
|
"status": { "type": "string", "enum": ["not_run", "clean", "findings"] },
|
|
"scanner": { "type": "string" },
|
|
"scanAt": { "type": "string", "format": "date-time" },
|
|
"reportPath": { "type": "string" },
|
|
"reportSha256": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" }
|
|
}
|
|
},
|
|
"hashes": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["manifestSha256", "bundleSha256"],
|
|
"properties": {
|
|
"manifestSha256": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
|
|
"bundleSha256": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" }
|
|
}
|
|
},
|
|
"signatures": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["type", "keyId", "signature"],
|
|
"properties": {
|
|
"type": { "type": "string", "enum": ["dsse", "jws-detached"] },
|
|
"keyId": { "type": "string" },
|
|
"signature": { "type": "string" },
|
|
"envelopeDigest": { "type": "string", "pattern": "^sha256:[A-Fa-f0-9]{64}$" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|