Skip to content

Commit 393cca2

Browse files
committed
feat: Add vp2
1 parent d81ecf6 commit 393cca2

File tree

2 files changed

+64
-6
lines changed

2 files changed

+64
-6
lines changed

src/main/java/com/danubetech/verifiablecredentials/jwt/FromJwtConverter.java

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.danubetech.verifiablecredentials.VerifiableCredential;
55
import com.danubetech.verifiablecredentials.VerifiableCredentialV2;
66
import com.danubetech.verifiablecredentials.VerifiablePresentation;
7+
import com.danubetech.verifiablecredentials.VerifiablePresentationV2;
78
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialKeywords;
89
import com.nimbusds.jwt.JWTClaimsSet;
910
import foundation.identity.jsonld.JsonLDUtils;
@@ -66,9 +67,7 @@ public static VerifiableCredential fromJwtVerifiableCredential(JwtVerifiableCred
6667
verifiableCredentialBuilder.expirationDate(expirationTime);
6768
}
6869

69-
VerifiableCredential verifiableCredential = verifiableCredentialBuilder.build();
70-
71-
return verifiableCredential;
70+
return verifiableCredentialBuilder.build();
7271
}
7372

7473
public static VerifiablePresentation fromJwtVerifiablePresentation(JwtVerifiablePresentation jwtVerifiablePresentation) {
@@ -92,9 +91,7 @@ public static VerifiablePresentation fromJwtVerifiablePresentation(JwtVerifiable
9291
verifiablePresentationBuilder.holder(URI.create(issuer));
9392
}
9493

95-
VerifiablePresentation verifiablePresentation = verifiablePresentationBuilder.build();
96-
97-
return verifiablePresentation;
94+
return verifiablePresentationBuilder.build();
9895
}
9996

10097
public static VerifiablePresentation fromJwtVerifiableCredentialToVerifiablePresentation(JwtVerifiableCredential jwtVerifiableCredential) {
@@ -160,4 +157,29 @@ public static VerifiableCredentialV2 fromJwtVerifiableCredentialV2(JwtVerifiable
160157

161158
return verifiableCredentialBuilder.build();
162159
}
160+
161+
public static VerifiablePresentationV2 fromJwtVerifiablePresentationV2(JwtVerifiablePresentationV2 jwtVerifiablePresentation) {
162+
163+
VerifiablePresentationV2 payloadVerifiablePresentation = VerifiablePresentationV2.fromJson(jwtVerifiablePresentation.getPayloadObject().toString());
164+
165+
VerifiablePresentationV2.Builder<? extends VerifiablePresentationV2.Builder<?>> verifiablePresentationBuilder = VerifiablePresentationV2.builder()
166+
.base(payloadVerifiablePresentation)
167+
.defaultContexts(false)
168+
.defaultTypes(false);
169+
170+
JWTClaimsSet payload = jwtVerifiablePresentation.getPayload();
171+
172+
String jwtId = payload.getJWTID();
173+
if (jwtId != null && payloadVerifiablePresentation.getId() == null) {
174+
verifiablePresentationBuilder.id(URI.create(jwtId));
175+
}
176+
177+
String issuer = payload.getIssuer();
178+
if (issuer != null && payloadVerifiablePresentation.getHolder() == null) {
179+
verifiablePresentationBuilder.holder(URI.create(issuer));
180+
}
181+
182+
return verifiablePresentationBuilder.build();
183+
}
184+
163185
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.danubetech.verifiablecredentials.jwt;
2+
3+
import com.danubetech.verifiablecredentials.VerifiablePresentation;
4+
import com.danubetech.verifiablecredentials.VerifiablePresentationV2;
5+
import com.nimbusds.jose.JWSObject;
6+
import com.nimbusds.jwt.JWTClaimsSet;
7+
import com.nimbusds.jwt.SignedJWT;
8+
9+
import java.text.ParseException;
10+
import java.util.LinkedHashMap;
11+
import java.util.Map;
12+
13+
public class JwtVerifiablePresentationV2 extends JwtWrappingObject<VerifiablePresentationV2> {
14+
15+
public JwtVerifiablePresentationV2(JWTClaimsSet payload, VerifiablePresentationV2 payloadObject, JWSObject jwsObject, String compactSerialization) {
16+
17+
super(payload, payloadObject, jwsObject, compactSerialization);
18+
}
19+
20+
/*
21+
* Factory methods
22+
*/
23+
24+
public static JwtVerifiablePresentationV2 fromCompactSerialization(String compactSerialization) throws ParseException {
25+
26+
SignedJWT signedJWT = SignedJWT.parse(compactSerialization);
27+
28+
JWTClaimsSet jwtPayload = signedJWT.getJWTClaimsSet();
29+
Map<String, Object> jsonObject = (Map<String, Object>) jwtPayload.getClaims().get(JwtKeywords.JWT_CLAIM_VP);
30+
if (jsonObject == null) return null;
31+
32+
VerifiablePresentationV2 payloadVerifiablePresentation = VerifiablePresentationV2.fromJsonObject(new LinkedHashMap<>(jsonObject));
33+
34+
return new JwtVerifiablePresentationV2(jwtPayload, payloadVerifiablePresentation, signedJWT, compactSerialization);
35+
}
36+
}

0 commit comments

Comments
 (0)