コード例 #1
0
  /**
   * if any error in code, exiting in case of trbrl: open up a warning dialog, and return false;
   *
   * <p>algo:
   *
   * <p>. add providers
   *
   * <p>. open keystoreSource . open keystoreKstTarget . select aliasSource pointing to valid
   * kprSource . get respective keySource & crtsSource
   *
   * <p>. create new keypair . create new certificate of type X.509 . assign new entry to open
   * [JKS-JCEKS-PKCS12-BKS-UBER] keystore . save [JKS-JCEKS-PKCS12-BKS-UBER] keystore
   */
  protected boolean _doJob_(KeyStore kstOpenSource, KeyStore kstOpenTarget, File fleOpenKstTarget) {
    String strMethod = "_doJob_(kstOpenSource, kstOpenTarget, fleOpenKstTarget)";

    if (kstOpenSource == null || kstOpenTarget == null || fleOpenKstTarget == null)
      MySystem.s_printOutExit(this, strMethod, "nil arg");

    // --
    // . select aliasSource and password pointing to valid kprSource

    // ----
    // get aliases

    // NEW

    String[] strsAliasPKTCSource = UtilKstAbs.s_getStrsAliasPKTC(super._frmOwner_, kstOpenSource);

    if (strsAliasPKTCSource == null) {
      MySystem.s_printOutExit(strMethod, "nil strsAliasPKTCSource");
    }

    String[] strsAliasSKSource = UtilKstAbs.s_getStrsAliasSK(super._frmOwner_, kstOpenSource);

    if (strsAliasSKSource == null) {
      MySystem.s_printOutExit(strMethod, "nil strsAliasPKTCSource");
    }

    // --
    // get arrays for dialogTableSelectKeypair
    // TC versus PK
    Boolean[] boosIsTCEntryPKTCSource =
        UtilKstAbs.s_getBoosEntryTcr(super._frmOwner_, kstOpenSource, strsAliasPKTCSource);

    if (boosIsTCEntryPKTCSource == null) {
      MySystem.s_printOutExit(strMethod, "nil boosIsTCEntryPKTCSource");
    }

    Boolean[] boosValidDatePKTCSource =
        UtilKstAbs.s_getBoosValidDatePKTC(super._frmOwner_, kstOpenSource, strsAliasPKTCSource);

    if (boosValidDatePKTCSource == null) {
      MySystem.s_printOutExit(strMethod, "nil boosValidDatePKTCSource");
    }

    Boolean[] boosSelfSignedCertPKTCSource =
        UtilKstAbs.s_getBoosSelfSigned(super._frmOwner_, kstOpenSource, strsAliasPKTCSource);

    if (boosSelfSignedCertPKTCSource == null) {
      MySystem.s_printOutExit(strMethod, "nil boosSelfSignedCertPKTCSource");
    }

    Boolean[] boosTrustedCertPKTCSource =
        UtilKstAbs.s_getBoosTrusted(super._frmOwner_, kstOpenSource, strsAliasPKTCSource);

    if (boosTrustedCertPKTCSource == null) {
      MySystem.s_printOutExit(strMethod, "nil boosTrustedCertPKTCSource");
    }

    String[] strsSizeKeyPublPKTCSource =
        UtilKstAbs.s_getStrsSizeKeyPubl(super._frmOwner_, kstOpenSource, strsAliasPKTCSource);

    if (strsSizeKeyPublPKTCSource == null) {
      MySystem.s_printOutExit(strMethod, "nil strsSizeKeyPublPKTCSource");
    }

    String[] strsTypeCertPKTCSource =
        UtilKstAbs.s_getStrsTypeCertificatePKTC(
            super._frmOwner_, kstOpenSource, strsAliasPKTCSource);

    if (strsTypeCertPKTCSource == null) {
      MySystem.s_printOutExit(strMethod, "nil strsTypeCertPKTCSource");
    }

    String[] strsAlgoSigCertPKTCSource =
        UtilKstAbs.s_getStrsAlgoSigCertPKTC(super._frmOwner_, kstOpenSource, strsAliasPKTCSource);

    if (strsAlgoSigCertPKTCSource == null) {
      MySystem.s_printOutExit(strMethod, "nil strsAlgoSigCertPKTCSource");
    }

    Date[] dtesLastModifiedPKTCSource =
        UtilKstAbs.s_getDtesLastModified(super._frmOwner_, kstOpenSource, strsAliasPKTCSource);

    if (dtesLastModifiedPKTCSource == null) {
      MySystem.s_printOutExit(strMethod, "nil dtesLastModifiedPKTCSource");
    }

    Date[] dtesLastModifiedSKSource =
        UtilKstAbs.s_getDtesLastModified(super._frmOwner_, kstOpenSource, strsAliasSKSource);

    if (dtesLastModifiedSKSource == null) {
      MySystem.s_printOutExit(strMethod, "nil dtesLastModifiedPKTCSource");
    }

    /*String[] strsAliasSource = UtilKstAbs.s_getStrsAlias(
        super._frmOwner_,

        kstOpenSource);

    if (strsAliasSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil strsAliasSource");
        return false;
    }

    // ----
    // check for existing aliases

    if (strsAliasSource.length < 1)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutWarning(this, strMethod, "strsAliasSource.length < 1");

        String strBody = "source keystore does not contain any entry.";


        OPAbstract.s_showDialogInfo(
            super._frmOwner_, strBody);

        return false;
    }

    // --
    // fill in table for dialogSelect

    Boolean[] boosEntryTcrSource = UtilKstAbs.s_getBoosEntryTcr(
        super._frmOwner_, kstOpenSource, strsAliasSource);

    if (boosEntryTcrSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil boosEntryTcrSource");
        return false;
    }

    Boolean[] boosEntryKprSource = UtilKstAbs.s_getBoosEntryKpr(
        super._frmOwner_, kstOpenSource, strsAliasSource);

    if (boosEntryKprSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil boosEntryKprSource");
        return false;
    }

    Boolean[] boosSelfSignedCertSource = UtilKstAbs.s_getBoosSelfSigned(
        super._frmOwner_, kstOpenSource, strsAliasSource);

    if (boosSelfSignedCertSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil boosSelfSignedCertSource");
        return false;
    }


    Boolean[] boosTrustedCertSource =
        UtilKstAbs.s_getBoosTrusted(super._frmOwner_, kstOpenSource, strsAliasSource);

    if (boosTrustedCertSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil boosTrustedCertSource");
        return false;
    }

    String[] strsSizeKeyPublSource = UtilKstAbs.s_getStrsSizeKeyPubl(super._frmOwner_, kstOpenSource, strsAliasSource);

    if (strsSizeKeyPublSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil strsSizeKeyPublSource");
        return false;
    }

    String[] strsAlgoKeyPublSource = UtilKstAbs.s_getStrsAlgoKeyPubl(super._frmOwner_, kstOpenSource, strsAliasSource);

    if (strsAlgoKeyPublSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil strsAlgoKeyPublSource");
        return false;
    }

    String[] strsTypeCertSource = UtilKstAbs.s_getStrsTypeCertificatePKTC(super._frmOwner_, kstOpenSource, strsAliasSource);

    if (strsTypeCertSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil strsTypeCertSource");
        return false;
    }

    String[] strsAlgoSigCertSource = UtilKstAbs.s_getStrsAlgoSigCertPKTC(super._frmOwner_, kstOpenSource, strsAliasSource);

    if (strsAlgoSigCertSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil strsAlgoSigCertSource");
        return false;
    }

    Date[] dtesLastModifiedSource = UtilKstAbs.s_getDtesLastModified(super._frmOwner_, kstOpenSource, strsAliasSource);

    if (dtesLastModifiedSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil dtesLastModifiedSource");
        return false;
    }

    // ----

    Boolean[] boosTypeCertX509Source = super._getBoosTypeCertX509_(kstOpenSource, strsAliasSource);

    if (boosTypeCertX509Source == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil boosTypeCertX509Source");
        return false;
    }

    Boolean[] boosElligibleSource = super._getBoosElligibleAny_(
        boosEntryKprSource, strsAlgoKeyPublSource,
        boosTypeCertX509Source);

    if (boosElligibleSource == null)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "nil boosElligibleSource");
        return false;
    }

    // --
    // clean-up
    boosTypeCertX509Source = null;

    // ---
    // check for elligible entry

    boolean blnElligible = false;

    for (int i=0; i<boosElligibleSource.length; i++)
    {
        if (boosElligibleSource[i].booleanValue() == true)
        {
            blnElligible = true;
            break;
        }
    }

    if (! blnElligible)
    {
        super._setEnabledCursorWait_(false);
        MySystem.s_printOutError(this, strMethod, "! blnElligible");

        String strBody = "source keystore does not contain any keypair entry\n either of type RSA, or of type DSA, with an X.509 certificate .";

        OPAbstract.s_showDialogInfo(
            super._frmOwner_, strBody);

        return false;
    }*/

    // --
    // assign default cursor

    super._setEnabledCursorWait_(false);

    // ----

    /*DTblEntryKprOpenKPAny dlgSource = new DTblEntryKprOpenKPAny(
    super._frmOwner_,
    super._strTitleAppli_,
    kstOpenSource
    );*/

    DTblsKstSelPKOpen dlgSource =
        new DTblsKstSelPKOpen(
            super._frmOwner_,
            kstOpenSource,
            super._strPathAbsKst_,
            "Import private key from other keystore - step 1/2: source");

    if (!dlgSource.init()) MySystem.s_printOutExit(this, strMethod, "failed");

    //
    if (!dlgSource.load(
        strsAliasPKTCSource,
        boosIsTCEntryPKTCSource,
        boosValidDatePKTCSource,
        boosSelfSignedCertPKTCSource,
        boosTrustedCertPKTCSource,
        strsSizeKeyPublPKTCSource,
        strsTypeCertPKTCSource,
        strsAlgoSigCertPKTCSource,
        dtesLastModifiedPKTCSource,
        // below: about SK (Secret Key)
        strsAliasSKSource,
        dtesLastModifiedSKSource

        /*boosElligibleSource, strsAliasSource,
        boosEntryKprSource,
        boosEntryTcrSource,
        boosSelfSignedCertSource,
        boosTrustedCertSource,
        strsAlgoKeyPublSource,
        strsSizeKeyPublSource,
        strsTypeCertSource,
        strsAlgoSigCertSource, dtesLastModifiedSource*/ )) {
      MySystem.s_printOutExit(this, strMethod, "failed");
    }

    dlgSource.setVisible(true);

    // ---
    char[] chrsPasswdKprSource = dlgSource.getPassword();

    if (chrsPasswdKprSource == null) {
      MySystem.s_printOutTrace(this, strMethod, "nil chrsPasswdKprSource, aborted by user");
      return false;
    }

    String strAliasKprSource = dlgSource.getAlias();

    if (strAliasKprSource == null) {
      MySystem.s_printOutTrace(this, strMethod, "nil strAliasKprSource, aborted by user");
      return false;
    }

    // super._setEnabledCursorWait_(true);

    // at this level, user selected keypair (got alias & password)

    // --
    // . get respective keySource & crtsSource

    // ----
    // x) get privateKey

    PrivateKey pkySource = null;

    try {
      pkySource =
          (PrivateKey)
              UtilKstAbs.s_getKey(
                  super._frmOwner_, kstOpenSource, strAliasKprSource, chrsPasswdKprSource);
    } catch (ClassCastException excClassCast) {
      excClassCast.printStackTrace();
      MySystem.s_printOutExit(this, strMethod, "excClassCast caught");
    }

    if (pkySource == null) {
      MySystem.s_printOutError(this, strMethod, "nil pkySource");
      return false;
    }

    // ----
    // x) get X509Certificates

    X509Certificate[] crtsX509UnorderedSource =
        UtilCrtX509.s_getX509CertificateChain(
            kstOpenSource,
            strAliasKprSource,
            false // blnOrderChain !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            );

    if (crtsX509UnorderedSource == null) {
      MySystem.s_printOutError(this, strMethod, "nil crtsX509UnorderedSource");
      return false;
    }

    // -----

    if (!__createNewEntry__(kstOpenTarget, pkySource, crtsX509UnorderedSource)) {
      super._setEnabledCursorWait_(false);
      MySystem.s_printOutError(this, strMethod, "failed");
      return false;
    }

    // ----
    // save kstOpenTarget

    if (super._chrsPasswdKst_ == null) {
      MySystem.s_printOutError(this, strMethod, "nil super._chrsPasswdKst_");
      return false;
    }

    // ----

    if (!super._saveKeyStore_(kstOpenTarget, fleOpenKstTarget, super._chrsPasswdKst_)) {
      MySystem.s_printOutError(this, strMethod, "failed");
      return false;
    }

    // ending
    return true;
  }