gluu
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.xdi.oxauth.util.KeyGenerator.Cli クラス
org.xdi.oxauth.util.KeyGenerator.Cli 連携図
Collaboration graph

公開メンバ関数

 Cli (String[] args)
 
void parse ()
 

非公開メンバ関数

void help ()
 

非公開変数類

String [] args = null
 
Options options = new Options()
 

詳解

構築子と解体子

◆ Cli()

org.xdi.oxauth.util.KeyGenerator.Cli.Cli ( String []  args)
inline
70  {
71  this.args = args;
72 
73  Option signingKeysOption = new Option(SIGNING_KEYS, true,
74  "Signature keys to generate. (RS256 RS384 RS512 ES256 ES384 ES512).");
75  signingKeysOption.setArgs(Option.UNLIMITED_VALUES);
76 
77  Option encryptionKeysOption = new Option(ENCRYPTION_KEYS, true,
78  "Encryption keys to generate. (RS256 RS384 RS512 ES256 ES384 ES512).");
79  encryptionKeysOption.setArgs(Option.UNLIMITED_VALUES);
80 
81  options.addOption(signingKeysOption);
82  options.addOption(encryptionKeysOption);
83  options.addOption(KEY_STORE_FILE, true, "Key Store file.");
84  options.addOption(KEY_STORE_PASSWORD, true, "Key Store password.");
85  options.addOption(DN_NAME, true, "DN of certificate issuer.");
86  options.addOption(OXELEVEN_ACCESS_TOKEN, true, "oxEleven Access Token");
87  options.addOption(OXELEVEN_GENERATE_KEY_ENDPOINT, true, "oxEleven Generate Key Endpoint.");
88  options.addOption(EXPIRATION, true, "Expiration in days.");
89  options.addOption(HELP, false, "Show help.");
90  }
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
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 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

関数詳解

◆ help()

void org.xdi.oxauth.util.KeyGenerator.Cli.help ( )
inlineprivate
268  {
269  HelpFormatter formatter = new HelpFormatter();
270 
271  formatter.printHelp(
272  "KeyGenerator -sig_keys alg ... -enc_keys alg ... -expiration n_days [-ox11 url] [-keystore path -keypasswd secret -dnname dn_name]",
273  options);
274  System.exit(0);
275  }
Options options
Definition: KeyGenerator.java:68

◆ parse()

