1/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.security.keystore;
18
19import java.math.BigInteger;
20import java.security.InvalidKeyException;
21import java.security.NoSuchAlgorithmException;
22import java.security.NoSuchProviderException;
23import java.security.Principal;
24import java.security.PublicKey;
25import java.security.SignatureException;
26import java.security.cert.CertificateEncodingException;
27import java.security.cert.CertificateException;
28import java.security.cert.CertificateExpiredException;
29import java.security.cert.CertificateNotYetValidException;
30import java.security.cert.CertificateParsingException;
31import java.security.cert.X509Certificate;
32import java.util.Collection;
33import java.util.Date;
34import java.util.List;
35import java.util.Set;
36
37import javax.security.auth.x500.X500Principal;
38
39class DelegatingX509Certificate extends X509Certificate {
40    private final X509Certificate mDelegate;
41
42    DelegatingX509Certificate(X509Certificate delegate) {
43        mDelegate = delegate;
44    }
45
46    @Override
47    public Set<String> getCriticalExtensionOIDs() {
48        return mDelegate.getCriticalExtensionOIDs();
49    }
50
51    @Override
52    public byte[] getExtensionValue(String oid) {
53        return mDelegate.getExtensionValue(oid);
54    }
55
56    @Override
57    public Set<String> getNonCriticalExtensionOIDs() {
58        return mDelegate.getNonCriticalExtensionOIDs();
59    }
60
61    @Override
62    public boolean hasUnsupportedCriticalExtension() {
63        return mDelegate.hasUnsupportedCriticalExtension();
64    }
65
66    @Override
67    public void checkValidity() throws CertificateExpiredException,
68            CertificateNotYetValidException {
69        mDelegate.checkValidity();
70    }
71
72    @Override
73    public void checkValidity(Date date) throws CertificateExpiredException,
74            CertificateNotYetValidException {
75        mDelegate.checkValidity(date);
76    }
77
78    @Override
79    public int getBasicConstraints() {
80        return mDelegate.getBasicConstraints();
81    }
82
83    @Override
84    public Principal getIssuerDN() {
85        return mDelegate.getIssuerDN();
86    }
87
88    @Override
89    public boolean[] getIssuerUniqueID() {
90        return mDelegate.getIssuerUniqueID();
91    }
92
93    @Override
94    public boolean[] getKeyUsage() {
95        return mDelegate.getKeyUsage();
96    }
97
98    @Override
99    public Date getNotAfter() {
100        return mDelegate.getNotAfter();
101    }
102
103    @Override
104    public Date getNotBefore() {
105        return mDelegate.getNotBefore();
106    }
107
108    @Override
109    public BigInteger getSerialNumber() {
110        return mDelegate.getSerialNumber();
111    }
112
113    @Override
114    public String getSigAlgName() {
115        return mDelegate.getSigAlgName();
116    }
117
118    @Override
119    public String getSigAlgOID() {
120        return mDelegate.getSigAlgOID();
121    }
122
123    @Override
124    public byte[] getSigAlgParams() {
125        return mDelegate.getSigAlgParams();
126    }
127
128    @Override
129    public byte[] getSignature() {
130        return mDelegate.getSignature();
131    }
132
133    @Override
134    public Principal getSubjectDN() {
135        return mDelegate.getSubjectDN();
136    }
137
138    @Override
139    public boolean[] getSubjectUniqueID() {
140        return mDelegate.getSubjectUniqueID();
141    }
142
143    @Override
144    public byte[] getTBSCertificate() throws CertificateEncodingException {
145        return mDelegate.getTBSCertificate();
146    }
147
148    @Override
149    public int getVersion() {
150        return mDelegate.getVersion();
151    }
152
153    @Override
154    public byte[] getEncoded() throws CertificateEncodingException {
155        return mDelegate.getEncoded();
156    }
157
158    @Override
159    public PublicKey getPublicKey() {
160        return mDelegate.getPublicKey();
161    }
162
163    @Override
164    public String toString() {
165        return mDelegate.toString();
166    }
167
168    @Override
169    public void verify(PublicKey key)
170            throws CertificateException,
171            NoSuchAlgorithmException,
172            InvalidKeyException,
173            NoSuchProviderException,
174            SignatureException {
175        mDelegate.verify(key);
176    }
177
178    @Override
179    public void verify(PublicKey key, String sigProvider)
180            throws CertificateException,
181            NoSuchAlgorithmException,
182            InvalidKeyException,
183            NoSuchProviderException,
184            SignatureException {
185        mDelegate.verify(key, sigProvider);
186    }
187
188    @Override
189    public List<String> getExtendedKeyUsage() throws CertificateParsingException {
190        return mDelegate.getExtendedKeyUsage();
191    }
192
193    @Override
194    public Collection<List<?>> getIssuerAlternativeNames() throws CertificateParsingException {
195        return mDelegate.getIssuerAlternativeNames();
196    }
197
198    @Override
199    public X500Principal getIssuerX500Principal() {
200        return mDelegate.getIssuerX500Principal();
201    }
202
203    @Override
204    public Collection<List<?>> getSubjectAlternativeNames() throws CertificateParsingException {
205        return mDelegate.getSubjectAlternativeNames();
206    }
207
208    @Override
209    public X500Principal getSubjectX500Principal() {
210        return mDelegate.getSubjectX500Principal();
211    }
212}
213