0% encontró este documento útil (0 votos)
495 vistas2 páginas

Algoritmo Firmado para Facturación Electronica

Este documento describe cómo firmar digitalmente un documento XML en Java utilizando la biblioteca firmador-libreria. Explica cómo leer el documento XML, agregar la firma digital utilizando la clave privada, transformar el contenido mediante criptografía y agregar la información del certificado. El resultado es un documento XML firmado digitalmente.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
495 vistas2 páginas

Algoritmo Firmado para Facturación Electronica

Este documento describe cómo firmar digitalmente un documento XML en Java utilizando la biblioteca firmador-libreria. Explica cómo leer el documento XML, agregar la firma digital utilizando la clave privada, transformar el contenido mediante criptografía y agregar la información del certificado. El resultado es un documento XML firmado digitalmente.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

[Link].

bo
SISTEMA DE FACTURACIÓN
ELECTRÓNICA
1

FIRMADO DE DOCUMENTO

Ejemplo de firmado XML, basado en librería en java que implementa


funciones para la firma digital.
fuente: [Link]
digest_sha256
package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link].X509Certificate;

import [Link];
import [Link];
import [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

public class Ejemplo {


/**
* @param datos - array de bytes correspondiente al archivo XML
que se va a firmar
* @param priv - llave privada para el firmado
* @param cert - certificado emitido por la ADSIB asociado a la
llave publica
* @return array de bytes correspondiente al archivo XML con la
firma enveloped
* @throws ParserConfigurationException
* @throws IOException
* @throws SAXException
* @throws XMLSecurityException
*/
public byte[] firmarDsig(byte[] datos, PrivateKey priv,
X509Certificate... cert) throws ParserConfigurationException, IOException,
SAXException, XMLSecurityException {

[Link]([Link], “”);

LÍNEA GRATUITA DE CONSULTAS TRIBUTARIAS 800 10 34 44


[Link]

SISTEMA DE FACTURACIÓN
ELECTRÓNICA
2

Document documento = leerXML(datos);

Element root = (Element) [Link]();


[Link](false);

XMLSignature signature = new XMLSignature(documento, null,


XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256);

[Link]([Link]());

Transforms transforms = new Transforms(documento);


[Link](Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
[Link](Transforms.TRANSFORM_C14N_WITH_COMMENTS);
[Link](“”, transforms, MessageDigestAlgorithm.ALGO_
ID_DIGEST_SHA256);
if (cert != null) {
[Link](cert[0]);
KeyInfo ki = [Link]();
ki.itemX509Data(0).addSubjectName(cert[0].
getSubjectX500Principal().getName());
ki.itemX509Data(0).addIssuerSerial(cert[0].
getIssuerX500Principal().getName(), cert[0].getSerialNumber());
}
[Link](priv);

ByteArrayOutputStream baos = new ByteArrayOutputStream();


[Link](documento, baos, true);

return [Link]().getBytes();
}

private Document leerXML(byte datos[]) throws
ParserConfigurationException, IOException, SAXException {
DocumentBuilderFactory factory = DocumentBuilderFactory.
newInstance();
DocumentBuilder builder;

[Link](true);
builder = [Link]();

return [Link](new ByteArrayInputStream(datos));


}
}

[Link] La Paz 21 de noviembre del 2018

También podría gustarte