void org.xdi.oxauth.util.KeyGenerator.Cli.parse ( )
inline
92  {
93  CommandLineParser parser = new BasicParser();
94 
95  CommandLine cmd = null;
96  try {
97  cmd = parser.parse(options, args);
98 
99  if (cmd.hasOption(HELP))
100  help();
101 
102  if ((cmd.hasOption(SIGNING_KEYS) || cmd.hasOption(ENCRYPTION_KEYS))
103  && cmd.hasOption(OXELEVEN_ACCESS_TOKEN)
104  && cmd.hasOption(OXELEVEN_GENERATE_KEY_ENDPOINT)
105  && cmd.hasOption(EXPIRATION)) {
106  String[] sigAlgorithms = cmd.getOptionValues(SIGNING_KEYS);
107  String[] encAlgorithms = cmd.getOptionValues(ENCRYPTION_KEYS);
108  String accessToken = cmd.getOptionValue(OXELEVEN_ACCESS_TOKEN);
109  String generateKeyEndpoint = cmd.getOptionValue(OXELEVEN_GENERATE_KEY_ENDPOINT);
110  int expiration = Integer.parseInt(cmd.getOptionValue(EXPIRATION));
111 
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()) {
117  help();
118  } else {
119  try {
120  JSONWebKeySet jwks = new JSONWebKeySet();
121  OxElevenCryptoProvider cryptoProvider = new OxElevenCryptoProvider(generateKeyEndpoint,
122  null, null, null, accessToken);
123 
124  Calendar calendar = new GregorianCalendar();
125  calendar.add(Calendar.DATE, expiration);
126 
127  for (SignatureAlgorithm signatureAlgorithm : signatureAlgorithms) {
128  JSONObject result = cryptoProvider.generateKey(signatureAlgorithm,
129  calendar.getTimeInMillis());
130  // System.out.println(result);
131 
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));
143 
144  JSONArray x5c = result.optJSONArray(CERTIFICATE_CHAIN);
145  key.setX5c(StringUtils.toList(x5c));
146 
147  jwks.getKeys().add(key);
148  }
149 
150  for (SignatureAlgorithm encryptionAlgorithm : encryptionAlgorithms) {
151  JSONObject result = cryptoProvider.generateKey(encryptionAlgorithm,
152  calendar.getTimeInMillis());
153  // System.out.println(result);
154 
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));
166 
167  JSONArray x5c = result.optJSONArray(CERTIFICATE_CHAIN);
168  key.setX5c(StringUtils.toList(x5c));
169 
170  jwks.getKeys().add(key);
171  }
172 
173  System.out.println(jwks);
174  } catch (Exception e) {
175  log.error("Failed to generate keys", e);
176  help();
177  }
178  }
179  } else if ((cmd.hasOption(SIGNING_KEYS) || cmd.hasOption(ENCRYPTION_KEYS))
180  && cmd.hasOption(KEY_STORE_FILE)
181  && cmd.hasOption(KEY_STORE_PASSWORD)
182  && cmd.hasOption(DN_NAME)
183  && cmd.hasOption(EXPIRATION)) {
184  String[] sigAlgorithms = cmd.getOptionValues(SIGNING_KEYS);
185  String[] encAlgorithms = cmd.getOptionValues(ENCRYPTION_KEYS);
186  String keystore = cmd.getOptionValue(KEY_STORE_FILE);
187  String keypasswd = cmd.getOptionValue(KEY_STORE_PASSWORD);
188  String dnName = cmd.getOptionValue(DN_NAME);
189  int expiration = Integer.parseInt(cmd.getOptionValue(EXPIRATION));
190 
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()) {
196  help();
197  } else {
198  try {
199  SecurityProviderUtility.installBCProvider(true);
200 
201  JSONWebKeySet jwks = new JSONWebKeySet();
202  OxAuthCryptoProvider cryptoProvider = new OxAuthCryptoProvider(keystore, keypasswd, dnName);
203 
204  Calendar calendar = new GregorianCalendar();
205  calendar.add(Calendar.DATE, expiration);
206 
207  for (SignatureAlgorithm signatureAlgorithm : signatureAlgorithms) {
208  JSONObject result = cryptoProvider.generateKey(signatureAlgorithm,
209  calendar.getTimeInMillis());
210  // System.out.println(result);
211 
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));
223 
224  JSONArray x5c = result.optJSONArray(CERTIFICATE_CHAIN);
225  key.setX5c(StringUtils.toList(x5c));
226 
227  jwks.getKeys().add(key);
228  }
229 
230  for (SignatureAlgorithm encryptionAlgorithm : encryptionAlgorithms) {
231  JSONObject result = cryptoProvider.generateKey(encryptionAlgorithm,
232  calendar.getTimeInMillis());
233  // System.out.println(result);
234 
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));
246 
247  JSONArray x5c = result.optJSONArray(CERTIFICATE_CHAIN);
248  key.setX5c(StringUtils.toList(x5c));
249 
250  jwks.getKeys().add(key);
251  }
252 
253  System.out.println(jwks);
254  } catch (Exception e) {
255  log.error("Failed to generate keys", e);
256  help();
257  }
258  }
259  } else {
260  help();
261  }
262  } catch (ParseException e) {
263  log.error("Failed to generate keys", e);
264  help();
265  }
266  }
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

メンバ詳解

◆ args

String [] org.xdi.oxauth.util.KeyGenerator.Cli.args = null
private

◆ options

Options org.xdi.oxauth.util.KeyGenerator.Cli.options = new Options()
private

このクラス詳解は次のファイルから抽出されました: