diff --git a/jap-ids/src/main/java/com/fujieid/jap/ids/util/JwkUtil.java b/jap-ids/src/main/java/com/fujieid/jap/ids/util/JwkUtil.java index 6a99ed4a90e772cc9b2cf796f24bc67955fa6b45..8dcbe19d011457da2035d427296dc7cdbe068415 100644 --- a/jap-ids/src/main/java/com/fujieid/jap/ids/util/JwkUtil.java +++ b/jap-ids/src/main/java/com/fujieid/jap/ids/util/JwkUtil.java @@ -21,6 +21,7 @@ import org.jose4j.jwk.*; import org.jose4j.keys.EllipticCurves; import org.jose4j.lang.JoseException; +import java.security.spec.ECParameterSpec; import java.util.Arrays; /** @@ -46,9 +47,9 @@ public class JwkUtil { RsaJsonWebKey jwk = null; try { jwk = RsaJwkGenerator.generateJwk(2048); + jwk.setUse(Use.SIGNATURE); jwk.setKeyId(keyId); jwk.setAlgorithm(signingAlg.getAlg()); - jwk.setUse("sig"); } catch (JoseException e) { e.printStackTrace(); throw new InvalidJwksException("Unable to create RSA Json Web Key."); @@ -92,12 +93,21 @@ public class JwkUtil { throw new InvalidJwksException("Unable to create ES Json Web Key. Unsupported jwk algorithm, only supports ES256, ES384, ES512"); } EllipticCurveJsonWebKey jwk = null; + + ECParameterSpec spec = null; + if (signingAlg == TokenSigningAlg.ES256) { + spec = EllipticCurves.P256; + } else if (signingAlg == TokenSigningAlg.ES384) { + spec = EllipticCurves.P384; + } else { + spec = EllipticCurves.P521; + } + try { - jwk = EcJwkGenerator.generateJwk(EllipticCurves.P256); + jwk = EcJwkGenerator.generateJwk(spec); jwk.setUse(Use.SIGNATURE); jwk.setKeyId(keyId); jwk.setAlgorithm(signingAlg.getAlg()); - jwk.setUse("sig"); } catch (JoseException e) { e.printStackTrace(); throw new InvalidJwksException("Unable to create ES Json Web Key.");