проверка ЭЦП в xml средствами java
(1 чел.) (1) гость
  • Страница:
  • 1
  • 2

ТЕМА: проверка ЭЦП в xml средствами java

Re: проверка ЭЦП в xml средствами java 4 года, 9 мес. назад #1246

  • ololo
  • Живу я здесь
  • Постов: 464
  • Репутация: 57
конечно нужен весь xml, иначе никак.
для работы с xml-dsig используется apache xml-security, который идет в составе sdk
примеров в интернете куча, ничего сложного
ну примерно как-то так, взято из разных кусков:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
        Document doc = documentBuilder.parse(new ByteArrayInputStream(xml.getBytes(encoding)));
        String xmlSign = signXml(doc, privateKey, cert);
String signMethod;
String digestMethod;

        if ((privateKey.getAlgorithm().toUpperCase().compareTo("ECGOST3410") == 0)
                || (privateKey.getAlgorithm().toUpperCase().compareTo("ECGOST34310") == 0)) {
            signMethod = "http://www.w3.org/2001/04/xmldsig-more#gost34310-gost34311";
            digestMethod = "http://www.w3.org/2001/04/xmldsig-more#gost34311";
        } else {
            signMethod = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha1";
            digestMethod = "http://www.w3.org/2001/04/xmldsig-more#sha1";
        }

                XMLSignature sig = new XMLSignature(doc, "", signMethod);
                String res = "";
                if (doc.getFirstChild() != null) {
                    doc.getFirstChild().appendChild(sig.getElement());
                    Transforms transforms = new Transforms(doc);
                    transforms.addTransform("http://www.w3.org/2000/09/xmldsig#enveloped-signature");
                    transforms.addTransform("http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments");
                    sig.addDocument("", transforms, digestMethod);
                    sig.addKeyInfo((X509Certificate) cert);
                    sig.sign(privateKey);
                    StringWriter os = new StringWriter();
                    TransformerFactory tf = TransformerFactory.newInstance();
                    Transformer trans = tf.newTransformer();
                    trans.transform(new DOMSource(doc), new StreamResult(os));
                    os.close();
                    res = os.toString();
           


gg wp
Спасибо сказали: c4dev
  • Страница:
  • 1
  • 2
FaLang translation system by Faboba