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