| // SPDX-License-Identifier: LGPL-2.1-or-later |
| // Copyright (c) 2012-2014 Monty Program Ab |
| // Copyright (c) 2015-2021 MariaDB Corporation Ab |
| |
| package org.mariadb.jdbc.unit.client.tls; |
| |
| import static org.junit.jupiter.api.Assertions.*; |
| |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.security.*; |
| import java.security.cert.CertificateException; |
| import javax.security.auth.x500.X500Principal; |
| import org.junit.jupiter.api.Test; |
| import org.mariadb.jdbc.client.tls.MariaDbX509KeyManager; |
| |
| public class MariaDbX509KeyManagerTest { |
| |
| @Test |
| public void check() throws Exception { |
| MariaDbX509KeyManager keyMger = get(); |
| String[] aliases = keyMger.getClientAliases("RSA", null); |
| assertEquals(1, aliases.length); |
| assertEquals("mysqlalias", aliases[0]); |
| |
| assertNull( |
| keyMger.getClientAliases( |
| "RSA", new Principal[] {new X500Principal("CN=Android Debug,O=Android,C=US")})); |
| aliases = |
| keyMger.getClientAliases( |
| "RSA", |
| new Principal[] { |
| new X500Principal("EMAILADDRESS=X, OU=X, CN=ca.example.com, L=X, O=X, ST=X, C=XX") |
| }); |
| assertEquals(1, aliases.length); |
| assertEquals("mysqlalias", aliases[0]); |
| |
| assertNull(keyMger.getPrivateKey("wrong")); |
| assertNotNull(keyMger.getPrivateKey("mysqlalias")); |
| |
| assertNull(keyMger.getCertificateChain("wrong")); |
| assertNotNull(keyMger.getCertificateChain("mysqlalias")); |
| |
| assertEquals( |
| "mysqlalias", |
| keyMger.chooseEngineClientAlias( |
| new String[] {"RSA"}, |
| new Principal[] { |
| new X500Principal("EMAILADDRESS=X, OU=X, CN=ca.example.com, L=X, O=X, ST=X, C=XX") |
| }, |
| null)); |
| assertNull( |
| keyMger.chooseEngineClientAlias( |
| new String[] {}, |
| new Principal[] { |
| new X500Principal("EMAILADDRESS=X, OU=X, CN=ca.example.com, L=X, O=X, ST=X, C=XX") |
| }, |
| null)); |
| assertNull( |
| keyMger.chooseEngineClientAlias( |
| null, |
| new Principal[] { |
| new X500Principal("EMAILADDRESS=X, OU=X, CN=ca.example.com, L=X, O=X, ST=X, C=XX") |
| }, |
| null)); |
| assertNull(keyMger.getServerAliases("RSA", null)); |
| assertNull(keyMger.chooseServerAlias("RSA", null, null)); |
| assertNull(keyMger.chooseEngineServerAlias("RSA", null, null)); |
| } |
| |
| private MariaDbX509KeyManager get() |
| throws KeyStoreException, CertificateException, IOException, NoSuchAlgorithmException { |
| try (InputStream inStream = |
| MariaDbX509KeyManagerTest.class |
| .getClassLoader() |
| .getResourceAsStream("testclient-keystore.p12")) { |
| assertNotNull(inStream); |
| char[] keyStorePasswordChars = "kspass".toCharArray(); |
| KeyStore ks = KeyStore.getInstance("PKCS12"); |
| ks.load(inStream, keyStorePasswordChars); |
| return new MariaDbX509KeyManager(ks, keyStorePasswordChars); |
| } |
| } |
| } |