@@ -19,7 +19,7 @@ public class ToJwtConverter {
1919 * from JSON-LD to JWT VC
2020 */
2121
22- public static JwtVerifiableCredential toJwtVerifiableCredential (VerifiableCredential verifiableCredential , String aud ) {
22+ public static JwtVerifiableCredential toJwtVerifiableCredential (VerifiableCredential verifiableCredential , String aud , boolean preserveVerifiableCredentialProperties ) {
2323
2424 JWTClaimsSet .Builder jwtPayloadBuilder = new JWTClaimsSet .Builder ();
2525
@@ -33,41 +33,46 @@ public static JwtVerifiableCredential toJwtVerifiableCredential(VerifiableCreden
3333 URI id = verifiableCredential .getId ();
3434 if (id != null ) {
3535 jwtPayloadBuilder .jwtID (id .toString ());
36- JsonLDUtils .jsonLdRemove (payloadVerifiableCredential , JsonLDKeywords .JSONLD_TERM_ID );
36+ if (!preserveVerifiableCredentialProperties ) {
37+ JsonLDUtils .jsonLdRemove (payloadVerifiableCredential , JsonLDKeywords .JSONLD_TERM_ID );
38+ }
3739 }
3840
3941 CredentialSubject credentialSubject = verifiableCredential .getCredentialSubject ();
40- if (credentialSubject != null ) {
41- if (credentialSubject .getId () != null ) {
42- jwtPayloadBuilder .subject (credentialSubject .getId ().toString ());
42+ if (credentialSubject != null && credentialSubject .getId () != null ) {
43+ jwtPayloadBuilder .subject (credentialSubject .getId ().toString ());
44+ if (!preserveVerifiableCredentialProperties ) {
45+ CredentialSubject payloadCredentialSubject = CredentialSubject .builder ()
46+ .base (credentialSubject )
47+ .build ();
48+ JsonLDUtils .jsonLdRemove (payloadCredentialSubject , JsonLDKeywords .JSONLD_TERM_ID );
49+ CredentialSubject .removeFromJsonLdObject (payloadVerifiableCredential );
50+ payloadCredentialSubject .addToJsonLDObject (payloadVerifiableCredential );
4351 }
44- CredentialSubject payloadCredentialSubject = CredentialSubject .builder ()
45- .base (credentialSubject )
46- .build ();
47- JsonLDUtils .jsonLdRemove (payloadCredentialSubject , JsonLDKeywords .JSONLD_TERM_ID );
48- CredentialSubject .removeFromJsonLdObject (payloadVerifiableCredential );
49- payloadCredentialSubject .addToJsonLDObject (payloadVerifiableCredential );
5052 }
5153
5254 URI issuer = verifiableCredential .getIssuer ();
5355 if (issuer != null ) {
5456 jwtPayloadBuilder .issuer (issuer .toString ());
55- if ( verifiableCredential .getJsonObject ().containsKey (VerifiableCredentialKeywords .JSONLD_TERM_ISSUER )
56- && !( verifiableCredential .getJsonObject ().get (VerifiableCredentialKeywords .JSONLD_TERM_ISSUER ) instanceof Map )) {
57+ if (!preserveVerifiableCredentialProperties ) {
5758 JsonLDUtils .jsonLdRemove (payloadVerifiableCredential , VerifiableCredentialKeywords .JSONLD_TERM_ISSUER );
5859 }
5960 }
6061
6162 Date issuanceDate = verifiableCredential .getIssuanceDate ();
6263 if (issuanceDate != null ) {
6364 jwtPayloadBuilder .notBeforeTime (issuanceDate );
64- JsonLDUtils .jsonLdRemove (payloadVerifiableCredential , VerifiableCredentialKeywords .JSONLD_TERM_ISSUANCEDATE );
65+ if (!preserveVerifiableCredentialProperties ) {
66+ JsonLDUtils .jsonLdRemove (payloadVerifiableCredential , VerifiableCredentialKeywords .JSONLD_TERM_ISSUANCEDATE );
67+ }
6568 }
6669
6770 Date expirationDate = verifiableCredential .getExpirationDate ();
6871 if (expirationDate != null ) {
6972 jwtPayloadBuilder .expirationTime (expirationDate );
70- JsonLDUtils .jsonLdRemove (payloadVerifiableCredential , VerifiableCredentialKeywords .JSONLD_TERM_EXPIRATIONDATE );
73+ if (!preserveVerifiableCredentialProperties ) {
74+ JsonLDUtils .jsonLdRemove (payloadVerifiableCredential , VerifiableCredentialKeywords .JSONLD_TERM_EXPIRATIONDATE );
75+ }
7176 }
7277
7378 if (aud != null ) {
@@ -82,9 +87,19 @@ public static JwtVerifiableCredential toJwtVerifiableCredential(VerifiableCreden
8287 return new JwtVerifiableCredential (jwtPayload , payloadVerifiableCredential , null , null );
8388 }
8489
90+ public static JwtVerifiableCredential toJwtVerifiableCredential (VerifiableCredential verifiableCredential , String aud ) {
91+
92+ return toJwtVerifiableCredential (verifiableCredential , null , false );
93+ }
94+
95+ public static JwtVerifiableCredential toJwtVerifiableCredential (VerifiableCredential verifiableCredential , boolean preserveVerifiableCredentialProperties ) {
96+
97+ return toJwtVerifiableCredential (verifiableCredential , null , preserveVerifiableCredentialProperties );
98+ }
99+
85100 public static JwtVerifiableCredential toJwtVerifiableCredential (VerifiableCredential verifiableCredential ) {
86101
87- return toJwtVerifiableCredential (verifiableCredential , null );
102+ return toJwtVerifiableCredential (verifiableCredential , null , false );
88103 }
89104
90105 /*
0 commit comments