1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.forgerock.json.jose.builders;
18
19 import org.forgerock.json.jose.jwe.EncryptedJwt;
20 import org.forgerock.json.jose.jws.JwsAlgorithm;
21 import org.forgerock.json.jose.jws.JwsHeader;
22 import org.forgerock.json.jose.jws.EncryptedThenSignedJwt;
23 import org.forgerock.json.jose.jws.SignedJwt;
24 import org.forgerock.json.jose.jws.handlers.SigningHandler;
25 import org.forgerock.json.jose.jwt.JwtType;
26
27
28
29
30
31
32
33 public class EncryptedThenSignedJwtBuilder extends AbstractJwtBuilder implements SignedJwtBuilder {
34
35 private final EncryptedJwtBuilder encryptedJwtBuilder;
36 private final SigningHandler signingHandler;
37 private final JwsAlgorithm jwsAlgorithm;
38 private final EncryptedThenSignedJwtHeaderBuilder headerBuilder;
39
40
41
42
43
44
45
46
47
48 public EncryptedThenSignedJwtBuilder(EncryptedJwtBuilder encryptedJwtBuilder, SigningHandler signingHandler,
49 JwsAlgorithm jwsAlgorithm) {
50 this.encryptedJwtBuilder = encryptedJwtBuilder;
51 this.signingHandler = signingHandler;
52 this.jwsAlgorithm = jwsAlgorithm;
53 this.headerBuilder = new EncryptedThenSignedJwtHeaderBuilder(this);
54 }
55
56 @Override
57 public SignedJwt asJwt() {
58 JwsHeader header = headerBuilder.alg(jwsAlgorithm).cty(JwtType.JWT.toString()).build();
59 EncryptedJwt encryptedJwt = encryptedJwtBuilder.asJwt();
60
61 return new EncryptedThenSignedJwt(header, encryptedJwt, signingHandler);
62 }
63
64
65
66
67
68
69
70
71 @Override
72 public String build() {
73 return asJwt().build();
74 }
75
76 @Override
77 public EncryptedThenSignedJwtHeaderBuilder headers() {
78 return headerBuilder;
79 }
80 }