Замена для всего пакета защиты от солнца

Мой инструктор дал мне код, который включает это, и мне было приказано добавить rt.jar в Eclipse, в котором есть пакет sun. Целью этого кода является создание цифрового сертификата.

static public X509Certificate generateCertificate(String dn, PublicKey pubKey, int days) {
    System.out.println("Generating Certificate...");
    String algorithm = "SHA1withRSA";

    try {
        X509CertInfo info = new X509CertInfo();
          Date from = new Date();
          Date to = new Date(from.getTime() + days * 86400000l);
          CertificateValidity interval = new CertificateValidity(from, to);
          BigInteger sn = new BigInteger(64, new SecureRandom());
          X500Name owner = new X500Name(dn);
          X500Name CAName = new X500Name(CADN);

          info.set(X509CertInfo.VALIDITY, interval);
          info.set(X509CertInfo.SERIAL_NUMBER, new CertificateSerialNumber(sn));
          info.set(X509CertInfo.SUBJECT, owner);
          info.set(X509CertInfo.ISSUER, CAName);
          info.set(X509CertInfo.KEY, new CertificateX509Key(pubKey));
          info.set(X509CertInfo.VERSION, new CertificateVersion(CertificateVersion.V3));
          AlgorithmId algo = new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid);
          info.set(X509CertInfo.ALGORITHM_ID, new CertificateAlgorithmId(algo));

          // Sign the cert to identify the algorithm that's used.
          X509CertImpl cert = new X509CertImpl(info);
          cert.sign(keyCA, algorithm);

          // Update the algorithm, and resign.
          algo = (AlgorithmId)cert.get(X509CertImpl.SIG_ALG);
          info.set(CertificateAlgorithmId.NAME + "." + CertificateAlgorithmId.ALGORITHM, algo);
          cert = new X509CertImpl(info);
          cert.sign(keyCA, algorithm);
          System.out.println("Certificate Generated!");
          return cert;

    } catch(Exception e) {
        System.out.println("Exception in certificate generation.");
        System.out.println("Message: " + e.getMessage());
        e.printStackTrace();
        return null;
    }
}

Тем не менее, я задавал здесь вопрос о том, как правильно импортировать rt.jar, и пользователь посоветовал мне не использовать пакет sun из нескольких источников. Поэтому моя цель — воссоздать что-то похожее на приведенный выше код, но без какого-либо пакета sun. Я провел некоторые исследования, и тот же пользователь посоветовал использовать javax.security.cert, но могу ли я узнать, можно ли воссоздать приведенный выше код с этим пакетом? Например, я пока не нашел ничего похожего на X509CertInfo.


person thehollow    schedule 01.05.2020    source источник
comment
правильно импортировать rt.jar У меня сложилось впечатление, что rt.jar автоматически разрешается JVM, поскольку он содержит некоторые довольно важные классы, такие как Object   -  person PiRocks    schedule 01.05.2020
comment
Ах, я на самом деле получил от него rt.jar, и мне было приказано добавить это как внешний jar, если у меня нет sun, чего я не сделал...   -  person thehollow    schedule 01.05.2020
comment
О боже, это то, что я бы назвал наброском. Нет абсолютно никакой гарантии, что случайный rt.jar будет работать со случайным jvm, хотя вы, вероятно, будете в порядке, потому что большинство вещей основано на openjdk.   -  person PiRocks    schedule 01.05.2020
comment
Что касается фактического ответа на ваш вопрос, возможно, у javax.security есть то, что вам нужно: docs.oracle.com/javase/8/docs/api/javax/security/cert/   -  person PiRocks    schedule 01.05.2020
comment
Ха-ха, вот почему я хочу что-то, что не зависит от sun или этого rt.jar, по крайней мере, оно должно быть переносимым с генералами.   -  person thehollow    schedule 01.05.2020
comment
@PiRocks 10 лет назад.... Что касается выполнения этого без sun классов, я предлагаю Легион надувного замка и этот ответ. Но я уверен, что есть более чем одно решение.   -  person Elliott Frisch    schedule 01.05.2020
comment
Спасибо! Я внимательно изучу их!   -  person thehollow    schedule 01.05.2020