예제 #1
0
  /*
      meaning all Unix, including linux
  */
  public static boolean s_isUnix() {
    String strMethod = _f_s_strClass + "s_isUnix()";

    if (s_isWindows()) return false;

    if (s_isMac()) return false;

    // --

    if (s_isULinux()) return true;

    if (s_isUSun()) return true;

    if (s_isUIbm()) return true;

    if (s_isUHp()) return true;

    if (s_isUSgi()) return true;

    if (s_isUOther()) return true;

    // assuming this is Unix
    MySystem.s_printOutTrace(
        strMethod,
        "not windows, not mac, not linux, not unixSun, assuming this is UNIX, _s_strOsName="
            + _s_strOsName);

    return true;
  }
예제 #2
0
  public static boolean s_isUSun() {
    String strMethod = _f_s_strClass + "s_isUSun()";

    if (_s_strOsName == null) _s_strOsName = System.getProperty("os.name");

    if (_s_strOsName == null) MySystem.s_printOutExit(strMethod, "nil _s_strOsName");

    if (_s_strOsName.toLowerCase().startsWith(_f_s_strOsUnixSunOS)) {
      MySystem.s_printOutTrace(strMethod, "got:" + _s_strOsName);
      return true;
    }

    return false;
  }
예제 #3
0
  public static boolean s_isUOther() {
    String strMethod = _f_s_strClass + "s_isUOther()";

    if (_s_strOsName == null) _s_strOsName = System.getProperty("os.name");

    if (_s_strOsName == null) MySystem.s_printOutExit(strMethod, "nil _s_strOsName");

    for (int i = 0; i < _f_s_strsOsUnixOther.length; i++) {
      if (_s_strOsName.toLowerCase().startsWith(_f_s_strsOsUnixOther[i])) {
        MySystem.s_printOutTrace(strMethod, "got:" + _s_strOsName);
        return true;
      }
    }

    return false;
  }
