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