1 /*
2  * Copyright (C) 2018 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 
17 package android.util.apk;
18 
19 import java.math.BigInteger;
20 import java.security.InvalidKeyException;
21 import java.security.NoSuchAlgorithmException;
22 import java.security.NoSuchProviderException;
23 import java.security.Principal;
24 import java.security.PublicKey;
25 import java.security.SignatureException;
26 import java.security.cert.CertificateEncodingException;
27 import java.security.cert.CertificateException;
28 import java.security.cert.CertificateExpiredException;
29 import java.security.cert.CertificateNotYetValidException;
30 import java.security.cert.X509Certificate;
31 import java.util.Date;
32 import java.util.Set;
33 
34 class WrappedX509Certificate extends X509Certificate {
35     private final X509Certificate mWrapped;
36 
WrappedX509Certificate(X509Certificate wrapped)37     WrappedX509Certificate(X509Certificate wrapped) {
38         this.mWrapped = wrapped;
39     }
40 
41     @Override
getCriticalExtensionOIDs()42     public Set<String> getCriticalExtensionOIDs() {
43         return mWrapped.getCriticalExtensionOIDs();
44     }
45 
46     @Override
getExtensionValue(String oid)47     public byte[] getExtensionValue(String oid) {
48         return mWrapped.getExtensionValue(oid);
49     }
50 
51     @Override
getNonCriticalExtensionOIDs()52     public Set<String> getNonCriticalExtensionOIDs() {
53         return mWrapped.getNonCriticalExtensionOIDs();
54     }
55 
56     @Override
hasUnsupportedCriticalExtension()57     public boolean hasUnsupportedCriticalExtension() {
58         return mWrapped.hasUnsupportedCriticalExtension();
59     }
60 
61     @Override
checkValidity()62     public void checkValidity()
63             throws CertificateExpiredException, CertificateNotYetValidException {
64         mWrapped.checkValidity();
65     }
66 
67     @Override
checkValidity(Date date)68     public void checkValidity(Date date)
69             throws CertificateExpiredException, CertificateNotYetValidException {
70         mWrapped.checkValidity(date);
71     }
72 
73     @Override
getVersion()74     public int getVersion() {
75         return mWrapped.getVersion();
76     }
77 
78     @Override
getSerialNumber()79     public BigInteger getSerialNumber() {
80         return mWrapped.getSerialNumber();
81     }
82 
83     @Override
getIssuerDN()84     public Principal getIssuerDN() {
85         return mWrapped.getIssuerDN();
86     }
87 
88     @Override
getSubjectDN()89     public Principal getSubjectDN() {
90         return mWrapped.getSubjectDN();
91     }
92 
93     @Override
getNotBefore()94     public Date getNotBefore() {
95         return mWrapped.getNotBefore();
96     }
97 
98     @Override
getNotAfter()99     public Date getNotAfter() {
100         return mWrapped.getNotAfter();
101     }
102 
103     @Override
getTBSCertificate()104     public byte[] getTBSCertificate() throws CertificateEncodingException {
105         return mWrapped.getTBSCertificate();
106     }
107 
108     @Override
getSignature()109     public byte[] getSignature() {
110         return mWrapped.getSignature();
111     }
112 
113     @Override
getSigAlgName()114     public String getSigAlgName() {
115         return mWrapped.getSigAlgName();
116     }
117 
118     @Override
getSigAlgOID()119     public String getSigAlgOID() {
120         return mWrapped.getSigAlgOID();
121     }
122 
123     @Override
getSigAlgParams()124     public byte[] getSigAlgParams() {
125         return mWrapped.getSigAlgParams();
126     }
127 
128     @Override
getIssuerUniqueID()129     public boolean[] getIssuerUniqueID() {
130         return mWrapped.getIssuerUniqueID();
131     }
132 
133     @Override
getSubjectUniqueID()134     public boolean[] getSubjectUniqueID() {
135         return mWrapped.getSubjectUniqueID();
136     }
137 
138     @Override
getKeyUsage()139     public boolean[] getKeyUsage() {
140         return mWrapped.getKeyUsage();
141     }
142 
143     @Override
getBasicConstraints()144     public int getBasicConstraints() {
145         return mWrapped.getBasicConstraints();
146     }
147 
148     @Override
getEncoded()149     public byte[] getEncoded() throws CertificateEncodingException {
150         return mWrapped.getEncoded();
151     }
152 
153     @Override
verify(PublicKey key)154     public void verify(PublicKey key) throws CertificateException, NoSuchAlgorithmException,
155             InvalidKeyException, NoSuchProviderException, SignatureException {
156         mWrapped.verify(key);
157     }
158 
159     @Override
verify(PublicKey key, String sigProvider)160     public void verify(PublicKey key, String sigProvider)
161             throws CertificateException, NoSuchAlgorithmException, InvalidKeyException,
162             NoSuchProviderException, SignatureException {
163         mWrapped.verify(key, sigProvider);
164     }
165 
166     @Override
toString()167     public String toString() {
168         return mWrapped.toString();
169     }
170 
171     @Override
getPublicKey()172     public PublicKey getPublicKey() {
173         return mWrapped.getPublicKey();
174     }
175 }
176