| ||||
| ||||
Каким образом разобрать p7s файл в JCP? В документации про это не написано, но подозреваю что возможность есть. | ||||
Ответы: | ||||
| ||||
Да можно. Провайдеру все равно как хранится подпись и данные. Вот пример кусочка кода. 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); | ||||
| ||||
Вопрос немного в другом. В этом формате есть описание самого открытого ключа пользователя(Если я правильно понимаю). Вот хотелось бы его и вытащить для начала. | ||||
| ||||
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(); | ||||
| ||||
Спсибо - просто у меня на подпись, сделанную криптоАрмом вылетает эксепшн. Caused by: sun.security.pkcs.ParsingException: toDerInputStream rejects tag type -96 А с другими работает :-( | ||||
| ||||
ну тогда не знаю, надо внимательнее посмотреть чего там криптоарм генерит, я с этой штукой не работал, а так, санОвский класс парсит гостовый п7, проверенно.. | ||||