Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 27x 27x 27x 27x 27x 81x 27x 27x 1x | import { cryptoSuiteToType } from '../helpers/cryptoSuite';
import { SupportedVerificationSuites } from '../verifier';
import { type Suite } from '../models/Suite';
import { type Issuer } from '../models/Issuer';
async function loadRequiredVerificationSuite (proofType: string): Promise<Suite> {
if (proofType === SupportedVerificationSuites.MerkleProof2019) {
const { default: MerkleProof2019VerificationSuite } = await import('../suites/MerkleProof2019');
return MerkleProof2019VerificationSuite as unknown as Suite;
}
if (proofType === SupportedVerificationSuites.Ed25519Signature2020) {
const { default: Ed25519Signature2020VerificationSuite } = await import('../suites/Ed25519Signature2020');
return Ed25519Signature2020VerificationSuite as unknown as Suite;
}
if (proofType === SupportedVerificationSuites.EcdsaSecp256k1Signature2019) {
const { default: EcdsaSecp256k1Signature2019VerificationSuite } = await import('../suites/EcdsaSecp256k1Signature2019');
return EcdsaSecp256k1Signature2019VerificationSuite as unknown as Suite;
}
if (proofType === SupportedVerificationSuites.EcdsaSd2023) {
const { default: EcdsaSd2023VerificationSuite } = await import('../suites/EcdsaSd2023');
return EcdsaSd2023VerificationSuite as unknown as Suite;
}
}
export default async function verifyIssuerProfile (issuerProfile: Issuer): Promise<any> {
if (!issuerProfile.proof) {
console.warn('No proof found in the issuer profile.');
return;
}
let proofType = issuerProfile.proof.type;
if (proofType === 'DataIntegrityProof') {
proofType = cryptoSuiteToType(issuerProfile.proof.cryptosuite);
}
const VerificationSuite: any = await loadRequiredVerificationSuite(proofType);
const suite: Suite = new VerificationSuite({
document: issuerProfile,
proof: issuerProfile.proof,
issuer: issuerProfile.issuer ? issuerProfile.issuer : issuerProfile,
executeStep: async (step: string, action: () => any, verificationSuite?: string) => {
return action();
}
});
await suite.init();
try {
await suite.verifyProof();
} catch (e) {
throw new Error(`Issuer profile verification failed: ${e.message}`); // TODO: i18n
}
}
|