CertPathValidatorTest.java revision 88d31c7bb167fd2516bc82a99386cf8e66f28b47
188d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann/*
288d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann * Copyright (C) 2009 The Android Open Source Project
388d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann *
488d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann * Licensed under the Apache License, Version 2.0 (the "License");
588d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann * you may not use this file except in compliance with the License.
688d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann * You may obtain a copy of the License at
788d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann *
888d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann *     http://www.apache.org/licenses/LICENSE-2.0
988d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann *
1088d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann * Unless required by applicable law or agreed to in writing, software
1188d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann * distributed under the License is distributed on an "AS IS" BASIS,
1288d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1388d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann * See the License for the specific language governing permissions and
1488d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann * limitations under the License.
1588d31c7bb167fd2516bc82a99386cf8e66f28b47Jorg Pleumann */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.targets.security.cert;
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargets;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPath;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathParameters;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathValidator;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathValidatorException;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathValidatorResult;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic abstract class CertPathValidatorTest extends TestCase {
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final String algorithmName;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public CertPathValidatorTest(String algorithmName) {
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.algorithmName = algorithmName;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    abstract CertPathParameters getParams();
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    abstract CertPath getCertPath();
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    abstract void validateResult(CertPathValidatorResult validatorResult);
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargets({
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                level=TestLevel.ADDITIONAL,
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                method="getInstance",
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                args={String.class}
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                level=TestLevel.ADDITIONAL,
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                method="validate",
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                args={CertPath.class, CertPathParameters.class}
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                level=TestLevel.COMPLETE,
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                method="method",
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                args={}
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        )
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    })
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testCertPathValidator() {
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        CertPathValidator certPathValidator = null;
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            certPathValidator = CertPathValidator.getInstance(algorithmName);
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchAlgorithmException e) {
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail(e.getMessage());
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        CertPathValidatorResult validatorResult = null;
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            validatorResult = certPathValidator.validate(getCertPath(),
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    getParams());
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertPathValidatorException e) {
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail(e.getMessage());
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InvalidAlgorithmParameterException e) {
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail(e.getMessage());
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        validateResult(validatorResult);
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
85