content: /*
   * Copyright (C) 2015 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package android.security.keystore;
  
  import java.math.BigInteger;
  import java.security.InvalidKeyException;
  import java.security.NoSuchAlgorithmException;
  import java.security.NoSuchProviderException;
  import java.security.Principal;
  import java.security.PublicKey;
  import java.security.SignatureException;
  import java.security.cert.CertificateEncodingException;
  import java.security.cert.CertificateException;
  import java.security.cert.CertificateExpiredException;
  import java.security.cert.CertificateNotYetValidException;
  import java.security.cert.CertificateParsingException;
  import java.security.cert.X509Certificate;
  import java.util.Collection;
  import java.util.Date;
  import java.util.List;
  import java.util.Set;
  
  import javax.security.auth.x500.X500Principal;
  
  class DelegatingX509Certificate extends X509Certificate {
      private final X509Certificate mDelegate;
  
      DelegatingX509Certificate(X509Certificate delegate) {
          mDelegate = delegate;
      }
  
      @Override
      public Set<String> getCriticalExtensionOIDs() {
          return mDelegate.getCriticalExtensionOIDs();
      }
  
      @Override
      public byte[] getExtensionValue(String oid) {
          return mDelegate.getExtensionValue(oid);
      }
  
      @Override
      public Set<String> getNonCriticalExtensionOIDs() {
          return mDelegate.getNonCriticalExtensionOIDs();
      }
  
      @Override
      public boolean hasUnsupportedCriticalExtension() {
          return mDelegate.hasUnsupportedCriticalExtension();
      }
  
      @Override
      public void checkValidity() throws CertificateExpiredException,
              CertificateNotYetValidException {
          mDelegate.checkValidity();
      }
  
      @Override
      public void checkValidity(Date date) throws CertificateExpiredException,
              CertificateNotYetValidException {
          mDelegate.checkValidity(date);
      }
  
      @Override
      public int getBasicConstraints() {
          return mDelegate.getBasicConstraints();
      }
  
      @Override
      public Principal getIssuerDN() {
          return mDelegate.getIssuerDN();
      }
  
      @Override
      public boolean[] getIssuerUniqueID() {
          return mDelegate.getIssuerUniqueID();
      }
  
      @Override
      public boolean[] getKeyUsage() {
          return mDelegate.getKeyUsage();
      }
  
      @Override
      public Date getNotAfter() {
          return mDelegate.getNotAfter();
      }
  
      @Override
      public Date getNotBefore() {
          return mDelegate.getNotBefore();
      }
  
      @Override
      public BigInteger getSerialNumber() {
          return mDelegate.getSerialNumber();
      }
  
      @Override
      public String getSigAlgName() {
          return mDelegate.getSigAlgName();
      }
  
      @Override
      public String getSigAlgOID() {
          return mDelegate.getSigAlgOID();
      }
  
      @Override
      public byte[] getSigAlgParams() {
          return mDelegate.getSigAlgParams();
      }
  
      @Override
      public byte[] getSignature() {
          return mDelegate.getSignature();
      }
  
      @Override
      public Principal getSubjectDN() {
          return mDelegate.getSubjectDN();
      }
  
      @Override
      public boolean[] getSubjectUniqueID() {
          return mDelegate.getSubjectUniqueID();
      }
  
      @Override
      public byte[] getTBSCertificate() throws CertificateEncodingException {
          return mDelegate.getTBSCertificate();
      }
  
      @Override
      public int getVersion() {
          return mDelegate.getVersion();
      }
  
      @Override
      public byte[] getEncoded() throws CertificateEncodingException {
          return mDelegate.getEncoded();
      }
  
      @Override
      public PublicKey getPublicKey() {
          return mDelegate.getPublicKey();
      }
  
      @Override
      public String toString() {
          return mDelegate.toString();
      }
  
      @Override
      public void verify(PublicKey key)
              throws CertificateException,
              NoSuchAlgorithmException,
              InvalidKeyException,
              NoSuchProviderException,
              SignatureException {
          mDelegate.verify(key);
      }
  
      @Override
      public void verify(PublicKey key, String sigProvider)
              throws CertificateException,
              NoSuchAlgorithmException,
              InvalidKeyException,
              NoSuchProviderException,
              SignatureException {
          mDelegate.verify(key, sigProvider);
      }
  
      @Override
      public List<String> getExtendedKeyUsage() throws CertificateParsingException {
          return mDelegate.getExtendedKeyUsage();
      }
  
      @Override
      public Collection<List<?>> getIssuerAlternativeNames() throws CertificateParsingException {
          return mDelegate.getIssuerAlternativeNames();
      }
  
      @Override
      public X500Principal getIssuerX500Principal() {
          return mDelegate.getIssuerX500Principal();
      }
  
      @Override
      public Collection<List<?>> getSubjectAlternativeNames() throws CertificateParsingException {
          return mDelegate.getSubjectAlternativeNames();
      }
  
      @Override
      public X500Principal getSubjectX500Principal() {
          return mDelegate.getSubjectX500Principal();
      }
  }
  