Статус: Новичок
Группы: Участники
Зарегистрирован: 07.05.2014(UTC) Сообщений: 2 Откуда: Самара
|
Здравствуйте! Интересует как в Java подписать и верифицировать при помощи CryptoPro массив байт. У меня был опыт использования openSSL: Код:
public static PrivateKey getPrivateKey(String privateKeyPath) throws FileNotFoundException, IOException, NoSuchAlgorithmException {
//String keyPath = "/home/me/Documents/ИЭМК/x509_OpenSSL_13.01.2014/key.pem";
BufferedReader br = new BufferedReader(new FileReader(privateKeyPath));
Security.addProvider(new BouncyCastleProvider());
KeyPair kp = (KeyPair) new PEMReader(br, new PasswordFinder() {
@Override
public char[] getPassword() {
return "password".toCharArray();
}
}).readObject();
PrivateKey aPrivate = kp.getPrivate();
//samlResponse.sign(Signature.getInstance("SHA1withRSA").toString(), kp.getPrivate(), certs);
return aPrivate;
}
public static byte[] sign2(byte[] text, String privateKeyPath) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, FileNotFoundException, IOException {
PrivateKey privateKey = getPrivateKey(privateKeyPath);
// Compute signature
Signature instance = Signature.getInstance("SHA1withRSA");
instance.initSign(privateKey);
instance.update(text);
byte[] signature = instance.sign();
//verify(text, signature, "/home/me/SVN/branches/Nikita/HL7CDA/7.3.1/SocketDebug/z2/selfsigned.crt");
return signature;
}
Тестовый код верификации: Код:
try {
final CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
final Collection<? extends Certificate> certs =
(Collection<? extends Certificate>) certFactory.generateCertificates(new FileInputStream(new File(certPath)));
Iterator<? extends Certificate> certIterator = certs.iterator();
while (certIterator.hasNext()) {
Certificate cert = certIterator.next();
System.out.println("Certificate information:");
System.out.println(cert.toString());
System.out.println("------------------------");
Signature signature = Signature.getInstance("SHA1withRSA");
signature.initVerify(cert);
signature.update(message);
boolean verify = signature.verify(sign);
if (verify) {
System.out.println("Verify status: Success");
System.out.println();
} else {
System.out.println("Verify status: Failed");
System.out.println();
}
}
} catch (Exception e) {
e.printStackTrace();
}
Как сделать это при помощи CryptoPro? Что для этого нужно? Какие нужны jar-библиотеки? Что нужно установить? Наверное нужен криптопровайдер и usb-ключ? Есть ли пример кода? Есть ли документация? Что можно скачать?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,001 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 713 раз в 673 постах
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.01.2013(UTC) Сообщений: 33 Сказал(а) «Спасибо»: 15 раз
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.05.2014(UTC) Сообщений: 2 Откуда: Самара
|
Здравствуйте! Как я понял, для наших нужд требуется JCP. Он у вас продаётся отдельно и стоит 650 руб за одну лицензию. У наших заказчиков просто уже куплен CSP. Рабочих мест много и им бы не очень хотелось докупать ещё и JCP. Кроме того, оказалось, что кто-то у нас писал какую-то DLL'ку, которая через winapi производит все необходимые манипуляции (подпись, проверка подписи, шифрование, выдача списка отозванных сертификатов и т.д.). Мы решили просто прикрутить эту dll'ку к Java-клиенту, правда работать такой вариант будет только под виндавозиной.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,001 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 713 раз в 673 постах
|
Здравствуйте. Попробуйте провайдер JCSP.jar в последнем дистрибутиве, он использует CryptoAPI (cspjni). Там же есть документация на него. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close