Мой инструктор дал мне код, который включает это, и мне было приказано добавить 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
.
rt.jar
У меня сложилось впечатление, чтоrt.jar
автоматически разрешается JVM, поскольку он содержит некоторые довольно важные классы, такие какObject
- person PiRocks   schedule 01.05.2020rt.jar
, и мне было приказано добавить это как внешний jar, если у меня нетsun
, чего я не сделал... - person thehollow   schedule 01.05.2020rt.jar
будет работать со случайным jvm, хотя вы, вероятно, будете в порядке, потому что большинство вещей основано на openjdk. - person PiRocks   schedule 01.05.2020javax.security
есть то, что вам нужно: docs.oracle.com/javase/8/docs/api/javax/security/cert/ - person PiRocks   schedule 01.05.2020sun
или этогоrt.jar
, по крайней мере, оно должно быть переносимым с генералами. - person thehollow   schedule 01.05.2020sun
классов, я предлагаю Легион надувного замка и этот ответ. Но я уверен, что есть более чем одно решение. - person Elliott Frisch   schedule 01.05.2020