예제 #4
0
  public boolean doJob() {
    String strMethod = "doJob()";

    try {
      // _validateCmsSignature();
      CMSSignedData cms = _getSignPkcs7();

      SignerInformationStore sis = cms.getSignerInfos();
      Collection colSignerInfo = sis.getSigners();
      Iterator itrSignerInfo = colSignerInfo.iterator();
      SignerInformation sin = (SignerInformation) itrSignerInfo.next();

      // r�cup�ration du certificat du signataire
      CertStore cse = cms.getCertificatesAndCRLs("Collection", CmsVerif._STR_KST_PROVIDER_BC);
      Iterator itrCert = cse.getCertificates(sin.getSID()).iterator();
      X509Certificate crt = (X509Certificate) itrCert.next();

      // Verifie la signature
      boolean blnCoreValidity = sin.verify(crt, CmsVerif._STR_KST_PROVIDER_BC);

      if (blnCoreValidity) {
        MySystem.s_printOutTrace(this, strMethod, "blnCoreValidity=true");

        String strBody = "CMS Detached signature is OK!";

        strBody += "\n\n" + ". CMS signature file location:";
        strBody += "\n  " + super._strPathAbsFileSig_;

        strBody += "\n\n" + ". Data file location:";
        strBody += "\n  " + super._strPathAbsFileData_;

        OPAbstract.s_showDialogInfo(super._frmOwner_, strBody);

        // SignerInfo sio = sin.toSignerInfo();

        SignerId sid = sin.getSID();

        if (sid != null) {
          System.out.println("sid.getSerialNumber()=" + sid.getSerialNumber());
          System.out.println("sid.getIssuerAsString()=" + sid.getIssuerAsString());
          System.out.println("sid.getSubjectAsString()=" + sid.getSubjectAsString());
        }

        /*System.out.println("sin.getDigestAlgOID()=" + sin.getDigestAlgOID());
        System.out.println("sin.getEncryptionAlgOID()=" + sin.getEncryptionAlgOID());
        System.out.println("sin.toString()=" + sin.toString());
        System.out.println("sin.getVersion()=" + sin.getVersion());*/
      } else {
        MySystem.s_printOutWarning(this, strMethod, "blnCoreValidity=true");

        String strBody = "CMS Detached signature is WRONG!";

        strBody += "\n\n" + ". CMS signature file location:";
        strBody += "\n  " + super._strPathAbsFileSig_;

        strBody += "\n\n" + ". Data file location:";
        strBody += "\n  " + super._strPathAbsFileData_;

        OPAbstract.s_showDialogWarning(super._frmOwner_, strBody);
      }

    } catch (Exception exc) {
      exc.printStackTrace();
      MySystem.s_printOutError(this, strMethod, "exc caught");

      String strBody = "Failed to verify CMS detached signature.";

      strBody += "\n\n" + "Possible reason: wrong data file";

      strBody += "\n\n" + "got exception.";
      strBody += "\n" + exc.getMessage();
      strBody += "\n\n" + "More: see your session.log";

      OPAbstract.s_showDialogError(super._frmOwner_, strBody);

      return false;
    }

    // TODO
    return true;
  }
  protected boolean __createNewEntry__(
      KeyStore kstOpenTarget, PrivateKey pkyPrivateSource, Certificate[] crtsSource) {
    String strMethod = "__createNewEntry__(...)";

    // NEW

    String[] strsAliasPKTC = UtilKstAbs.s_getStrsAliasPKTC(super._frmOwner_, kstOpenTarget);

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

    String[] strsAliasSK = UtilKstAbs.s_getStrsAliasSK(super._frmOwner_, kstOpenTarget);

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

    // --
    // get arrays for dialogTableSelectKeypair
    // TC versus PK
    Boolean[] boosIsTCEntryPKTC =
        UtilKstAbs.s_getBoosEntryTcr(super._frmOwner_, kstOpenTarget, strsAliasPKTC);

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

    Boolean[] boosValidDatePKTC =
        UtilKstAbs.s_getBoosValidDatePKTC(super._frmOwner_, kstOpenTarget, strsAliasPKTC);

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

    Boolean[] boosSelfSignedCertPKTC =
        UtilKstAbs.s_getBoosSelfSigned(super._frmOwner_, kstOpenTarget, strsAliasPKTC);

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

    Boolean[] boosTrustedCertPKTC =
        UtilKstAbs.s_getBoosTrusted(super._frmOwner_, kstOpenTarget, strsAliasPKTC);

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

    String[] strsSizeKeyPublPKTC =
        UtilKstAbs.s_getStrsSizeKeyPubl(super._frmOwner_, kstOpenTarget, strsAliasPKTC);

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

    String[] strsTypeCertPKTC =
        UtilKstAbs.s_getStrsTypeCertificatePKTC(super._frmOwner_, kstOpenTarget, strsAliasPKTC);

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

    String[] strsAlgoSigCertPKTC =
        UtilKstAbs.s_getStrsAlgoSigCertPKTC(super._frmOwner_, kstOpenTarget, strsAliasPKTC);

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

    Date[] dtesLastModifiedPKTC =
        UtilKstAbs.s_getDtesLastModified(super._frmOwner_, kstOpenTarget, strsAliasPKTC);

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

    Date[] dtesLastModifiedSK =
        UtilKstAbs.s_getDtesLastModified(super._frmOwner_, kstOpenTarget, strsAliasSK);

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

    /*
    // ----
    // create new alias (?& new password)


    // ----
    // fill in table KeyPair

    String[] strsAliasTarget = UtilKstAbs.s_getStrsAlias(
        super._frmOwner_,

        kstOpenTarget);

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

    // --

    Boolean[] boosEntryKpr = UtilKstAbs.s_getBoosEntryKpr(
        super._frmOwner_, kstOpenTarget, strsAliasTarget);

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

    Boolean[] boosEntryTcr = UtilKstAbs.s_getBoosEntryTcr(
        super._frmOwner_, kstOpenTarget, strsAliasTarget);

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


    Boolean[] boosSelfSignedCert = UtilKstAbs.s_getBoosSelfSigned(
        super._frmOwner_, kstOpenTarget, strsAliasTarget);

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

    Boolean[] boosTrustedCert =
        UtilKstAbs.s_getBoosTrusted(super._frmOwner_, kstOpenTarget, strsAliasTarget);

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

    String[] strsAlgoKeyPubl = UtilKstAbs.s_getStrsAlgoKeyPubl(
        super._frmOwner_, kstOpenTarget, strsAliasTarget);

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

    String[] strsSizeKeyPubl = UtilKstAbs.s_getStrsSizeKeyPubl(
        super._frmOwner_, kstOpenTarget, strsAliasTarget);

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

    String[] strsTypeCert = UtilKstAbs.s_getStrsTypeCertificatePKTC(super._frmOwner_, kstOpenTarget, strsAliasTarget);

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

    String[] strsAlgoSigCert = UtilKstAbs.s_getStrsAlgoSigCertPKTC(super._frmOwner_, kstOpenTarget, strsAliasTarget);

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

    Date[] dtesLastModified = UtilKstAbs.s_getDtesLastModified(super._frmOwner_, kstOpenTarget, strsAliasTarget);

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

    // --
    // assign default cursor

    super._setEnabledCursorWait_(false);

    // ----

    // MEMO: overwriting alias-key not allowed
    // -----

    // ----
    // show dialog KeyPair new entry
    //  . get aliasKpr
    //  . get passwdKpr

    /*DTblEntryKprSaveAny dlgTarget = new DTblEntryKprSaveAny(
    super._frmOwner_,
    super._strTitleAppli_,
    kstOpenTarget,
    super._blnIsPasswdKprTarget_ // blnIsPassword
    );*/

    DTblsKstViewKeySavePK dlgTarget =
        new DTblsKstViewKeySavePK(
            super._frmOwner_,
            kstOpenTarget,
            super._strPathAbsKst_,
            "Import private key from other keystore - step 2/2: target");

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

    //
    if (!dlgTarget.load(
        // below: about PKTC (Private Key & Trusted Certificate)
        strsAliasPKTC,
        boosIsTCEntryPKTC,
        boosValidDatePKTC,
        boosSelfSignedCertPKTC,
        boosTrustedCertPKTC,
        strsSizeKeyPublPKTC,
        strsTypeCertPKTC,
        strsAlgoSigCertPKTC,
        dtesLastModifiedPKTC,
        // below: about SK (Secret Key)
        strsAliasSK,
        dtesLastModifiedSK
        /*strsAliasTarget,
        boosEntryKpr, boosEntryTcr,
        boosSelfSignedCert, boosTrustedCert,
        strsAlgoKeyPubl,
        strsSizeKeyPubl,
        strsTypeCert, strsAlgoSigCert, dtesLastModified*/ )) {
      MySystem.s_printOutExit(this, strMethod, "failed");
    }

    dlgTarget.setVisible(true);

    char[] chrsPasswdKprTarget = new char[0]; // no password, eg, for PKCS12

    // ---
    if (super._blnIsPasswdKprTarget_) {
      chrsPasswdKprTarget = dlgTarget.getPassword();

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

    String strAliasKprTarget = dlgTarget.getAlias();

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

    // ----
    // store privateKeySource & crtsSource associated with alias (?& password) in kstOpenTarget

    if (!UtilKstAbs.s_setKeyEntry(
        super._frmOwner_,
        kstOpenTarget,
        strAliasKprTarget,
        pkyPrivateSource,
        chrsPasswdKprTarget,
        crtsSource)) {
      MySystem.s_printOutError(this, strMethod, "failed");
      return false;
    }

    return true;
  }
  /**
   * 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;
  }
  protected boolean __doJob__(
      KeyStore kstOpen,
      String[] strsAliasPKTC,
      Boolean[] boosIsTCEntryPKTC,
      Boolean[] boosValidDatePKTC,
      Boolean[] boosSelfSignedCertPKTC,
      Boolean[] boosTrustedCertPKTC,
      String[] strsSizeKeyPublPKTC,
      String[] strsTypeCertPKTC,
      String[] strsAlgoSigCertPKTC,
      Date[] dtesLastModifiedPKTC,
      String[] strsAliasSK,
      Date[] dtesLastModifiedSK) {
    String strMethod = "__doJob__(...)";
    // ----

    // MEMO: overwriting alias-key not allowed
    // -----

    // ----
    // show dialog KeyPair new Ec
    //  . get aliasKpr
    //  . get passwdKpr

    DTblsKstViewKeySavePKNoPass dlg =
        new DTblsKstViewKeySavePKNoPass(
            (Component) super._frmOwner_,
            kstOpen,
            super._strPathAbsKst_,
            "Create EC (Elliptic Curve) private key entry");

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

    //
    if (!dlg.load(

        // below: about PKTC (Private Key & Trusted Certificate)
        strsAliasPKTC,
        boosIsTCEntryPKTC,
        boosValidDatePKTC,
        boosSelfSignedCertPKTC,
        boosTrustedCertPKTC,
        strsSizeKeyPublPKTC,
        strsTypeCertPKTC,
        strsAlgoSigCertPKTC,
        dtesLastModifiedPKTC,
        // below: about SK (Secret Key)
        strsAliasSK,
        dtesLastModifiedSK)) {
      MySystem.s_printOutExit(this, strMethod, "failed");
    }

    dlg.setVisible(true);

    // ---
    char[] chrsPasswdKpr = dlg.getPassword();

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

    String strAliasKpr = dlg.getAlias();

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

    // ----
    // create new KeyPair

    KeyPair kprNew = super._getKprNew_();

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

    // ----
    // create new certificate of type X.509
    // memo: sig algo: MD5withRSA, MD2withRSA, SHA1withRSA, (RIPEMD160withRSA: IN COMMENTS, not
    // supported by SunEcSign)
    X509Certificate crtNew = super._getX509CertNew_(kprNew);

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

    // ----
    // assign new entry to open keystore

    if (!super._assignNewEntry2OpenKeystore_(kstOpen, kprNew, crtNew, strAliasKpr, chrsPasswdKpr)) {
      MySystem.s_printOutError(this, strMethod, "failed");
      return false;
    }

    return true;
  }