1 package com.atlassian.security.auth.trustedapps;
2
3 import com.atlassian.security.auth.trustedapps.TrustedApplicationUtils.Header.Response;
4 import com.atlassian.security.auth.trustedapps.request.TrustedRequest;
5
6
7
8
9 public class TrustedApplicationUtils
10 {
11
12
13
14
15
16 public static final class Constant
17 {
18
19
20
21 public static final Integer VERSION = new Integer(1);
22
23
24
25
26 public static final String MAGIC = String.valueOf(0xBADC0FEE);
27
28
29
30
31 public static final String CHARSET_NAME = "utf-8";
32
33 public static final String CERTIFICATE_URL_PATH = "/admin/appTrustCertificate";
34
35 private Constant()
36 {
37 }
38 }
39
40
41
42
43
44
45 public static final class Header
46 {
47 private static final String PREFIX = "X-Seraph-Trusted-App-";
48
49 public static final class Request
50 {
51
52
53
54 public static final String ID = PREFIX + "ID";
55
56
57
58
59 public static final String SECRET_KEY = PREFIX + "Key";
60
61
62
63
64 public static final String CERTIFICATE = PREFIX + "Cert";
65
66
67
68
69 public static final String VERSION = PREFIX + "Version";
70
71
72
73
74 public static final String MAGIC = PREFIX + "Magic";
75
76 private Request()
77 {
78 }
79 }
80
81 public static final class Response
82 {
83
84
85
86 public static final String ERROR = PREFIX + "Error";
87
88
89
90
91 public static final String STATUS = PREFIX + "Status";
92
93 private Response()
94 {
95 }
96 }
97
98 private Header()
99 {
100 }
101 }
102
103
104
105
106
107
108
109
110
111 public static void addRequestParameters(final EncryptedCertificate certificate, final TrustedRequest request)
112 {
113 request.addRequestParameter(Header.Request.ID, certificate.getID());
114 request.addRequestParameter(Header.Request.CERTIFICATE, certificate.getCertificate());
115 request.addRequestParameter(Header.Request.SECRET_KEY, certificate.getSecretKey());
116 request.addRequestParameter(Header.Request.VERSION, Constant.VERSION.toString());
117 request.addRequestParameter(Header.Request.MAGIC, certificate.getMagicNumber());
118 }
119
120
121
122
123
124
125
126
127 public static TransportErrorMessage parseError(String errorMessage)
128 {
129 return TransportErrorMessage.PARSER.parse(errorMessage);
130 }
131
132 public static void validateMagicNumber(String msg, String appId, Integer protocolVersion, String magicNumber) throws InvalidCertificateException
133 {
134
135 if ((protocolVersion != null) && !TrustedApplicationUtils.Constant.MAGIC.equals(magicNumber))
136 {
137 throw new InvalidCertificateException(new TransportErrorMessage.BadMagicNumber(msg, appId));
138 }
139 }
140 }