public List<JsonWebKey> selectList(JsonWebSignature jws, Collection<JsonWebKey> keys) throws JoseException
{
SimpleJwkFilter filter = SelectorSupport.filterForInboundSigned(jws);
List<JsonWebKey> filtered = filter.filter(keys);
if (hasMoreThanOne(filtered))
{
filter.setAlg(jws.getAlgorithmHeaderValue(), SimpleJwkFilter.OMITTED_OKAY);
filtered = filter.filter(filtered);
}
if (hasMoreThanOne(filtered) && EllipticCurveJsonWebKey.KEY_TYPE.equals(jws.getKeyType()))
{
JsonWebSignatureAlgorithm algorithm = jws.getAlgorithmNoConstraintCheck();
EcdsaUsingShaAlgorithm ecdsaAlgorithm = (EcdsaUsingShaAlgorithm) algorithm;
filter.setCrv(ecdsaAlgorithm.getCurveName(), SimpleJwkFilter.OMITTED_OKAY);
filtered = filter.filter(filtered);
}
return filtered;
}