Add missing SslContextBuilder.forServer(KeyManagerFactory)

Motivation:

keyManager() is required on server-side, and so there is a forServer()
method for each override of keyManager(). However, one of the
forServer() overrides was missing, which meant that if you wanted to use
a KeyManagerFactory you were forced to provide garbage configuration
just to get past null checks.

Modifications:

Add missing override.

Result:

No hacks to use SslContextBuilder on server-side with KeyManagerFactory.
Resolves #3775
This commit is contained in:
Eric Anderson 2015-05-11 10:33:35 -07:00 committed by Norman Maurer
parent cbbcdaa249
commit 864f196c67
2 changed files with 13 additions and 1 deletions

View File

@ -76,7 +76,7 @@ import java.util.List;
* <pre> * <pre>
* // In your {@link ChannelInitializer}: * // In your {@link ChannelInitializer}:
* {@link ChannelPipeline} p = channel.pipeline(); * {@link ChannelPipeline} p = channel.pipeline();
* {@link SslContext} sslCtx = {@link #newBuilderForClient() SslContext.newBuilderForClient()}.build(); * {@link SslContext} sslCtx = {@link SslContextBuilder#forClient() SslContextBuilder.forClient()}.build();
* p.addLast("ssl", {@link #newEngine(ByteBufAllocator, String, int) sslCtx.newEngine(channel.alloc(), host, port)}); * p.addLast("ssl", {@link #newEngine(ByteBufAllocator, String, int) sslCtx.newEngine(channel.alloc(), host, port)});
* ... * ...
* </pre> * </pre>

View File

@ -39,6 +39,7 @@ public final class SslContextBuilder {
* *
* @param keyCertChainFile an X.509 certificate chain file in PEM format * @param keyCertChainFile an X.509 certificate chain file in PEM format
* @param keyFile a PKCS#8 private key file in PEM format * @param keyFile a PKCS#8 private key file in PEM format
* @see #keyManager(File, File)
*/ */
public static SslContextBuilder forServer(File keyCertChainFile, File keyFile) { public static SslContextBuilder forServer(File keyCertChainFile, File keyFile) {
return new SslContextBuilder(true).keyManager(keyCertChainFile, keyFile); return new SslContextBuilder(true).keyManager(keyCertChainFile, keyFile);
@ -51,12 +52,23 @@ public final class SslContextBuilder {
* @param keyFile a PKCS#8 private key file in PEM format * @param keyFile a PKCS#8 private key file in PEM format
* @param keyPassword the password of the {@code keyFile}, or {@code null} if it's not * @param keyPassword the password of the {@code keyFile}, or {@code null} if it's not
* password-protected * password-protected
* @see #keyManager(File, File, String)
*/ */
public static SslContextBuilder forServer( public static SslContextBuilder forServer(
File keyCertChainFile, File keyFile, String keyPassword) { File keyCertChainFile, File keyFile, String keyPassword) {
return new SslContextBuilder(true).keyManager(keyCertChainFile, keyFile, keyPassword); return new SslContextBuilder(true).keyManager(keyCertChainFile, keyFile, keyPassword);
} }
/**
* Creates a builder for new server-side {@link SslContext}.
*
* @param keyManagerFactory non-{@code null} factory for server's private key
* @see #keyManager(KeyManagerFactory)
*/
public static SslContextBuilder forServer(KeyManagerFactory keyManagerFactory) {
return new SslContextBuilder(true).keyManager(keyManagerFactory);
}
private final boolean forServer; private final boolean forServer;
private SslProvider provider; private SslProvider provider;
private File trustCertChainFile; private File trustCertChainFile;