/*
* Copyright 2016 The Netty Project
*
* The Netty Project licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package io.netty.handler.ssl;
import org.junit.Assert;
import org.junit.Test;
import javax.net.ssl.SSLException;
import java.io.File;
import java.io.IOException;
import java.security.PrivateKey;
import java.security.spec.InvalidKeySpecException;
public abstract class SslContextTest {
@Test(expected = IOException.class)
public void testUnencryptedEmptyPassword() throws Exception {
PrivateKey key = SslContext.toPrivateKey(
new File(getClass().getResource("test2_unencrypted.pem").getFile()), "");
Assert.assertNotNull(key);
}
@Test
public void testUnEncryptedNullPassword() throws Exception {
PrivateKey key = SslContext.toPrivateKey(
new File(getClass().getResource("test2_unencrypted.pem").getFile()), null);
Assert.assertNotNull(key);
}
@Test
public void testEncryptedEmptyPassword() throws Exception {
PrivateKey key = SslContext.toPrivateKey(
new File(getClass().getResource("test_encrypted_empty_pass.pem").getFile()), "");
Assert.assertNotNull(key);
}
@Test(expected = InvalidKeySpecException.class)
public void testEncryptedNullPassword() throws Exception {
SslContext.toPrivateKey(
new File(getClass().getResource("test_encrypted_empty_pass.pem").getFile()), null);
}
@Test
public void testSslServerWithEncryptedPrivateKey() throws SSLException {
File keyFile = new File(getClass().getResource("test_encrypted.pem").getFile());
File crtFile = new File(getClass().getResource("test.crt").getFile());
newServerContext(crtFile, keyFile, "12345");
}
@Test
public void testSslServerWithEncryptedPrivateKey2() throws SSLException {
File keyFile = new File(getClass().getResource("test2_encrypted.pem").getFile());
File crtFile = new File(getClass().getResource("test2.crt").getFile());
newServerContext(crtFile, keyFile, "12345");
}
@Test
public void testSslServerWithUnencryptedPrivateKey() throws SSLException {
File keyFile = new File(getClass().getResource("test_unencrypted.pem").getFile());
File crtFile = new File(getClass().getResource("test.crt").getFile());
newServerContext(crtFile, keyFile, null);
}
@Test(expected = SSLException.class)
public void testSslServerWithUnencryptedPrivateKeyEmptyPass() throws SSLException {
File keyFile = new File(getClass().getResource("test_unencrypted.pem").getFile());
File crtFile = new File(getClass().getResource("test.crt").getFile());
newServerContext(crtFile, keyFile, "");
}
protected abstract SslContext newServerContext(File crtFile, File keyFile, String pass) throws SSLException;
}