25.01.2006 14:00:09p7s файлы и JCP Ответов: 5
Григорий
Каким образом разобрать p7s файл в JCP? В документации про это не написано, но подозреваю что возможность есть.
 
Ответы:
25.01.2006 17:36:27Анатолий
Да можно. Провайдеру все равно как хранится подпись и данные.
Вот пример кусочка кода.
byte[] buffer = TestUtils.readTestFile("test.txt");
byte[] sig = TestUtils.readTempFile("sig.txt");
PublicKey pub = TestUtils.setUpCertificate(TestUtils.ellipticCertificate)
Signature s = Signature.getInstance(JCP.GOST_EL_SIGN_NAME, JCP.PROVIDER_NAME);
s.initVerify(pub);
s.update(buffer);
boolean verifies = s.verify(sig);
System.out.println("signature verifies: " + verifies);
25.01.2006 18:04:51Григорий
Вопрос немного в другом. В этом формате есть описание самого открытого ключа пользователя(Если я правильно понимаю). Вот хотелось бы его и вытащить для начала.
27.01.2006 11:31:53rov
sun.security.pkcs.PKCS7 вам в помощщщь

PKCS7 pkcs7 = new PKCS7(signature);
X509Certificate [] certs = pkcs7.getCertificates();
PublicKey pub = certs[0].getPublicKey();
SignerInfo [] si = pkcs7.getSignerInfos();
BigInteger bi = si[0].getCertificateSerialNumber();
byte [] s1 = si[0].getEncryptedDigest();
27.01.2006 17:37:19Григорий
Спсибо - просто у меня на подпись, сделанную криптоАрмом вылетает эксепшн.
Caused by: sun.security.pkcs.ParsingException: toDerInputStream rejects tag type -96
А с другими работает :-(
27.01.2006 17:42:46rov
ну тогда не знаю, надо внимательнее посмотреть чего там криптоарм генерит, я с этой штукой не работал, а так, санОвский класс парсит гостовый п7, проверенно..