package com.l7tech.common.io;

import com.l7tech.util.DeserializeSafe;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.security.auth.x500.X500Principal;

@DeserializeSafe
public class CertGenParams implements Serializable {
   private X500Principal subjectDn;
   private int daysUntilExpiry;
   private Date notBefore;
   private Date notAfter;
   private String signatureAlgorithm;
   private String hashAlgorithm;
   private BigInteger serialNumber;
   private boolean includeSki = true;
   private boolean includeAki = true;
   private boolean includeBasicConstraints;
   private boolean basicConstraintsCa;
   private Integer basicConstraintsPathLength;
   private boolean includeKeyUsage;
   private boolean keyUsageCritical = true;
   private int keyUsageBits;
   private boolean includeExtendedKeyUsage;
   private boolean extendedKeyUsageCritical = true;
   private List<String> extendedKeyUsageKeyPurposeOids;
   private boolean includeSubjectDirectoryAttributes;
   private boolean subjectDirectoryAttributesCritical;
   private List<String> countryOfCitizenshipCountryCodes;
   private boolean includeCertificatePolicies;
   private boolean certificatePoliciesCritical;
   private List<String> certificatePolicies;
   private boolean includeSubjectAlternativeName;
   private boolean subjectAlternativeNameCritical;
   private List<X509GeneralName> subjectAlternativeNames;
   private boolean includeCrlDistributionPoints;
   private boolean crlDistributionPointsCritical;
   private List<List<String>> crlDistributionPointsUrls;
   private boolean includeAuthorityInfoAccess;
   private boolean authorityInfoAccessCritical;
   private List<String> authorityInfoAccessOcspUrls;
   static final long serialVersionUID = 5191906357477310383L;
   private static final String a;

   public CertGenParams() {
   }

   public CertGenParams(X500Principal var1, int var2, boolean var3, String var4) {
      this.setSubjectDn(var1);
      this.setSignatureAlgorithm(var4);
      if (var2 < 1) {
         throw new IllegalArgumentException(a);
      }

      this.setDaysUntilExpiry(var2);
      Calendar var5 = Calendar.getInstance();

      try {
         var5.add(10, -1);
         this.setNotBefore(var5.getTime());
         var5.add(5, var2);
         this.setNotAfter(var5.getTime());
         if (var3) {
            this.setIncludeBasicConstraints(true);
            this.setBasicConstraintsCa(true);
            this.setBasicConstraintsPathLength(1);
            this.setIncludeKeyUsage(true);
            this.setKeyUsageCritical(true);
            this.setKeyUsageBits(6);
         }
      } catch (IllegalArgumentException var6) {
         throw a(var6);
      }
   }

   public CertGenParams(X500Principal var1, List<X509GeneralName> var2, int var3, boolean var4, String var5) {
      this(var1, var3, var4, var5);
      this.setSubjectAlternativeNames(var2);
   }

   public X500Principal getSubjectDn() {
      return this.subjectDn;
   }

   public void setSubjectDn(X500Principal var1) {
      this.subjectDn = var1;
   }

   public int getDaysUntilExpiry() {
      return this.daysUntilExpiry;
   }

   public void setDaysUntilExpiry(int var1) {
      this.daysUntilExpiry = var1;
   }

   public Date getNotBefore() {
      return this.notBefore;
   }

   public void setNotBefore(Date var1) {
      this.notBefore = var1;
   }

   public Date getNotAfter() {
      return this.notAfter;
   }

   public void setNotAfter(Date var1) {
      this.notAfter = var1;
   }

   public String getSignatureAlgorithm() {
      return this.signatureAlgorithm;
   }

   public void setSignatureAlgorithm(String var1) {
      this.signatureAlgorithm = var1;
   }

   public String getHashAlgorithm() {
      return this.hashAlgorithm;
   }

   public void setHashAlgorithm(String var1) {
      this.hashAlgorithm = var1;
   }

   public BigInteger getSerialNumber() {
      return this.serialNumber;
   }

   public void setSerialNumber(BigInteger var1) {
      this.serialNumber = var1;
   }

   public boolean isIncludeSki() {
      return this.includeSki;
   }

   public void setIncludeSki(boolean var1) {
      this.includeSki = var1;
   }

   public boolean isIncludeAki() {
      return this.includeAki;
   }

   public void setIncludeAki(boolean var1) {
      this.includeAki = var1;
   }

   public boolean isIncludeBasicConstraints() {
      return this.includeBasicConstraints;
   }

   public void setIncludeBasicConstraints(boolean var1) {
      this.includeBasicConstraints = var1;
   }

   public boolean isBasicConstraintsCa() {
      return this.basicConstraintsCa;
   }

   public void setBasicConstraintsCa(boolean var1) {
      this.basicConstraintsCa = var1;
   }

   public Integer getBasicConstraintsPathLength() {
      return this.basicConstraintsPathLength;
   }

   public void setBasicConstraintsPathLength(Integer var1) {
      this.basicConstraintsPathLength = var1;
   }

   public boolean isIncludeKeyUsage() {
      return this.includeKeyUsage;
   }

   public void setIncludeKeyUsage(boolean var1) {
      this.includeKeyUsage = var1;
   }

   public boolean isKeyUsageCritical() {
      return this.keyUsageCritical;
   }

   public void setKeyUsageCritical(boolean var1) {
      this.keyUsageCritical = var1;
   }

   public int getKeyUsageBits() {
      return this.keyUsageBits;
   }

   public void setKeyUsageBits(int var1) {
      this.keyUsageBits = var1;
   }

