content: /*******************************************************************************
   * Software Name : RCS IMS Stack
   *
   * Copyright (C) 2010-2016 Orange.
   *
   * 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 com.gsma.rcs.provisioning.https;
  
  import java.security.KeyStore;
  import java.security.KeyStoreException;
  import java.security.NoSuchAlgorithmException;
  import java.security.cert.CertificateException;
  import java.security.cert.X509Certificate;
  
  import javax.net.ssl.TrustManager;
  import javax.net.ssl.TrustManagerFactory;
  import javax.net.ssl.X509TrustManager;
  
  /**
   * @author olamy
   * @version $Id: EasyX509TrustManager.java 765355 2009-04-15 20:59:07Z evenisse $
   * @since 1.2.3
   */
  public class EasyX509TrustManager implements X509TrustManager {
  
      private X509TrustManager standardTrustManager = null;
  
      /**
       * Constructor for EasyX509TrustManager.
       */
      public EasyX509TrustManager(KeyStore keystore) throws NoSuchAlgorithmException,
              KeyStoreException {
          super();
          TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory
                  .getDefaultAlgorithm());
          factory.init(keystore);
          TrustManager[] trustmanagers = factory.getTrustManagers();
          if (trustmanagers.length == 0) {
              throw new NoSuchAlgorithmException("no trust manager found");
          }
          this.standardTrustManager = (X509TrustManager) trustmanagers[0];
      }
  
      /**
       * @see javax2.net.ssl.X509TrustManager#checkClientTrusted(X509Certificate[],String authType)
       */
      public void checkClientTrusted(X509Certificate[] certificates, String authType)
              throws CertificateException {
          standardTrustManager.checkClientTrusted(certificates, authType);
      }
  
      /**
       * @see javax2.net.ssl.X509TrustManager#checkServerTrusted(X509Certificate[],String authType)
       */
      public void checkServerTrusted(X509Certificate[] certificates, String authType)
              throws CertificateException {
          if ((certificates != null) && (certificates.length == 1)) {
              certificates[0].checkValidity();
          } else {
              // standardTrustManager.checkServerTrusted( certificates, authType );
          }
      }
  
      /**
       * @see javax2.net.ssl.X509TrustManager#getAcceptedIssuers()
       */
      public X509Certificate[] getAcceptedIssuers() {
          return this.standardTrustManager.getAcceptedIssuers();
      }
  
  }
  