@@ -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 {
52+
53+ if (this .header == null || this .header .getKeyID () == 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+ }
4159
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 ();
47-
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