Skip to content

Commit b0be38b

Browse files
committed
fix: Allow JWT-based Verifiable Credentials when validating
1 parent 435f8a5 commit b0be38b

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

src/main/java/com/danubetech/verifiablecredentials/VerifiablePresentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public String getJwtVerifiableCredentialString() {
153153
} else if (verifiableCredentialObject instanceof String) {
154154
return (String) verifiableCredentialObject;
155155
}
156-
return null;
156+
throw new IllegalArgumentException("Cannot get JWT verifiable credential: " + verifiableCredentialObject);
157157
}
158158

159159
public DataIntegrityProof getDataIntegrityProof() {

src/main/java/com/danubetech/verifiablecredentials/validation/Validation.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,32 @@ private static void validateRun(Runnable runnable, String message) throws Illega
3333
}
3434
}
3535

36+
private static void validateAllRuns(List<Runnable> runnables, String message) throws IllegalStateException {
37+
boolean exception = false;
38+
for (Runnable runnable : runnables) {
39+
try {
40+
runnable.run();
41+
} catch (Exception ex) {
42+
exception = true;
43+
if (ex.getMessage() != null && ! ex.getMessage().isEmpty()) message = message + " (" + ex.getMessage().trim() + ")";
44+
}
45+
}
46+
if (exception) throw new IllegalStateException(message);
47+
}
48+
49+
private static void validateOneOfRuns(List<Runnable> runnables, String message) throws IllegalStateException {
50+
boolean exception = true;
51+
for (Runnable runnable : runnables) {
52+
try {
53+
runnable.run();
54+
exception = false;
55+
} catch (Exception ex) {
56+
if (ex.getMessage() != null && ! ex.getMessage().isEmpty()) message = message + " (" + ex.getMessage().trim() + ")";
57+
}
58+
}
59+
if (exception) throw new IllegalStateException(message);
60+
}
61+
3662
public static void validate(VerifiableCredential verifiableCredential) throws IllegalStateException {
3763

3864
foundation.identity.jsonld.validation.Validation.validate(verifiableCredential);
@@ -65,7 +91,7 @@ public static void validate(VerifiablePresentation verifiablePresentation) throw
6591

6692
validateRun(() -> validateTrue(! verifiablePresentation.getTypes().isEmpty()), "Bad or missing 'type'.");
6793
validateRun(() -> validateTrue(verifiablePresentation.getTypes().contains(VerifiablePresentation.DEFAULT_JSONLD_TYPES[0])), "type must contain VerifiablePresentation: " + verifiablePresentation.getTypes());
68-
validateRun(() -> validateTrue(verifiablePresentation.getVerifiableCredential() != null || verifiablePresentation.getJwtVerifiableCredentialString() != null), "Bad or missing 'verifiableCredential'.");
94+
validateOneOfRuns(List.of(() -> validateTrue(verifiablePresentation.getVerifiableCredential() != null), () -> validateTrue(verifiablePresentation.getJwtVerifiableCredentialString() != null)), "Bad or missing 'verifiableCredential'.");
6995
}
7096

7197
public static void validate(VerifiableCredentialV2 verifiableCredential) throws IllegalStateException {

0 commit comments

Comments
 (0)