Skip to content

Commit 18e18dc

Browse files
authored
Merge pull request #50 from danubetech/feat/set-header
Add external header to jwtObject
2 parents 952e1dd + acee016 commit 18e18dc

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

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

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class JwtObject {
2323
private final JWTClaimsSet payload;
2424
private JWSObject jwsObject;
2525
private String compactSerialization;
26+
private JWSHeader header;
2627

2728
public JwtObject(JWTClaimsSet payload, JWSObject jwsObject, String compactSerialization) {
2829

@@ -33,19 +34,30 @@ public JwtObject(JWTClaimsSet payload, JWSObject jwsObject, String compactSerial
3334
this.compactSerialization = compactSerialization;
3435
}
3536

37+
public JwtObject(JWTClaimsSet payload, JWSObject jwsObject, String compactSerialization, JWSHeader header) {
38+
39+
if (payload == null) throw new NullPointerException();
40+
41+
this.payload = payload;
42+
this.jwsObject = jwsObject;
43+
this.compactSerialization = compactSerialization;
44+
this.header = header;
45+
}
46+
3647
/*
3748
* Sign
3849
*/
3950

4051
private String sign(JWSSigner jwsSigner, JWSAlgorithm alg, String kid, boolean canonicalize) throws JOSEException {
4152

42-
JWSHeader.Builder jwsHeaderBuilder = new JWSHeader.Builder(alg);
43-
jwsHeaderBuilder.type(JOSEObjectType.JWT);
44-
if (kid != null) jwsHeaderBuilder.keyID(kid);
45-
46-
JWSHeader jwsHeader = jwsHeaderBuilder.build();
53+
if(this.header == null || this.header.getKeyID() == null || this.header.getAlgorithm() == null){
54+
JWSHeader.Builder jwsHeaderBuilder = new JWSHeader.Builder(alg);
55+
jwsHeaderBuilder.type(JOSEObjectType.JWT);
56+
if (kid != null) jwsHeaderBuilder.keyID(kid);
57+
this.header = jwsHeaderBuilder.build();
58+
}
4759

48-
JWSObject jwsObject = new EscapedSlashWorkaroundJWSObject(jwsHeader, this.getPayload(), canonicalize);
60+
JWSObject jwsObject = new EscapedSlashWorkaroundJWSObject(this.header, this.getPayload(), canonicalize);
4961

5062
jwsObject.sign(jwsSigner);
5163

@@ -358,4 +370,10 @@ public JWSObject getJwsObject() {
358370
public String getCompactSerialization() {
359371
return this.compactSerialization;
360372
}
373+
374+
public JWSHeader getHeader() {
375+
return this.header;
376+
}
377+
378+
361379
}

0 commit comments

Comments
 (0)