93 CommandLineParser parser =
new BasicParser();
95 CommandLine cmd = null;
99 if (cmd.hasOption(
HELP))
106 String[] sigAlgorithms = cmd.getOptionValues(
SIGNING_KEYS);
110 int expiration = Integer.parseInt(cmd.getOptionValue(
EXPIRATION));
112 List<SignatureAlgorithm> signatureAlgorithms = cmd.hasOption(
SIGNING_KEYS) ?
113 SignatureAlgorithm.fromString(sigAlgorithms) :
new ArrayList<SignatureAlgorithm>();
114 List<SignatureAlgorithm> encryptionAlgorithms = cmd.hasOption(
ENCRYPTION_KEYS) ?
115 SignatureAlgorithm.fromString(encAlgorithms) :
new ArrayList<SignatureAlgorithm>();
116 if (signatureAlgorithms.isEmpty() && encryptionAlgorithms.isEmpty()) {
120 JSONWebKeySet jwks =
new JSONWebKeySet();
121 OxElevenCryptoProvider cryptoProvider =
new OxElevenCryptoProvider(generateKeyEndpoint,
122 null, null, null, accessToken);
124 Calendar calendar =
new GregorianCalendar();
125 calendar.add(Calendar.DATE, expiration);
127 for (SignatureAlgorithm signatureAlgorithm : signatureAlgorithms) {
128 JSONObject result = cryptoProvider.generateKey(signatureAlgorithm,
129 calendar.getTimeInMillis());
132 JSONWebKey key =
new JSONWebKey();
133 key.setKid(result.getString(KEY_ID));
134 key.setUse(Use.SIGNATURE);
135 key.setAlg(signatureAlgorithm);
136 key.setKty(KeyType.fromString(signatureAlgorithm.getFamily().toString()));
137 key.setExp(result.optLong(EXPIRATION_TIME));
138 key.setCrv(signatureAlgorithm.getCurve());
139 key.setN(result.optString(MODULUS));
140 key.setE(result.optString(EXPONENT));
141 key.setX(result.optString(X));
142 key.setY(result.optString(Y));
144 JSONArray x5c = result.optJSONArray(CERTIFICATE_CHAIN);
145 key.setX5c(StringUtils.toList(x5c));
147 jwks.getKeys().add(key);
150 for (SignatureAlgorithm encryptionAlgorithm : encryptionAlgorithms) {
151 JSONObject result = cryptoProvider.generateKey(encryptionAlgorithm,
152 calendar.getTimeInMillis());
155 JSONWebKey key =
new JSONWebKey();
156 key.setKid(result.getString(KEY_ID));
157 key.setUse(Use.ENCRYPTION);
158 key.setAlg(encryptionAlgorithm);
159 key.setKty(KeyType.fromString(encryptionAlgorithm.getFamily().toString()));
160 key.setExp(result.optLong(EXPIRATION_TIME));
161 key.setCrv(encryptionAlgorithm.getCurve());
162 key.setN(result.optString(MODULUS));
163 key.setE(result.optString(EXPONENT));
164 key.setX(result.optString(X));
165 key.setY(result.optString(Y));
167 JSONArray x5c = result.optJSONArray(CERTIFICATE_CHAIN);
168 key.setX5c(StringUtils.toList(x5c));
170 jwks.getKeys().add(key);
173 System.out.println(jwks);
174 }
catch (Exception e) {
175 log.error(
"Failed to generate keys", e);
184 String[] sigAlgorithms = cmd.getOptionValues(
SIGNING_KEYS);
188 String dnName = cmd.getOptionValue(
DN_NAME);
189 int expiration = Integer.parseInt(cmd.getOptionValue(
EXPIRATION));
191 List<SignatureAlgorithm> signatureAlgorithms = cmd.hasOption(
SIGNING_KEYS) ?
192 SignatureAlgorithm.fromString(sigAlgorithms) :
new ArrayList<SignatureAlgorithm>();
193 List<SignatureAlgorithm> encryptionAlgorithms = cmd.hasOption(
ENCRYPTION_KEYS) ?
194 SignatureAlgorithm.fromString(encAlgorithms) :
new ArrayList<SignatureAlgorithm>();
195 if (signatureAlgorithms.isEmpty() && encryptionAlgorithms.isEmpty()) {
199 SecurityProviderUtility.installBCProvider(
true);
201 JSONWebKeySet jwks =
new JSONWebKeySet();
202 OxAuthCryptoProvider cryptoProvider =
new OxAuthCryptoProvider(keystore, keypasswd, dnName);
204 Calendar calendar =
new GregorianCalendar();
205 calendar.add(Calendar.DATE, expiration);
207 for (SignatureAlgorithm signatureAlgorithm : signatureAlgorithms) {
208 JSONObject result = cryptoProvider.generateKey(signatureAlgorithm,
209 calendar.getTimeInMillis());
212 JSONWebKey key =
new JSONWebKey();
213 key.setKid(result.getString(KEY_ID));
214 key.setUse(Use.SIGNATURE);
215 key.setAlg(signatureAlgorithm);
216 key.setKty(KeyType.fromString(signatureAlgorithm.getFamily().toString()));
217 key.setExp(result.optLong(EXPIRATION_TIME));
218 key.setCrv(signatureAlgorithm.getCurve());
219 key.setN(result.optString(MODULUS));
220 key.setE(result.optString(EXPONENT));
221 key.setX(result.optString(X));
222 key.setY(result.optString(Y));
224 JSONArray x5c = result.optJSONArray(CERTIFICATE_CHAIN);
225 key.setX5c(StringUtils.toList(x5c));
227 jwks.getKeys().add(key);
230 for (SignatureAlgorithm encryptionAlgorithm : encryptionAlgorithms) {
231 JSONObject result = cryptoProvider.generateKey(encryptionAlgorithm,
232 calendar.getTimeInMillis());
235 JSONWebKey key =
new JSONWebKey();
236 key.setKid(result.getString(KEY_ID));
237 key.setUse(Use.ENCRYPTION);
238 key.setAlg(encryptionAlgorithm);
239 key.setKty(KeyType.fromString(encryptionAlgorithm.getFamily().toString()));
240 key.setExp(result.optLong(EXPIRATION_TIME));
241 key.setCrv(encryptionAlgorithm.getCurve());
242 key.setN(result.optString(MODULUS));
243 key.setE(result.optString(EXPONENT));
244 key.setX(result.optString(X));
245 key.setY(result.optString(Y));
247 JSONArray x5c = result.optJSONArray(CERTIFICATE_CHAIN);
248 key.setX5c(StringUtils.toList(x5c));
250 jwks.getKeys().add(key);
253 System.out.println(jwks);
254 }
catch (Exception e) {
255 log.error(
"Failed to generate keys", e);
262 }
catch (ParseException e) {
263 log.error(
"Failed to generate keys", e);
static final String KEY_STORE_PASSWORD
Definition: KeyGenerator.java:49
static final String OXELEVEN_ACCESS_TOKEN
Definition: KeyGenerator.java:51
static final String OXELEVEN_GENERATE_KEY_ENDPOINT
Definition: KeyGenerator.java:52
void help()
Definition: KeyGenerator.java:268
Options options
Definition: KeyGenerator.java:68
static final String SIGNING_KEYS
Definition: KeyGenerator.java:46
static final String DN_NAME
Definition: KeyGenerator.java:50
static final String ENCRYPTION_KEYS
Definition: KeyGenerator.java:47
static final Logger log
Definition: KeyGenerator.java:55
static final String KEY_STORE_FILE
Definition: KeyGenerator.java:48
static final String HELP
Definition: KeyGenerator.java:54
String [] args
Definition: KeyGenerator.java:67
static final String EXPIRATION
Definition: KeyGenerator.java:53