Ver Mensaje Individual
  #52  
Antiguo 18-02-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Reputación: 14
iMia Va por buen camino
Lightbulb

No, con .NET o con C# no...
Lo he hecho en JAVA.

No os puedo poner el código exacto por temas de confidencialidad del curro.... pero os puedo orientar como lo he hecho...

0º - Imports de la AEAT

Código:
  import es.mityc.facturae.utils.SignatureUtil;
  import es.mityc.facturae.utils.ValidatorUtil;
  import es.mityc.firmaJava.libreria.xades.ResultadoValidacion;
  import es.mityc.firmaJava.libreria.xades.ValidarFirmaXML;
  import es.mityc.firmaJava.libreria.xades.errores.FirmaXMLError;
luego
1º - Abrir el xml

Apertura del xml
En la página de Oracle que os he puesto... Sample 3.
Código:
  // Instanciando el documento a firmar
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  dbf.setNamespaceAware(true);
  Document doc = dbf.newDocumentBuilder().parse(new FileInputStream("..\miFacturae.xml"));
2º - Validar el xml con la Efactura

pendiente...

3º - Abrir certificado
Yo lo he hecho diferente a lo que ponía en la página de Oracle - Sample 2
Abro directamente un certificado exportado que debe estar instalado en el equipo desde el que se firma.

Código:
  FileInputStream cer = new FileInputStream("..\micertificado.cer");
  CertificateFactory cf = CertificateFactory.getInstance("X.509");
  X509Certificate certificat = (X509Certificate) cf.generateCertificate(cer);
  cer.close();
4º - Firmar
Código:
  doc = SignatureUtil.sign(doc, certificat);
WTF ... PERO QUE ... CAJONES! ¿Como? ¿¿Así de facil??.... Pues sí, es una función que está en la librería es.mityc.facturae.utils.SignatureUtil

5º - Validar firma (opcional)

pendiente...

6º - Generar salida... Sample 4 de la página de oracle que os he puesto más arriba... que no leeis!!!!
Código:
  // Crear el Stream de salida.
  OutputStream os = new FileOutputStream("..\miFacturae.xsig");
  // Instanciamos el transformador
  TransformerFactory tf = TransformerFactory.newInstance();
  // Creamos el transformador
  Transformer trans = tf.newTransformer();
  // Transformamos el documento firmado a la salida.
  trans.transform(new DOMSource(doc), new StreamResult(os));
Naturalmente, en un .java, compilado a .jar y con los .jar que se necesitan (imports)

Vaaaamos que podéis... más claro y os pongo el main y todos los imports que te pone solo el eclipse...
Responder Con Cita