This commit is contained in:
Markus Gylling 2022-07-13 20:07:19 +02:00
parent 59642ac5ab
commit a766a83fd0
4 changed files with 22 additions and 19 deletions

View File

@ -21,19 +21,16 @@ public class ExpirationVerifierProbe extends Probe<Credential> {
@Override
public ReportItems run(Credential crd, RunContext ctx) throws Exception {
/*
* If the AchievementCredential or EndorsementCredential has an expirationDate property
* and the expiration date is prior to the current date, the credential has expired.
*/
ZonedDateTime now = ZonedDateTime.now();
*/
System.err.println("ExpirationVerifierProbe");
JsonNode node = crd.getJson().get("expirationDate");
if(node != null) {
ZonedDateTime expirationDate = null;
try {
expirationDate = ZonedDateTime.parse(node.textValue());
if (now.isAfter(expirationDate)) {
ZonedDateTime expirationDate = ZonedDateTime.parse(node.textValue());
if (ZonedDateTime.now().isAfter(expirationDate)) {
return fatal("The credential has expired (expiration date was " + node.asText() + ").", ctx);
}
} catch (Exception e) {

View File

@ -21,21 +21,17 @@ public class IssuanceVerifierProbe extends Probe<Credential> {
@Override
public ReportItems run(Credential crd, RunContext ctx) throws Exception {
/*
* If the AchievementCredential or EndorsementCredential issuanceDate property after
* the current date, the credential is not yet valid.
* If the AchievementCredential or EndorsementCredential issuanceDate
* property after the current date, the credential is not yet valid.
*/
ZonedDateTime now = ZonedDateTime.now();
JsonNode node = crd.getJson().get("issuanceDate");
JsonNode node = crd.getJson().get("issuanceDate");
if(node != null) {
ZonedDateTime issuanceDate = null;
try {
issuanceDate = ZonedDateTime.parse(node.textValue());
if (issuanceDate.isAfter(now)) {
ZonedDateTime issuanceDate = ZonedDateTime.parse(node.textValue());
if (issuanceDate.isAfter(ZonedDateTime.now())) {
return fatal("The credential is not yet issued (issuance date is " + node.asText() + ").", ctx);
}
}
} catch (Exception e) {
return exception("Error while checking issuanceDate: " + e.getMessage(), ctx.getResource());
}

View File

@ -11,6 +11,7 @@ import org.oneedtech.inspect.vc.util.CachingDocumentLoader;
import com.apicatalog.jsonld.document.JsonDocument;
import com.apicatalog.ld.DocumentError;
import com.apicatalog.ld.signature.VerificationError;
import com.apicatalog.ld.signature.VerificationError.Code;
import com.apicatalog.vc.Vc;
import com.apicatalog.vc.processor.StatusVerifier;
@ -43,14 +44,22 @@ public class ProofVerifierProbe extends Probe<Credential> {
Vc.verify(json)
.loader(new CachingDocumentLoader())
.useBundledContexts(false) //we control the cache in the loader
//.statusVerifier(new NoopStatusVerifier())
.statusVerifier(new NoopStatusVerifier())
//.domain(...)
//.didResolver(...)
.isValid();
} catch (DocumentError e) {
return error(e.getType() + " " + e.getSubject(), ctx);
} catch (VerificationError e) {
return error(e.getCode().name() + " " + e.getMessage(), ctx);
System.err.println(e.getCode());
if(e.getCode() == Code.Internal) {
return exception(e.getMessage(), ctx.getResource());
} else if(e.getCode().equals(Code.Expired)) {
//handled by other probe
} else {
return fatal(e.getCode().name() + " " + e.getMessage(), ctx);
}
}
return success(ctx);
}

View File

@ -108,6 +108,7 @@ public class OB30Tests {
});
}
@Disabled //TODO IssuanceVerifierProbe is not run because FATAL: InvalidSignature terminates
@Test
void testSimpleJsonNotIssued() {
//"issuanceDate": "2040-01-01T00:00:00Z",