Add Legal Office seal and complete Azure CDN deployment

- Add Legal Office of the Master seal (SVG design with Maltese Cross, scales of justice, legal scroll)
- Create legal-office-manifest-template.json for Legal Office credentials
- Update SEAL_MAPPING.md and DESIGN_GUIDE.md with Legal Office seal documentation
- Complete Azure CDN infrastructure deployment:
  - Resource group, storage account, and container created
  - 17 PNG seal files uploaded to Azure Blob Storage
  - All manifest templates updated with Azure URLs
  - Configuration files generated (azure-cdn-config.env)
- Add comprehensive Azure CDN setup scripts and documentation
- Fix manifest URL generation to prevent double slashes
- Verify all seals accessible via HTTPS
This commit is contained in:
defiQUG
2025-11-12 22:03:42 -08:00
parent 8649ad4124
commit 92cc41d26d
258 changed files with 16021 additions and 1260 deletions

View File

@@ -243,9 +243,14 @@ export class DSBVerifier {
});
}
const firstCredential = presentation.verifiableCredential[0];
const credentialId: string = firstCredential && 'id' in firstCredential && typeof firstCredential.id === 'string'
? firstCredential.id
: 'unknown';
return {
valid: errors.length === 0 && allValid,
credentialId: presentation.verifiableCredential[0]?.id || 'unknown',
credentialId,
credentialType: presentation.verifiableCredential.flatMap((cred) => cred.type),
verifiedAt: new Date().toISOString(),
errors: errors.length > 0 ? errors : undefined,
@@ -283,8 +288,13 @@ export class DSBVerifier {
}
// Create message to verify (credential without proof)
const documentWithoutProof = { ...document } as any;
delete documentWithoutProof.proof;
const documentObj = document as Record<string, unknown>;
const documentWithoutProof: Record<string, unknown> = {};
for (const key in documentObj) {
if (key !== 'proof') {
documentWithoutProof[key] = documentObj[key];
}
}
const message = JSON.stringify(documentWithoutProof);
// Verify signature using DID resolver
@@ -299,9 +309,9 @@ export class DSBVerifier {
/**
* Check credential status
*/
private async checkCredentialStatus(statusListId: string): Promise<'active' | 'suspended' | 'revoked' | 'expired'> {
private async checkCredentialStatus(_statusListId: string): Promise<'active' | 'suspended' | 'revoked' | 'expired'> {
// TODO: Implement status list checking
// const response = await fetch(`${this.config.statusListUrl}/${statusListId}`);
// const response = await fetch(`${this.config.statusListUrl}/${_statusListId}`);
// const statusList = await response.json();
// return statusList.status;