Skip to content

Commit

Permalink
fix: verify credential before issuer verification
Browse files Browse the repository at this point in the history
  • Loading branch information
nichonien committed Sep 9, 2022
1 parent 5f99392 commit 111923b
Showing 1 changed file with 18 additions and 20 deletions.
38 changes: 18 additions & 20 deletions src/modules/claims/claims.service.ts
Expand Up @@ -1459,20 +1459,27 @@ export class ClaimsService {
if (!issuerDID) {
throw new Error(ERROR_MESSAGES.NO_ISSUER_SPECIFIED);
}

let proofVerified;
let issuerVerified = true;

try {
proofVerified = await this._verifiableCredentialService.verify(vc);
} catch (e) {
proofVerified = false;
errors.push((e as Error).message);
}

if (vc.credentialStatus) {
try {
await this._statusVerifier.verifyCredentialStatus(vc.credentialStatus);
} catch (e) {
issuerVerified = false;
errors.push((e as Error).message);
}
}
if (!proofVerified) {
errors.push(ERROR_MESSAGES.PROOF_NOT_VERIFIED);
}
const role = vc.credentialSubject.role.namespace;
let issuerVerified = true;
try {
if (typeof issuerDID === 'string') {
await this._issuerVerification.verifyIssuer(issuerDID, role);
Expand All @@ -1483,15 +1490,6 @@ export class ClaimsService {
issuerVerified = false;
errors.push((e as Error).message);
}

if (vc.credentialStatus) {
try {
await this._statusVerifier.verifyCredentialStatus(vc.credentialStatus);
} catch (e) {
issuerVerified = false;
errors.push((e as Error).message);
}
}
return {
errors,
isVerified: proofVerified && issuerVerified,
Expand All @@ -1515,14 +1513,6 @@ export class ClaimsService {
if (!issuerDID) {
throw new Error(ERROR_MESSAGES.NO_ISSUER_SPECIFIED);
}
const { verified: issuerVerified, error } =
await this._issuerVerification.verifyIssuer(
issuerDID,
payload?.claimData?.claimType
);
if (!issuerVerified && error) {
throw new Error(ERROR_MESSAGES.NO_ISSUER_SPECIFIED);
}
const proofVerified = await this._didRegistry.verifyPublicClaim(
eip191Jwt,
payload?.iss as string
Expand All @@ -1535,6 +1525,14 @@ export class ClaimsService {
if (isExpired) {
errors.push(ERROR_MESSAGES.CREDENTIAL_EXPIRED);
}
const { verified: issuerVerified, error } =
await this._issuerVerification.verifyIssuer(
issuerDID,
payload?.claimData?.claimType
);
if (!issuerVerified && error) {
throw new Error(ERROR_MESSAGES.NO_ISSUER_SPECIFIED);
}
return {
errors: errors,
isVerified: !!proofVerified && issuerVerified && !isExpired,
Expand Down

0 comments on commit 111923b

Please sign in to comment.