2016-12-05 1 views
0

Я стараюсь использовать xades4j, но документация немного обобщена. В этот момент у меня есть базовый метод знака, но не получаю теги xml, которые мне нужны.Есть ли хороший пример для XML Sign с XADES-EPES в Java?

KeyStore ks = KeyStore.getInstance(KEYSTORE_TYPE); 

    ks.load(new FileInputStream(KEYSTORE_FILE), KEYSTORE_PASSWORD.toCharArray()); 

    PrivateKey privateKey = (PrivateKey) ks.getKey(PRIVATE_KEY_ALIAS, PRIVATE_KEY_PASSWORD.toCharArray()); 

    File signatureFile = new File("./invoice.xml"); 

    String baseURI = signatureFile.toURL().toString(); // BaseURI para las URL Relativas. 

    // Instanciamos un objeto XMLSignature desde el Document. El algoritmo de firma será DSA 
    // Signature - Required DSAwithSHA1 (DSS) 
    XMLSignature xmlSignature = new XMLSignature(document, baseURI, XMLSignature.ALGO_ID_SIGNATURE_DSA); 

    // Añadimos el nodo de la firma a la raiz antes de firmar. 
    // Observe que ambos elementos pueden ser mezclados en una forma con referencias separadas 
    document.getDocumentElement().appendChild(xmlSignature.getElement()); 

    // Creamos el objeto que mapea: Document/Reference 
    Transforms transforms = new Transforms(document); 
    transforms.addTransform(Transforms.TRANSFORM_BASE64_DECODE); // TRANSFORM_ENVELOPED_SIGNATURE 

    // Añadimos lo anterior Documento/Referencia 
    // ALGO_ID_DIGEST_SHA1 = "http://www.w3.org/2000/09/xmldsig#sha1"; 
    xmlSignature.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1); 

    // Añadimos el KeyInfo del certificado cuya clave privada usamos 
    X509Certificate cert = (X509Certificate) ks.getCertificate(PRIVATE_KEY_ALIAS); 
    xmlSignature.addKeyInfo(cert); 
    xmlSignature.addKeyInfo(cert.getPublicKey()); 

    // Realizamos la firma 
    xmlSignature.sign(privateKey); 

ответ

1

Используя xades4j, взгляните на тестовый чехол.

Начало здесь:

https://github.com/luisgoncalves/xades4j/blob/master/src/test/java/xades4j/production/SignerEPESTest.java

+0

@mposadar код, который вы показали, кажется, только с помощью Apache Santuario, который является основной библиотекой для xades4j. Общая ссылка, и https://github.com/luisgoncalves/xades4j/wiki, должна начать вас. – lgoncalves

Смежные вопросы