package com.l7tech.server.tomcat;

import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.HashSet;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSessionContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509KeyManager;
import javax.net.ssl.X509TrustManager;
import org.apache.tomcat.util.net.SSLContext;

public class SsgJSSESSLContext implements SSLContext {
   private final javax.net.ssl.SSLContext a;
   private KeyManager[] b;
   private TrustManager[] c;

   private SsgJSSESSLContext(javax.net.ssl.SSLContext var1) {
      this.a = var1;
   }

   public static SsgJSSESSLContext createInstance(String var0, Provider var1) throws NoSuchAlgorithmException {
      javax.net.ssl.SSLContext var2;
      if (var1 != null) {
         var2 = javax.net.ssl.SSLContext.getInstance(var0, var1);
      } else {
         var2 = javax.net.ssl.SSLContext.getInstance(var0);
      }

      return new SsgJSSESSLContext(var2);
   }

   public void init(KeyManager[] var1, TrustManager[] var2, SecureRandom var3) throws KeyManagementException {
      this.b = var1;
      this.c = var2;
      this.a.init(var1, var2, var3);
   }

   public void destroy() {
   }

   public SSLSessionContext getServerSessionContext() {
      return this.a.getServerSessionContext();
   }

   public SSLEngine createSSLEngine() {
      return this.a.createSSLEngine();
   }

   public SSLServerSocketFactory getServerSocketFactory() {
      return this.a.getServerSocketFactory();
   }

   public SSLParameters getSupportedSSLParameters() {
      return this.a.getSupportedSSLParameters();
   }

   public X509Certificate[] getCertificateChain(String var1) {
      X509Certificate[] var2 = null;
      if (this.b != null) {
         for (int var3 = 0; var3 < this.b.length && var2 == null; var3++) {
            if (this.b[var3] instanceof X509KeyManager) {
               var2 = ((X509KeyManager)this.b[var3]).getCertificateChain(var1);
            }
         }
      }

      return var2;
   }

   public X509Certificate[] getAcceptedIssuers() {
      HashSet var1 = new HashSet();
      if (this.c != null) {
         for (TrustManager var5 : this.c) {
            if (var5 instanceof X509TrustManager) {
               X509Certificate[] var6 = ((X509TrustManager)var5).getAcceptedIssuers();
               var1.addAll(Arrays.asList(var6));
            }
         }
      }

      return var1.toArray(new X509Certificate[0]);
   }
}
