class RSAEncryptionConfiguration extends AbstractEncryptionConfiguration {

    private RSAPublicKey publicKey;

    private RSAPrivateKey privateKey;

    /**
     * <p>Constructor for RSAEncryptionConfiguration.</p>
     */
    public RSAEncryptionConfiguration() {
    }

    /**
     * <p>Constructor for RSAEncryptionConfiguration.</p>
     *
     * @param keyPair a {@link KeyPair} object
     */
    public RSAEncryptionConfiguration(final KeyPair keyPair) {
        setKeyPair(keyPair);
    }

    /**
     * <p>Constructor for RSAEncryptionConfiguration.</p>
     *
     * @param keyPair a {@link KeyPair} object
     * @param algorithm a {@link JWEAlgorithm} object
     * @param method a {@link EncryptionMethod} object
     */
    public RSAEncryptionConfiguration(final KeyPair keyPair, final JWEAlgorithm algorithm, final EncryptionMethod method) {
        setKeyPair(keyPair);
        this.algorithm = algorithm;
        this.method = method;
    }

    /** {@inheritDoc} */
    @Override
    public boolean supports(final JWEAlgorithm algorithm, final EncryptionMethod method) {
        return algorithm != null && method != null
            && RSADecrypter.SUPPORTED_ALGORITHMS.contains(algorithm)
            && RSADecrypter.SUPPORTED_ENCRYPTION_METHODS.contains(method);
    }

    /** {@inheritDoc} */
    @Override
    protected void internalInit(final boolean forceReinit) {
        CommonHelper.assertNotNull("algorithm", algorithm);
        CommonHelper.assertNotNull("method", method);

        if (!supports(this.algorithm, this.method)) {
            throw new TechnicalException("Only RSA algorithms are supported with the appropriate encryption method");
        }
    }

    /** {@inheritDoc} */
    @Override
    protected JWEEncrypter buildEncrypter() {
        CommonHelper.assertNotNull("publicKey", publicKey);

        return new RSAEncrypter(this.publicKey);
    }

    /** {@inheritDoc} */
    @Override
    protected JWEDecrypter buildDecrypter() {
        CommonHelper.assertNotNull("privateKey", privateKey);

        return new RSADecrypter(this.privateKey);
    }

    /**
     * <p>setKeyPair.</p>
     *
     * @param keyPair a {@link KeyPair} object
     */
    public void setKeyPair(final KeyPair keyPair) {<FILL_FUNCTION_BODY>}

    /**
     * <p>setKeysFromJwk.</p>
     *
     * @param json a {@link String} object
     */
    public void setKeysFromJwk(final String json) {
        val pair = JWKHelper.buildRSAKeyPairFromJwk(json);
        this.publicKey = (RSAPublicKey) pair.getPublic();
        this.privateKey = (RSAPrivateKey) pair.getPrivate();
    }
}

        CommonHelper.assertNotNull("keyPair", keyPair);
        this.privateKey = (RSAPrivateKey) keyPair.getPrivate();
        this.publicKey = (RSAPublicKey) keyPair.getPublic();
    
<methods>public non-sealed void <init>() ,public void decrypt(com.nimbusds.jwt.EncryptedJWT) throws com.nimbusds.jose.JOSEException,public java.lang.String encrypt(com.nimbusds.jwt.JWT) <variables>protected com.nimbusds.jose.JWEAlgorithm algorithm,protected com.nimbusds.jose.EncryptionMethod method