OpenSslKeyManagerFactorySpi Class — netty Architecture
Architecture documentation for the OpenSslKeyManagerFactorySpi class in OpenSslX509KeyManagerFactory.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 6c352714_1eae_d4b9_4b45_6923c72330e3["OpenSslKeyManagerFactorySpi"] 892beaa7_380c_8fb8_48c5_080b863277a3["OpenSslX509KeyManagerFactory.java"] 6c352714_1eae_d4b9_4b45_6923c72330e3 -->|defined in| 892beaa7_380c_8fb8_48c5_080b863277a3 25fb9915_8f47_340c_2a3a_d6e45a12b2f7["OpenSslKeyManagerFactorySpi()"] 6c352714_1eae_d4b9_4b45_6923c72330e3 -->|method| 25fb9915_8f47_340c_2a3a_d6e45a12b2f7 8e9b61e5_45fc_fc0b_4d4a_43bfd74e9a1d["engineInit()"] 6c352714_1eae_d4b9_4b45_6923c72330e3 -->|method| 8e9b61e5_45fc_fc0b_4d4a_43bfd74e9a1d 37d8414d_d07e_a01f_bbbb_573d573c6e69["String()"] 6c352714_1eae_d4b9_4b45_6923c72330e3 -->|method| 37d8414d_d07e_a01f_bbbb_573d573c6e69 bcbed51c_0c05_be23_a1b6_66872ac7a059["engineGetKeyManagers()"] 6c352714_1eae_d4b9_4b45_6923c72330e3 -->|method| bcbed51c_0c05_be23_a1b6_66872ac7a059 a4f377da_16ed_3954_609c_d4358b1fb3b9["OpenSslKeyMaterialProvider()"] 6c352714_1eae_d4b9_4b45_6923c72330e3 -->|method| a4f377da_16ed_3954_609c_d4358b1fb3b9
Relationship Graph
Source Code
handler/src/main/java/io/netty/handler/ssl/OpenSslX509KeyManagerFactory.java lines 110–235
private static final class OpenSslKeyManagerFactorySpi extends KeyManagerFactorySpi {
final KeyManagerFactory kmf;
private volatile ProviderFactory providerFactory;
OpenSslKeyManagerFactorySpi(KeyManagerFactory kmf) {
this.kmf = ObjectUtil.checkNotNull(kmf, "kmf");
}
@Override
protected synchronized void engineInit(KeyStore keyStore, char[] chars)
throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException {
if (providerFactory != null) {
throw new KeyStoreException("Already initialized");
}
if (!keyStore.aliases().hasMoreElements()) {
throw new KeyStoreException("No aliases found");
}
kmf.init(keyStore, chars);
providerFactory = new ProviderFactory(ReferenceCountedOpenSslContext.chooseX509KeyManager(
kmf.getKeyManagers()), password(chars), Collections.list(keyStore.aliases()));
}
private static String password(char[] password) {
if (password == null || password.length == 0) {
return null;
}
return new String(password);
}
@Override
protected void engineInit(ManagerFactoryParameters managerFactoryParameters)
throws InvalidAlgorithmParameterException {
throw new InvalidAlgorithmParameterException("Not supported");
}
@Override
protected KeyManager[] engineGetKeyManagers() {
ProviderFactory providerFactory = this.providerFactory;
if (providerFactory == null) {
throw new IllegalStateException("engineInit(...) not called yet");
}
return new KeyManager[] { providerFactory.keyManager };
}
OpenSslKeyMaterialProvider newProvider() {
ProviderFactory providerFactory = this.providerFactory;
if (providerFactory == null) {
throw new IllegalStateException("engineInit(...) not called yet");
}
return providerFactory.newProvider();
}
private static final class ProviderFactory {
private final X509KeyManager keyManager;
private final String password;
private final Iterable<String> aliases;
ProviderFactory(X509KeyManager keyManager, String password, Iterable<String> aliases) {
this.keyManager = keyManager;
this.password = password;
this.aliases = aliases;
}
OpenSslKeyMaterialProvider newProvider() {
return new OpenSslPopulatedKeyMaterialProvider(keyManager,
password, aliases);
}
/**
* {@link OpenSslKeyMaterialProvider} implementation that pre-compute the {@link OpenSslKeyMaterial} for
* all aliases.
*/
private static final class OpenSslPopulatedKeyMaterialProvider extends OpenSslKeyMaterialProvider {
private final Map<String, Object> materialMap;
OpenSslPopulatedKeyMaterialProvider(
X509KeyManager keyManager, String password, Iterable<String> aliases) {
super(keyManager, password);
materialMap = new HashMap<String, Object>();
boolean initComplete = false;
Source
Frequently Asked Questions
What is the OpenSslKeyManagerFactorySpi class?
OpenSslKeyManagerFactorySpi is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/OpenSslX509KeyManagerFactory.java.
Where is OpenSslKeyManagerFactorySpi defined?
OpenSslKeyManagerFactorySpi is defined in handler/src/main/java/io/netty/handler/ssl/OpenSslX509KeyManagerFactory.java at line 110.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free