134 java.security.PublicKey publicKey = null;
136 JSONArray webKeys = jwks.getJSONArray(JSON_WEB_KEY_SET);
137 for (
int i = 0; i < webKeys.length(); i++) {
138 JSONObject key = webKeys.getJSONObject(i);
139 if (alias.equals(key.getString(KEY_ID))) {
140 SignatureAlgorithmFamily family = null;
141 if (key.has(ALGORITHM)) {
142 SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.fromString(key.optString(ALGORITHM));
143 family = signatureAlgorithm.getFamily();
144 }
else if (key.has(KEY_TYPE)) {
145 family = SignatureAlgorithmFamily.fromString(key.getString(KEY_TYPE));
148 if (SignatureAlgorithmFamily.RSA.equals(family)) {
149 publicKey =
new RSAPublicKeyImpl(
150 new BigInteger(1, Base64Util.base64urldecode(key.getString(MODULUS))),
151 new BigInteger(1, Base64Util.base64urldecode(key.getString(EXPONENT))));
152 }
else if (SignatureAlgorithmFamily.EC.equals(family)) {
153 ECEllipticCurve curve = ECEllipticCurve.fromString(key.optString(CURVE));
154 AlgorithmParameters parameters = AlgorithmParameters.getInstance(SignatureAlgorithmFamily.EC.toString());
155 parameters.init(
new ECGenParameterSpec(curve.getAlias()));
156 ECParameterSpec ecParameters = parameters.getParameterSpec(ECParameterSpec.class);
158 publicKey = KeyFactory.getInstance(SignatureAlgorithmFamily.EC.toString()).generatePublic(
new ECPublicKeySpec(
160 new BigInteger(1, Base64Util.base64urldecode(key.getString(X))),
161 new BigInteger(1, Base64Util.base64urldecode(key.getString(Y)))
165 if (key.has(EXPIRATION_TIME)) {
void checkKeyExpiration(String alias, Long expirationTime)
Definition: AbstractCryptoProvider.java:174