Implement VEX document verification system with issuer management and signature verification

- Added IIssuerDirectory interface for managing VEX document issuers, including methods for registration, revocation, and trust validation.
- Created InMemoryIssuerDirectory class as an in-memory implementation of IIssuerDirectory for testing and single-instance deployments.
- Introduced ISignatureVerifier interface for verifying signatures on VEX documents, with support for multiple signature formats.
- Developed SignatureVerifier class as the default implementation of ISignatureVerifier, allowing extensibility for different signature formats.
- Implemented handlers for DSSE and JWS signature formats, including methods for verification and signature extraction.
- Defined various records and enums for issuer and signature metadata, enhancing the structure and clarity of the verification process.
This commit is contained in:
StellaOps Bot
2025-12-06 13:41:22 +02:00
parent 2141196496
commit 5e514532df
112 changed files with 24861 additions and 211 deletions

View File

@@ -1,4 +1,5 @@
import { expect, test } from '@playwright/test';
import { expect, test } from '@playwright/test';
import { policyAuthorSession } from '../src/app/testing';
const mockConfig = {
authority: {
@@ -24,7 +25,7 @@ const mockConfig = {
},
};
test.beforeEach(async ({ page }) => {
test.beforeEach(async ({ page }) => {
page.on('console', (message) => {
// bubble up browser logs for debugging
console.log('[browser]', message.type(), message.text());
@@ -32,7 +33,7 @@ test.beforeEach(async ({ page }) => {
page.on('pageerror', (error) => {
console.log('[pageerror]', error.message);
});
await page.addInitScript(() => {
await page.addInitScript(() => {
// Capture attempted redirects so the test can assert against them.
(window as any).__stellaopsAssignedUrls = [];
const originalAssign = window.location.assign.bind(window.location);
@@ -40,8 +41,10 @@ test.beforeEach(async ({ page }) => {
(window as any).__stellaopsAssignedUrls.push(url.toString());
};
window.sessionStorage.clear();
});
window.sessionStorage.clear();
// Seed a default Policy Studio author session so guarded routes load in e2e
(window as any).__stellaopsTestSession = policyAuthorSession;
});
await page.route('**/config.json', (route) =>
route.fulfill({
status: 200,