1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.xnet.tests.support; 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream; 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore; 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateFactory; 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.X509Certificate; 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.Certificate; 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration; 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector; 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Principal; 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.PrivateKey; 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.net.Socket; 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.X509KeyManager; 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class X509KeyManagerImpl implements X509KeyManager { 17f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String keyType; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String client = "CLIENT"; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String server = "SERVER"; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private KeyStore keyTest; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private X509Certificate[] cert = null; 23f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 24b7eec62f6db198a76b67d7915b03e59189c6df4fBrian Carlstrom // creating a certificate 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String certificate = "-----BEGIN CERTIFICATE-----\n" 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MIICZTCCAdICBQL3AAC2MA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMSAw\n" 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEuMCwGA1UECxMlU2VjdXJl\n" 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NzAyMjAwMDAwMDBa\n" 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "Fw05ODAyMjAyMzU5NTlaMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\n" 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "cm5pYTESMBAGA1UEBxMJUGFsbyBBbHRvMR8wHQYDVQQKExZTdW4gTWljcm9zeXN0\n" 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "ZW1zLCBJbmMuMSEwHwYDVQQLExhUZXN0IGFuZCBFdmFsdWF0aW9uIE9ubHkxGjAY\n" 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "BgNVBAMTEWFyZ29uLmVuZy5zdW4uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB\n" 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "iQKBgQCofmdY+PiUWN01FOzEewf+GaG+lFf132UpzATmYJkA4AEA/juW7jSi+LJk\n" 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "wJKi5GO4RyZoyimAL/5yIWDV6l1KlvxyKslr0REhMBaD/3Z3EsLTTEf5gVrQS6sT\n" 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "WMoSZAyzB39kFfsB6oUXNtV8+UKKxSxKbxvhQn267PeCz5VX2QIDAQABMA0GCSqG\n" 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "SIb3DQEBAgUAA34AXl3at6luiV/7I9MN5CXYoPJYI8Bcdc1hBagJvTMcmlqL2uOZ\n" 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "H9T5hNMEL9Tk6aI7yZPXcw/xI2K6pOR/FrMp0UwJmdxX7ljV6ZtUZf7pY492UqwC\n" 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "1777XQ9UEZyrKJvF5ntleeO0ayBqLGVKCWzWZX9YsXCpv47FNLZbupE=\n" 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "-----END CERTIFICATE-----\n"; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ByteArrayInputStream certArray = new ByteArrayInputStream(certificate 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getBytes()); 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String certificate2 = "-----BEGIN CERTIFICATE-----\n" 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MIICZzCCAdCgAwIBAgIBGzANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJVUzEY\n" 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsT\n" 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "A1BLSTEcMBoGA1UEAxMTRG9EIFBLSSBNZWQgUm9vdCBDQTAeFw05ODA4MDMyMjAy\n" 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MjlaFw0wODA4MDQyMjAyMjlaMGExCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMu\n" 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "IEdvdmVybm1lbnQxDDAKBgNVBAsTA0RvRDEMMAoGA1UECxMDUEtJMRwwGgYDVQQD\n" 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "ExNEb0QgUEtJIE1lZCBSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "gQDbrM/J9FrJSX+zxFUbsI9Vw5QbguVBIa95rwW/0M8+sM0r5gd+DY6iubm6wnXk\n" 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "CSvbfQlFEDSKr4WYeeGp+d9WlDnQdtDFLdA45tCi5SHjnW+hGAmZnld0rz6wQekF\n" 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "5xQaa5A6wjhMlLOjbh27zyscrorMJ1O5FBOWnEHcRv6xqQIDAQABoy8wLTAdBgNV\n" 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "HQ4EFgQUVrmYR6m9701cHQ3r5kXyG7zsCN0wDAYDVR0TBAUwAwEB/zANBgkqhkiG\n" 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "9w0BAQUFAAOBgQDVX1Y0YqC7vekeZjVxtyuC8Mnxbrz6D109AX07LEIRzNYzwZ0w\n" 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MTImSp9sEzWW+3FueBIU7AxGys2O7X0qmN3zgszPfSiocBuQuXIYQctJhKjF5KVc\n" 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "VGQRYYlt+myhl2vy6yPzEVCjiKwMEb1Spu0irCf+lFW2hsdjvmSQMtZvOw==\n" 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "-----END CERTIFICATE-----\n"; 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ByteArrayInputStream certArray2 = new ByteArrayInputStream(certificate2 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getBytes()); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String certificate3 = "-----BEGIN CERTIFICATE-----\n" 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MIIDXDCCAsWgAwIBAgIBSjANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJVUzEY\n" 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsT\n" 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "A1BLSTERMA8GA1UEAxMITWVkIENBLTEwHhcNOTgwODAyMTgwMjQwWhcNMDEwODAy\n" 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MTgwMjQwWjB0MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50\n" 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsTA1BLSTENMAsGA1UECxMEVVNBRjEgMB4G\n" 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "A1UEAxMXR3VtYnkuSm9zZXBoLjAwMDAwMDUwNDQwgZ8wDQYJKoZIhvcNAQEBBQAD\n" 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "gY0AMIGJAoGBALT/R7bPqs1c1YqXAg5HNpZLgW2HuAc7RCaP06cE4R44GBLw/fQc\n" 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "VRNLn5pgbTXsDnjiZVd8qEgYqjKFQka4/tNhaF7No2tBZB+oYL/eP0IWtP+h/W6D\n" 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "KR5+UvIIdgmx7k3t9jp2Q51JpHhhKEb9WN54trCO9Yu7PYU+LI85jEIBAgMBAAGj\n" 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "ggEaMIIBFjAWBgNVHSAEDzANMAsGCWCGSAFlAgELAzAfBgNVHSMEGDAWgBQzOhTo\n" 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "CWdhiGUkIOx5cELXppMe9jAdBgNVHQ4EFgQUkLBJl+ayKgzOp/wwBX9M1lSkCg4w\n" 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "DgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwgZ0GA1UdHwSBlTCBkjCBj6CB\n" 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "jKCBiYaBhmxkYXA6Ly9kcy0xLmNoYW1iLmRpc2EubWlsL2NuJTNkTWVkJTIwQ0El\n" 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "MmQxJTJjb3UlM2RQS0klMmNvdSUzZERvRCUyY28lM2RVLlMuJTIwR292ZXJubWVu\n" 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "dCUyY2MlM2RVUz9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0JTNiYmluYXJ5MA0G\n" 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "CSqGSIb3DQEBBQUAA4GBAFjapuDHMvIdUeYRyEYdShBR1JZC20tJ3MQnyBQveddz\n" 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "LGFDGpIkRAQU7T/5/ne8lMexyxViC21xOlK9LdbJCbVyywvb9uEm/1je9wieQQtr\n" 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "kjykuB+WB6qTCIslAO/eUmgzfzIENvnH8O+fH7QTr2PdkFkiPIqBJYHvw7F3XDqy\n" 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "-----END CERTIFICATE-----\n"; 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ByteArrayInputStream certArray3 = new ByteArrayInputStream(certificate3 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getBytes()); 86f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 87f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X509KeyManagerImpl(String name) { 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyType = name; 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory cf = CertificateFactory.getInstance("X.509"); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyTest = KeyStore.getInstance(KeyStore.getDefaultType()); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyTest.load(null, null); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (keyType.equals(client)) { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cert = new X509Certificate[2]; 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cert[0] = (X509Certificate) cf.generateCertificate(certArray); 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cert[1] = (X509Certificate) cf.generateCertificate(certArray2); 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //keyTest = KeyStore.getInstance(KeyStore.getDefaultType()); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //keyTest.load(null, null); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyTest.setCertificateEntry("clientAlias_01", cert[0]); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyTest.setCertificateEntry("clientAlias_02", cert[0]); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyTest.setCertificateEntry("clientAlias_03", cert[1]); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else if (keyType.equals(server)) { 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //CertificateFactory cf = CertificateFactory.getInstance("X.509"); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cert = new X509Certificate[1]; 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cert[0] = (X509Certificate) cf.generateCertificate(certArray3); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //keyTest = KeyStore.getInstance(KeyStore.getDefaultType()); 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //keyTest.load(null, null); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyTest.setCertificateEntry("serverAlias_00", cert[0]); 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new IllegalArgumentException(ex.getMessage()); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 115f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getClientAliases(String s, Principal[] aprincipal) { 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (s == null || s.equals("")) { 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (s.equals(client)) { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration<String> aliase = keyTest.aliases(); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Vector vec = new Vector(); 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int i = 0; 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (aliase.hasMoreElements()) { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project vec.addElement(aliase.nextElement()); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project i++; 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] res = new String[vec.size()]; 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (i = 0; i < vec.size(); i++) { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project res[i] = vec.elementAt(i).toString(); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return res; 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else return null; 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new IllegalArgumentException(ex.getMessage()); 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 139f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String chooseClientAlias(String[] as, Principal[] aprincipal, Socket socket) { 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String alias = null; 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (as == null || as.length == 0) { 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (as.length == 1 && as[0].equals(client)) { 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (socket == null) { 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alias = keyTest.getCertificateAlias(cert[0]); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alias = keyTest.getCertificateAlias(cert[1]); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return alias; 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new IllegalArgumentException(ex.getMessage()); 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 159f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getServerAliases(String s, Principal aprincipal[]) { 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (s == null || s.equals("")) { 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (s.equals(server)) { 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration<String> aliase = keyTest.aliases(); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Vector vec = new Vector(); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int i = 0; 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (aliase.hasMoreElements()) { 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project vec.addElement(aliase.nextElement()); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project i++; 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] res = new String[vec.size()]; 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (i = 0; i < vec.size(); i++) { 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project res[i] = vec.elementAt(i).toString(); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return res; 178f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } else return null; 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new IllegalArgumentException(ex.getMessage()); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 183f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String chooseServerAlias(String as, Principal[] aprincipal, Socket socket) { 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String alias = null; 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (as == null || as.equals("")) { 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (as.equals(server) && socket != null) { 191b7eec62f6db198a76b67d7915b03e59189c6df4fBrian Carlstrom return alias = keyTest.getCertificateAlias(cert[0]); 192b7eec62f6db198a76b67d7915b03e59189c6df4fBrian Carlstrom } else { 193b7eec62f6db198a76b67d7915b03e59189c6df4fBrian Carlstrom return null; 194b7eec62f6db198a76b67d7915b03e59189c6df4fBrian Carlstrom } 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new IllegalArgumentException(ex.getMessage()); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 199f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X509Certificate[] getCertificateChain(String s) { 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /*try { 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (s != null && !s.equals("")) { 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509Certificate[] cert = (X509Certificate[]) keyTest.getCertificateChain(s); 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return cert; 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else return null; 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new IllegalArgumentException(ex.getMessage()); 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }*/ 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 211f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public PrivateKey getPrivateKey(String s) { 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /*try { 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (s != null && !s.equals("")) { 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Certificate[] cert = keyTest.getCertificateChain(s); 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PrivateKey pk = (PrivateKey) keyTest.getKey(s, null); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return pk; 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else return null; 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new IllegalArgumentException(ex.getMessage()); 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }*/ 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 226