package com.auth0.utils.tokens; import com.auth0.exception.IdTokenValidationException; import com.auth0.exception.PublicKeyProviderException; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.interfaces.RSAKeyProvider; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; /** * An implementation of {@code SignatureVerifier} for tokens signed with the RS256 asymmetric signing algorithm. */ class RS256SignatureVerifier extends SignatureVerifier { RS256SignatureVerifier(PublicKeyProvider publicKeyProvider) { super(getAlgorithm(publicKeyProvider)); } private static Algorithm getAlgorithm(final PublicKeyProvider publicKeyProvider) { return Algorithm.RSA256(new RSAKeyProvider() { @Override public RSAPublicKey getPublicKeyById(String keyId) { try { return publicKeyProvider.getPublicKeyById(keyId); } catch (PublicKeyProviderException pke) { throw new IdTokenValidationException(String.format("Could not find a public key for Key ID (kid) \"%s\"", keyId), pke); } } @Override public RSAPrivateKey getPrivateKey() { // no-op return null; } @Override public String getPrivateKeyId() { // no-op return null; } }); } }