Interface ClientIdentityProvider
-
- All Known Implementing Classes:
ClientIdentityFileWatcher
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
@FunctionalInterface public interface ClientIdentityProvider
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description java.lang.Iterable<java.security.KeyPair>
getClientIdentities(SessionContext session)
Provides aKeyPair
representing the client identitystatic java.util.Iterator<java.security.KeyPair>
lazyKeysIterator(java.util.Iterator<? extends ClientIdentityProvider> providers, java.util.function.Function<? super ClientIdentityProvider,? extends java.lang.Iterable<? extends java.security.KeyPair>> kpExtractor, java.util.function.Predicate<? super java.security.KeyPair> filter)
Wraps severalClientIdentityProvider
into aKeyPair
Iterator
that invokes each provider "lazily" - i.e., only whenIterator.hasNext()
is invoked.static java.lang.Iterable<java.security.KeyPair>
lazyKeysLoader(java.lang.Iterable<? extends ClientIdentityProvider> providers, java.util.function.Function<? super ClientIdentityProvider,? extends java.lang.Iterable<? extends java.security.KeyPair>> kpExtractor, java.util.function.Predicate<? super java.security.KeyPair> filter)
Wraps severalClientIdentityProvider
into aKeyPair
Iterable
that invokes each provider "lazily" - i.e., only whenIterator.hasNext()
is invoked.static ClientIdentityProvider
of(java.security.KeyPair kp)
Wraps aKeyPair
into aClientIdentityProvider
that simply returns this value as itgetClientIdentities(SessionContext)
.
-
-
-
Method Detail
-
getClientIdentities
java.lang.Iterable<java.security.KeyPair> getClientIdentities(SessionContext session) throws java.io.IOException, java.security.GeneralSecurityException
Provides aKeyPair
representing the client identity- Parameters:
session
- TheSessionContext
for invoking this load command - may benull
if not invoked within a session context (e.g., offline tool).- Returns:
- The client identities - may be
null
/empty if no currently available identity from this provider. Note: the provider may return a different value every time this method is called - e.g., if it is (re-)loading contents from a file. - Throws:
java.io.IOException
- If failed to load the identityjava.security.GeneralSecurityException
- If failed to parse the identity
-
of
static ClientIdentityProvider of(java.security.KeyPair kp)
Wraps aKeyPair
into aClientIdentityProvider
that simply returns this value as itgetClientIdentities(SessionContext)
.- Parameters:
kp
- TheKeyPair
instance (includingnull
)- Returns:
- The wrapping provider
-
lazyKeysLoader
static java.lang.Iterable<java.security.KeyPair> lazyKeysLoader(java.lang.Iterable<? extends ClientIdentityProvider> providers, java.util.function.Function<? super ClientIdentityProvider,? extends java.lang.Iterable<? extends java.security.KeyPair>> kpExtractor, java.util.function.Predicate<? super java.security.KeyPair> filter)
Wraps severalClientIdentityProvider
into aKeyPair
Iterable
that invokes each provider "lazily" - i.e., only whenIterator.hasNext()
is invoked. This prevents password protected private keys to be decrypted until they are actually needed.- Parameters:
providers
- The providers - ignored ifnull
kpExtractor
- The (nevernull
) extractor of theKeyPair
from theClientIdentityProvider
argument. If returned pair isnull
then next provider is queried.filter
- Any further filter to apply on (non-null
) key pairs before returning it as theIterator.next()
result.- Returns:
- The wrapper
Iterable
. Note: a newIterator
instance is returned on eachIterable.iterator()
call - i.e., any encrypted private key may require the user to re-enter the relevant password. If the defaultClientIdentityFileWatcher
is used, this is not a problem since it caches the decoded result (unless the file has changed).
-
lazyKeysIterator
static java.util.Iterator<java.security.KeyPair> lazyKeysIterator(java.util.Iterator<? extends ClientIdentityProvider> providers, java.util.function.Function<? super ClientIdentityProvider,? extends java.lang.Iterable<? extends java.security.KeyPair>> kpExtractor, java.util.function.Predicate<? super java.security.KeyPair> filter)
Wraps severalClientIdentityProvider
into aKeyPair
Iterator
that invokes each provider "lazily" - i.e., only whenIterator.hasNext()
is invoked. This prevents password protected private keys to be decrypted until they are actually needed.- Parameters:
providers
- The providers - ignored ifnull
kpExtractor
- The (nevernull
) extractor of theKeyPair
from theClientIdentityProvider
argument. If returned pair isnull
then next provider is queried.filter
- Any further filter to apply on (non-null
) key pairs before returning it as theIterator.next()
result.- Returns:
- The wrapper
Iterator
-
-