001package com.nimbusds.jose.jwk.source;
002
003
004import java.io.IOException;
005import java.util.List;
006
007import com.nimbusds.jose.jwk.JWK;
008import com.nimbusds.jose.jwk.JWKSelector;
009import com.nimbusds.jose.proc.SecurityContext;
010
011
012/**
013 * JSON Web Key (JWK) source. Exposes a method for retrieving JWKs matching a
014 * specified selector. An optional context parameter is available to facilitate
015 * passing of additional data between the caller and the underlying JWK source
016 * (in both directions). Implementations must be thread-safe.
017 *
018 * @author Vladimir Dzhuvinov
019 * @version 2016-06-14
020 */
021public interface JWKSource <C extends SecurityContext> {
022        
023
024        /**
025         * Retrieves a list of JWKs matching the specified selector.
026         *
027         * @param jwkSelector A JWK selector. Must not be {@code null}.
028         * @param context     Optional context, {@code null} if not required.
029         *
030         * @return The matching JWKs, empty list if no matches were found.
031         *
032         * @throws IOException If retrieval failed.
033         */
034        List<JWK> get(final JWKSelector jwkSelector, final C context)
035                throws IOException;
036}