   public boolean isIncludeExtendedKeyUsage() {
      return this.includeExtendedKeyUsage;
   }

   public void setIncludeExtendedKeyUsage(boolean var1) {
      this.includeExtendedKeyUsage = var1;
   }

   public boolean isExtendedKeyUsageCritical() {
      return this.extendedKeyUsageCritical;
   }

   public void setExtendedKeyUsageCritical(boolean var1) {
      this.extendedKeyUsageCritical = var1;
   }

   public List<String> getExtendedKeyUsageKeyPurposeOids() {
      return this.extendedKeyUsageKeyPurposeOids;
   }

   public void setExtendedKeyUsageKeyPurposeOids(List<String> var1) {
      this.extendedKeyUsageKeyPurposeOids = var1;
   }

   public boolean isIncludeSubjectDirectoryAttributes() {
      return this.includeSubjectDirectoryAttributes;
   }

   public void setIncludeSubjectDirectoryAttributes(boolean var1) {
      this.includeSubjectDirectoryAttributes = var1;
   }

   public boolean isSubjectDirectoryAttributesCritical() {
      return this.subjectDirectoryAttributesCritical;
   }

   public void setSubjectDirectoryAttributesCritical(boolean var1) {
      this.subjectDirectoryAttributesCritical = var1;
   }

   public List<String> getCountryOfCitizenshipCountryCodes() {
      return this.countryOfCitizenshipCountryCodes;
   }

   public void setCountryOfCitizenshipCountryCodes(List<String> var1) {
      this.countryOfCitizenshipCountryCodes = var1;
   }

   public boolean isIncludeCertificatePolicies() {
      return this.includeCertificatePolicies;
   }

   public void setIncludeCertificatePolicies(boolean var1) {
      this.includeCertificatePolicies = var1;
   }

   public boolean isCertificatePoliciesCritical() {
      return this.certificatePoliciesCritical;
   }

   public void setCertificatePoliciesCritical(boolean var1) {
      this.certificatePoliciesCritical = var1;
   }

   public List<String> getCertificatePolicies() {
      return this.certificatePolicies;
   }

   public void setCertificatePolicies(List<String> var1) {
      this.certificatePolicies = var1;
   }

   public boolean isIncludeSubjectAlternativeName() {
      return this.includeSubjectAlternativeName;
   }

   public void setIncludeSubjectAlternativeName(boolean var1) {
      this.includeSubjectAlternativeName = var1;
   }

   public List<X509GeneralName> getSubjectAlternativeNames() {
      return this.subjectAlternativeNames;
   }

   public void setSubjectAlternativeNames(List<X509GeneralName> var1) {
      this.subjectAlternativeNames = var1;
   }

   public boolean isSubjectAlternativeNameCritical() {
      return this.subjectAlternativeNameCritical;
   }

   public void setSubjectAlternativeNameCritical(boolean var1) {
      this.subjectAlternativeNameCritical = var1;
   }

   public boolean isIncludeCrlDistributionPoints() {
      return this.includeCrlDistributionPoints;
   }

   public void setIncludeCrlDistributionPoints(boolean var1) {
      this.includeCrlDistributionPoints = var1;
   }

   public boolean isCrlDistributionPointsCritical() {
      return this.crlDistributionPointsCritical;
   }

   public void setCrlDistributionPointsCritical(boolean var1) {
      this.crlDistributionPointsCritical = var1;
   }

   public List<List<String>> getCrlDistributionPointsUrls() {
      return this.crlDistributionPointsUrls;
   }

   public void setCrlDistributionPointsUrls(List<List<String>> var1) {
      this.crlDistributionPointsUrls = var1;
   }

   public boolean isIncludeAuthorityInfoAccess() {
      return this.includeAuthorityInfoAccess;
   }

   public void setIncludeAuthorityInfoAccess(boolean var1) {
      this.includeAuthorityInfoAccess = var1;
   }

   public boolean isAuthorityInfoAccessCritical() {
      return this.authorityInfoAccessCritical;
   }

   public void setAuthorityInfoAccessCritical(boolean var1) {
      this.authorityInfoAccessCritical = var1;
   }

   public List<String> getAuthorityInfoAccessOcspUrls() {
      return this.authorityInfoAccessOcspUrls;
   }

   public void setAuthorityInfoAccessOcspUrls(List<String> var1) {
      this.authorityInfoAccessOcspUrls = var1;
   }

   public CertGenParams disableAllExtensions() {
      this.includeAki = false;
      this.includeSki = false;
      this.includeBasicConstraints = false;
      this.includeKeyUsage = false;
      this.includeExtendedKeyUsage = false;
      this.includeAuthorityInfoAccess = false;
      return this;
   }

   public CertGenParams useUserCertDefaults() {
      this.includeBasicConstraints = true;
      this.basicConstraintsCa = false;
      this.includeKeyUsage = true;
      this.keyUsageCritical = true;
      this.keyUsageBits = 224;
      return this;
   }

   private static IllegalArgumentException a(IllegalArgumentException var0) {
      return var0;
   }

   static {
      String var10002 = a(35, a(")\u0007AHNxk\b\u001eHR\u001cl>\u001f\u000b\u0011CY!;\u0003\fXUUw."));
      byte var10001 = -1;
      a = var10002;
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 104);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 79;
            case 1 -> 92;
            case 2 -> 18;
            case 3 -> 2;
            case 4 -> 31;
            case 5 -> 34;
            default -> 104;
         });
      }

      return new String(var10001).intern();
   }
}
