== Notas varias de desarrollo == [https://github.com/open-eid/digidoc4j/blob/master/src/org/digidoc4j/Configuration.java Configuration.java] La configuración de digidoc4j se carga desde un archivo en formato [https://es.wikipedia.org/wiki/YAML yaml] El archivo de configuración se encuentra en: {{{./resources/digidoc4j.yaml}}} [https://github.com/open-eid/digidoc4j/blob/master/src/prototype/HowTo.java HowTo] == PDF y biblioteca iText == Un documento PDF pude contener los siguientes tipos estándar de firmas: * una o más firmas de aprobación (''approval''). * Como máximo una firma certificada. Esta firma puede definir diferentes permisos. Para definir el tipo de firma se debe establecer el nivel de certificación en la clase {{{PdfSignatureAppearance}}}. {{{ PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); ... appearance.setCertificationLevel(certificationLevel); }}} El parámetro {{{certificationLevel}}} puede tomar uno de los siguientes valores: * {{{NOT_CERTIFIED}}} para crear una firma ordinaria tipo {{{approval}}}. * {{{CERTIFIED_NO_CHANGES_ALLOWED}}} para crear una firma de certificación también conocida como firma de autor. Después de aplicar la firma no se permitirán cambios sobre el documento. * {{{CERTIFIED_FORM_FILLING}}} crea una firma de certificación para el autor del documento pero otras personas pueden todavía llenar campos formulario o agregar firmas {{{approval}}} sin invalidar la firma. * {{{CERTIFIED_FORM_FILLING_AND_ANNOTATIONS}}} crea una firma de certificación para el autor del documento pero otras personas pueden todavía llenar campos formularios o agregar firmas {{{approval}}} así como anotaciones sin invalidar la firma. == Creación de TSL == [http://www.etsi.org/deliver/etsi_ts/119600_119699/119612/01.02.01_60/ts_119612v010201p.pdf Electronic Signatures and Infrastructures (ESI) Trusted Lists] ETSI TS 119 612 V1.2.1 (2014-04) [[Image(tsl.png)]] == Error de Firefox al cargar un archivo PDF en un formulario == [https://stackoverflow.com/questions/13272523/incorrect-content-type-for-pdf-file-with-firefox] [http://kb.mozillazine.org/MimeTypes.rdf] [http://www.fvue.nl/wiki/Wrong_mime-type_when_uploading_pdf] Editar el archivo {{{/home/usuario/.mozilla/firefox/xxx.default/mimeTypes.rdf}}} en la sección del mimetype PDF para que quede como se muestra a continuación: {{{ }}} == Firma de BDOC con SHA-256 == Se debe agregar al archivo {{{/usr/java/jdk1.7.0_21/jre/lib/security/java.security}}} una entrada para BouncyCastle (ver {{{security.provider.2}}}): {{{ security.provider.1=sun.security.provider.Sun security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider security.provider.3=sun.security.rsa.SunRsaSign security.provider.4=sun.security.ec.SunEC security.provider.5=com.sun.net.ssl.internal.ssl.Provider security.provider.6=com.sun.crypto.provider.SunJCE security.provider.7=sun.security.jgss.SunProvider security.provider.8=com.sun.security.sasl.Provider security.provider.9=org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.10=sun.security.smartcardio.SunPCSC }}} == Recursos == {{{/bdocs}}}: ejecuta el proceso de presign de contenedor BDOC. {{{/bdocs/resenas}}}: ejecuta el proceso de postsign de contenedor BDOC. {{{/bdocs/cargas}}}: crea un contenedor BDOC con los archivos subidos del formulario, lo serializa y retorna el identificados unico del contenedor. {{{/bdocs/cargas/{containerId} }}}: recibe los archivos enviador a través del formulario, deserializa el contenedor identificado con containerId, agrega los archivos al contenedor, serializa de nuevo el contenedor y retorna el identificador del contendor. {{{/bdocs/archivos/{containerId} }}}: retorna el numero de dataFiles que se encuentran en un contenedor. {{{/bdocs/archivos/{containerId}/{dataFileId} }}}: Descarga el archivo dataFileId que se encuentra dentro del contenedor containerId BDOC. {{{/bdocs/archivos/lista/{containerId} }}}: retorna información de los dataFile que se encuentran dentro del contenedor containerId BDOC. Esta información incluye el nombre del archivo, el tamaño y el tipo mime. {{{/bdocs/firmas/{containerId} }}}: retorna el numero de firmas que tiene el contenedor. {{{/bdocs/firmas/pre }}}: calcula el hash de un contenedor existente y lo retorna al cliente; el contenedor se serializa en el servidor para luego completar la firma. {{{/bdocs/firmas/post }}}: inserta el hash cifrado en el cliente al contenedor para completar el proceso de firma del contenedor. Se almacena el contenedor firmado y se retorna al cliente el identificador del archivo para su posterior descarga.