Bouncy Castle поддерживает эти кривые. Фокус в том, что Java все еще должна знать о них, чтобы найти их. Таким образом, вы не можете просто добавить поставщика Bouncy Castle и сделать с ним. Вы должны явно использовать CertificateFactory
Bouncy Castle.
Если вы просто используете Java CertificateFactory
вам будет встречено со следующим исключением (что вы сейчас, вероятно, знакомы с):
Exception in thread "main" java.security.cert.CertificateParsingException: java.io.IOException: Unknown named curve: 1.3.36.3.3.2.8.1.1.7
Так использовать следующий фрагмент кода/раствор вместо:
Security.addProvider(new BouncyCastleProvider());
// explicit BC factory required, knows about curve!
CertificateFactory fact = CertificateFactory.getInstance("X509", BouncyCastleProvider.PROVIDER_NAME);
PemReader reader = new PemReader(new FileReader("ecc_certificate.txt"));
PemObject readPemObject = reader.readPemObject();
final byte[] cert = readPemObject.getContent();
Certificate generatedCertificate = fact.generateCertificate(new ByteArrayInputStream(cert));
System.out.println(generatedCertificate);
Чтобы получить имя именованной кривой, вам, однако, нужно перейти к специальному коду Bouncy Castle (т. Е. Использовать классы Bouncy напрямую, а не использовать их через JCA):
ECPublicKey publicKey = (ECPublicKey) generatedCertificate.getPublicKey();
// Bouncy Castle specific class
ECNamedCurveSpec params = (ECNamedCurveSpec) publicKey.getParams();
System.out.println(params.getName());
Почти забыл: вам нужно как провайдер Bouncy Castle , так и файл jar PKIX в вашем пути к классу, чтобы сделать это.
Загрузка неограниченных криптографических файлов для Java никогда не повредит, хотя для этой функции она, вероятно, напрямую не нужна (лучше, чем сожалеть, хотя).
Возможно ли вам отправить сертификат (используя кодировку base64 или PEM?). Возможно, я могу написать ответ, но на этом компьютере нет каких-либо сертификатов, готовых к тестированию. –
Да, это один из них. Я загрузил его здесь (http://pastebin.com/CAMPLMfx) в PEM, потому что он длинный для публикации в качестве комментария. – Opa114
OK, пришлось загрузить поставщика BC и пропустить некоторый ввод, но решение относительно просто. –