Applet de firma y cifrado de Izenpe



Documentos relacionados
1 DESCRIPCIÓN DEL DESARROLLO Componentes desarrollados Licencia de las librerías utilizadas Funcionalidad principal...

DESCRIPCIÓN DEL DESARROLLO... 3

DESCRIPCIÓN DEL DESARROLLO... 4

SPRI FIRMA ELECTRONICA DE DOCUMENTOS

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

Requisitos Técnicos y de Configuración Sistema de Notificación Electrónica

PRIMEROS PASOS EN DELTA

Requisitos técnicos para acceder a los servicios con certificado Versión Optimizada Windows

FOROS. Manual de Usuario

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Documento para la revisión de la configuración del ordenador para el uso del servicio electrónico de instalaciones de baja tensión

Servicio de Notificaciones Electrónicas y Dirección Electrónica Habilitada

Notas para la instalación de un lector de tarjetas inteligentes.

Acronis License Server. Guía del usuario

LX8_022 Requisitos técnicos de. instalación para el usuario

DEV SISTEMA DE NOTIFICACIONES ELECTRÓNICAS VIALES ADMINISTRATIVAS DIRECCIÓN ELECTRÓNICA VIAL

GUÍA DE CONFIGURACIÓN PC PARA HACER USO DE LA SEDE ELECTRÓNICA DEL CABILDO DE GRAN CANARIA

REQUISITOS PARA EL USO DEL REGISTRO ELECTRÓNICO

Software Criptográfico FNMT-RCM

Manual de usuario de IBAI BackupRemoto

Portal Del Emisor MANUAL DEL USUARIO. Plataforma de Facturación Electrónica

Requisitos mínimos. ANEXO I: Certificado digital

comunicaciones IP al servicio de su empresa configuración de clientes de correo para Hosted Exchange

Ayuda Aplicación SIGI

Certificados Digitales Tributarios. Guía de Instalación En Estaciones de Trabajo Microsoft Internet Explorer Versión 1.3s

Manual de configuración de Adobe Reader para la validación de la firma de un documento.

Matriz de compatibilidad de applet 3.4

Instalable módulo criptográfico Ceres. Manual de usuario

Sede electrónica. Requisitos para la firma electrónica en este Ministerio

Oasis es una fábrica para el bien común de los datos mediante la utilización de aplicaciones propuestas.

Manual Instrucciones Firma Digital

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Instalación de certificados digitales

Escudo Movistar Guía Rápida de Instalación Para Windows

MANUAL DE INSTALACIÓN DEL COMPONENTE WEBSIGNER JAVA. Versión 4.0

Sede electrónica DGT. Requisitos técnicos equipos informáticos de los ciudadanos para el uso del cliente de firma

COMPROBACIONES BÁSICAS PARA EL USO DE FIRMA EN EL RTC

Guía de resolución de problemas de firma con certificado en la Sede Electrónica del CIEMAT

AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL DE MEDICAMENTOS DE USO HUMANO GUÍA PARA LA SOLICITUD DE UNA AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL

Versión:v01r06 Fecha: 07/11/2013. Matriz de compatibilidad del cliente 3.3.1

Manual de configuración de Google Chrome

Matriz de compatibilidad del cliente de firma Versión:v02r00 Fecha: 09/04/2012

Carpeta Virtual de Expedientes

Almacenamiento de CFD de Proveedores

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

Instalación Componente Cliente

Guía Rápida de Inicio

SITRÁN ARAGÓN TRÁMITES Y SERVICIOS EN LÍNEA (WEB GANADEROS) CONFIGURACIÓN

Manual de Usuario de la Herramienta SICRES-Tester. SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 08/04/2014

GUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS

Uso de la Firma Electrónica. en la. Universidad de Granada

GUÍA DE USO E INSTALACIÓN DE CERTIFICADOS DIGITALES EN EL SISTEMA DE BONIFICACIONES 2009

Instrucciones de instalación de IBM SPSS Modeler (licencia de usuario autorizado)

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO

Sede electrónica. Requisitos para la firma electrónica en este Ministerio

Instalación de Microsoft Office Versión 2.1. Instalación de Microsoft Office 12 septiembre

Electrónica: Configuración en Mozilla Firefox

REQUISITOS PARA EL USO DEL REGISTRO ELECTRÓNICO

Instalación del Admin CFDI

Servicio de VPN de la Universidad de Salamanca

REQUISITOS PARA LA IDENTIFICACIÓN CON CERTIFICADO DIGITAL

Procedimiento para realizar la configuración de Internet Explorer y usar el Sistema de reservaciones Go! Res versión 4.x

Manual de usuario servidor de archivos para El Colegio de la Frontera Sur

PRIMEROS PASOS EN LA APLICACIÓN REA

Acronis Backup & Recovery 10 Advanced Editions. Guía rápida de inicio

RESOLUCIÓN DE INCIDENCIAS PROCURADORES

Manual Instalación de certificados digitales en Outlook 2000

Comisión Nacional de Bancos y Seguros

Acronis Backup & Recovery 11 Guía de inicio rápido

MANUAL DE USUARIO. Versión: 3.5

Móvil Seguro. Guía de Usuario Terminales Android

MANUAL DE CONFIGURACIÓN JAVA Y NAVEGADORES PARA USO DE APLICACIONES CON FIRMA. Versión 1.0

10. El entorno de publicación web (Publiweb)

Oficina virtual IFAPA. Preguntas y respuestas frecuentes /Presenta-PCT

Manual de usuario administrador. Correo Exchange Administrado

Control de accesos autónomo por huella dactilar

GUÍA DE COMUNICACIÓN DE PROBLEMAS DE SUMINISTRO DE MEDICAMENTOS DE USO HUMANO

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

MANUAL PARA CONFIGURACIÓN DEL COMPUTADOR DE LOS USUARIOS PARA EL USO DEL SISDON

Instructivo - Instalación y Uso de PDF Creator

Oficina virtual IFAPA. Preguntas y respuestas frecuentes /VEA

MANUAL DE AYUDA MÓDULOS 2011 MACOS

firma digital Cómo se obtiene Agregar Certificado Digital a Firefox Agregar Certificado Digital a Internet Explorer Firmar otros documentos

DIRECCIÓN DE SISTEMAS DE INFORMACIÓN DEPARTAMENTO CERES

INFORMACIÓN ACCESOS AL PORTAL PARA EMPLEADOS DE LA DIPUTACIÓN DE SEVILLA INDICE

6. Aplicaciones Facturación electrónica Contratos Módulos adicionales... 13

Instalación Componente Cliente

Matriz de compatibilidad de applet 3.4

Procedimiento de arranque de Aula Virtual Santillana: alumnos

Guía de acceso a Meff por Terminal Server

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

SUBDIRECCIÓN GENERAL DE TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIONES

Procedimiento de instalación de Aula Virtual Santillana en Windows: Alumnos

DIRECCIÓN DE SISTEMAS DE INFORMACIÓN DEPARTAMENTO CERES

Instrucciones de instalación de IBM SPSS Modeler Server 16 para Windows

MANUAL DE INSTALACIÓN DEL LECTOR DE TARJETAS (CRÉDITO O DÉBITO) DE LA PASARELA DE PAGOS DE LA ADMINISTRACIÓN PÚBLICA VASCA

MANUAL DE INSTLACION ETOKEN PARA WINDOWS DESDE LA WEB. Gerente General Gerente General Gerente General

Ayuda Aplicación Oposición de Inspectores

Transcripción:

Applet de firma y cifrado de Izenpe

TABLA DE CONTENIDOS DESCRIPCIÓN DEL DESARROLLO... 3 1.1 Componentes desarrollados... 3 1.2 Licencia de las librerías utilizadas... 3 1.3 Funcionalidad principal... 4 1.4 Requisitos de la instalación... 7 API FIRMA LOCAL... 8 1.5 Métodos comunes de API ID@ZKI... 9 1.6 Uso desde una página web (Applet)... 27 1.7 Uso desde una aplicación Windows mediante DLL (dllwrapper)... 30 1.8 Uso desde una aplicación en entorno Windows mediante SOAP... 32 EJEMPLOS DE LA API... 34 1.9 Applet/JavaScript... 34 1.10 DLL (en C++, mediante DLLWrapper)... 38 APLICACIÓN DE ESCRITORIO... 40 1.11 Instalación / desinstalación... 40 1.12 Procedimiento de registro de la aplicación... 44 1.13 Uso de la aplicación... 47 1.14 Aspectos técnicos... 54 CONTROL DE CAMBIOS... 55

Descripción del desarrollo 1.1 Componentes desarrollados Applet: Es una aplicación Java en forma applet para poder ser integrada dentro de un navegador con funcionalidad de firma electrónica, cifrado y obtención del código TIES. Se detalla esta funcionalidad en el capítulo 2. Aplicación de Firma escritorio con instalables: Este componente será una aplicación Java que permitirá realizar operaciones básicas de firma electrónica sin necesidad de un navegador. Se detalla esta funcionalidad en el capítulo 3. La aplicación de firma de escritorio viene con un instalable para Windows, Linux y OSX. WebService/SOAP, con acceso mediante una DLL especifica: Es el conjunto de un servidor de aplicaciones AXIS2 que proporciona servicios de firma local, accesible desde una DLL. El servidor puede ser arrancado manualmente o bien mediante la DLL. Solo para sistemas Windows. Juegos de pruebas: Existen juegos de pruebas para comprobar la validez del desarrollo. Existen 2 tipos de juegos de pruebas o Pruebas de validación de firmas generadas (contra Z@IN) o Pruebas de compatibilidad con los sistemas operativos Documentación: Esta documentación 1.2 Licencia de las librerías utilizadas Las librerías y licencias utilizadas son: itext: MPL y LPGL Bouncycastle: MIT X11 License Apache XMLSEC: Apache License Apache Xalan: Apache License Apache Xerces: Apache License

1.3 Funcionalidad principal 1.3.1 Sistemas operativos / navegadores soportados en el Applet y la aplicación de escritorio Se consideran soportadas las siguientes combinaciones de navegadores/sistemas operativos: IE6 IE7 IE8/9 FF3+ SAF W2000 CSTORE WXP CSTORE CSTORE CSTORE CSTORE WV32 CSTORE CSTORE CSTORE WV64 CSTORE CSTORE W7 CSTORE CSTORE UBU804 P11/P12 OSUSE10 P11/P12 FEDCOR9 P11/P12 FEDCOR11 P11/P12 OSX106INT OSX105INT OSX104INT P11/P12 P11/P12 P11/P12 IE6 = Internet Explorer 6 / IE7 = Internet Explorer 7 / IE8/9 = Internet Explorer 8 y 9 / FF3+ = Firefox 3 o superiores SAF=Safari 4 / W2000 = Windows 2000 / WXP = Windows XP / WV32 = Windows Vista 32 / WV64 = Windows Vista 64 bits / W7 = Windows 7 /UBU804 = Ubuntu 8.04 LTS / OSUSE10 = OpenSuse 10 / FEDCOR9 = Fedora Core 9 / / FEDCOR9 = Fedora Core 11 / OSX106INT = OS X 10.6 Intel / OSX105INT = OS X 10.5 Intel / OSX104INT = OSX 10.4 Intel / P11 = soporte para PKCS#11 / P12 = soporte para PKCS#12 / CSTORE = soporte para el amacen criptografico de windows/

1.3.2 Primitivas criptográficas implementadas Firma electrónica con los siguientes formatos: o XMLDSig/XAdES (BES, EPES, T, C 1, XL) enveloping/enveloped/detached. Soporte multifirma en paralelo (para firmas enveloping) y contrafirma (para firmas enveloped) 2. o CMS/CAdES (BES, EPES, T, C) attached/detached. Soporte multifirma en paralelo y contrafirma (no está soportado contrafirmas en multifirma en paralelo) en attached. Multifirma CMS dettached. o XMLDSig enveloping/enveloped/detached. Soporte multifirma. o PDF 3 (con y sin sello de tiempo) Verificación de firma para formato CMS attached y dettached. Soporte para PKCS#11, PKCS#12 y almacén criptográfico de Windows. Calculo de resumen SHA-1 y SHA-256 Validación de certificados contra el OCSP de IZENPE 4. Sellado de tiempo contra la TSA de IZENPE. Cifrado/Descifrado 3DES-CBC con contraseña Búsqueda de certificados en los almacenes criptográficos. 1 2 3 4 Para XAdES-C y CAdES-C solo se añadirá la respuesta OCSP de Izenpe. Antes de añadir la firma a un documento se comprobará la validez criptográfica de las firmas existentes. No se soportan PDFs protegidos, ni PDF con formularios XFA Siempre que se proceda a firmar, antes se comprobará que el certificado no esté revocado ni suspendido.

1.3.3 Formatos de firma soportados En la siguiente tabla se muestra la relación de firmas soportadas para cada una de las versiones del applet. XAdES-BES XAdES-EPES XAdES-T XAdES-C XAdES-X XAdES-XL XAdES-A Versión del applet 1.0 1.0.1 1.1 1.2 1.3 1.3.1 1.4 1.4.1 1.4.8 1.5.1 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 XAdES-Enveloped XAdES-Enveloping XAdES-Detached CAdES-BES CAdES-EPES CAdES-T CAdES-C CAdES-X CAdES-XL

1.3.4 Dispositivos soportados Windows Tarjeta Tipo Observaciones CAPI CAPI Por defecto se utliza este sistema, de modo que se soportan todas las tarjetas que se integren con CAPI. Dnie pkcs11 Ruta: c:\\windows\\system32\\usrpkcs11.dll;" Izenpe pkcs11 Ruta: c:\\windows\\system32\\aetpkss1.dll Izenpe pkcs11 Ruta: c:\\windows\\system32\\bit4ipki.dll Linux Tarjeta Tipo Observaciones DNIe (driver de izenpe) pkcs11 Rutas: "/usr/lib/dniepkcs11.so" "/usr/lib64/dniepkcs11.so" Izenpe pkcs11 Rutas: /usr/lib/libbit4ipki.so /usr/lib64/libbit4ipki.so" Opensc pkcs11 Ruta: /usr/lib/opensc-pkcs11.so; Mac Tarjeta Tipo Observaciones Izenpe pkcs11 Ruta: /System/Library/Izenpe/pkcs11/libbit4ipki.dylib Opensc pkcs11 Ruta; /Library/OpenSC/lib/opensc-pkcs11.so"

Requisitos de la instalación 1.3.5 Applet/Aplicación de escritorio Java SUN 1.6 Instalado (1.5 en caso de OSX) JCE Unlimited Strength Jurisdiction Policy Files instalado. Dispositivos criptográficos instalados en el caso que se quieran utilizar. Acceso a las URLs de TSA y OCSP de Izenpe. Memoria suficiente establecida en el panel de control del plugin de Java (parámetro de configuración -Xmx1024m) 5. 1.3.6 WS de firma con soporte para DLL No es necesario ningún requisito ya que el servidor viene con una versión de java propia. 5 En el caso de Fedora es un ejecutable llamado ControlPanel dentro de de la carpeta bin de $JAVA_HOME.

API firma local Para que las aplicaciones puedan integrar correctamente en sus procesos la firma electrónica, ID@ZKI proporciona una API común para diferentes tecnologías. Gracias a esto, es posible unificar funcionalidades. Actualmente ID@ZKI proporciona tres maneras de acceder a los servicios de firma local El las aplicaciones WEB mediante un applet, llamado desde javascript En aplicaciones genéricas Windows, mediante una DLL En aplicaciones genéricas Windows, mediante un servidor SOAP Para poder realizar estas operaciones se ha utilizado la siguiente arquitectura: WINAPPS DLL Navegador WEBAPPS Applet (IZENPELIB) JAVA 1.6 SO SOAP de FIRMA LOCAL (https://127.0.1.18080) + IZENPELIB AXIS2 Servidor WS JAVA 1.6 específico Los componentes que aparecen en el esquema son: WEBAPPS: Aplicaciones WEB. En la parte cliente (javascript) llaman a las funciones del applet. Navegador: Internet Explorer, Firefox o Safari, cargan el applet mediante HTML.

Java 1.6 SO: El Java instalado en el sistema operativo. Applet: En un archivo.jar que contiene las funciones que pueden ser llamadas desde javascript. Este jar contiene las librerías Izenpelib. WINAPPS: Son aplicaciones Windows que usan el servidor de firma local. Pueden utilizar directamente llamadas SOAP o bien hacerlo mediante una DLL. SOAP de FIRMA LOCAL: Es el servicio que está disponible para realizar las operaciones de firma local mediante el protocolo SOAP. Utiliza la librería IzepeLib. AXIS2: Es el servidor de aplicaciones que ofrece la capacidad de manejar WS SOAP. Java 1.6 Específico: La distribución de los servicios de firma en local llevan incluida una versión propia de java para poder instalar los servicios en entornos heterogéneos. 1.4 Métodos comunes de API ID@ZKI 1.4.1 getlasterror Permite recuperar el último error ocurrido. FORMATO DE LA LLAMADA CadenaTexto getlasterror() RETORNO El nemónico del último error ocurrido Nemónico de error ERR_INCORRECTPPASSWORD PIN incorrecto. Al de tres intentos consecutivos la tarjeta se bloqueará. ERR_PIN_LOCKED La tarjeta se encuentra bloqueada. ERR_BADPASSWORDORCORRUPTFILE La contraseña es incorrecta o el archivo está corrupto ERR_CANNOTOPENFILE_FILENAME No se pudo abrir un archivo ERR_CANCELEDBYUSER El usuario canceló la operación ERR_CANNOTUSEPKCS12_FILENAME No se pudo abrir un PKCS#12 ERR_CANNOTUSEPKCS11_FILENAME No se pudo usar un PKCS#11 ERR_CANNOTUSESYSTEMCRYPTOSTORE No se pudo usar el almacén criptográfico de Windows. ERR_INVALIDPARAMETERS_PARAMETERS Se pasaron parámetros inválidos a una llamada. ERR_INVALIDADESLEVEL_PARAMETERS Se especificó mal un nivel de AdES ERR_INVALIDSIGNATUREOPERATION_PARAMETERS Se pasaron parámetros inválidos a una llamada de firma. ERR_CANNOTCREATESIGNATURE No se pudo crear la firma.

ERR_CANNOTCIPHERDOCUMENT ERR_CANNOTDECIPHERDOCUMENT ERR_NOCERTIFICATESFORSIGN ERR_SHOULDINSTALLJREPOLICYFILES ERR_PASSWORDSDOESNOTMATCH ERR_BROWSERNOTFOUNDGOTOPAGE_URL ERR_BADPASSWORDORCORRUPTFILE ERR_CANNOTRETRIEVETIESPUBLIC ERR_INTERNALERROR ERR_SELECTEDCERTIFICATEISREVOKED ERR_CANNOTCREATETIMETSAMP ERR_CANNOTSIGNPROTECTEDPDF ERR_CANNOTLOADCONFIG ERR_CANNOTFINDTIESCARD ERR_INVALIDVERIFYOPERATION_PARAMETERS ERR_CANNOTVERIFYDOCUMENT ERR_NOFILESSELECTED ERR_INVALIDVERIFYOPERATION_PARAMETERS No se pudo cifrar un documento. No se pudo descifrar un documento. No se encontraron certificados para firmar. No están instaladas las Sun JCE. La comprobación de contraseña falló. No se pudo abrir un navegador web. No se pudo descifrar un archivo porque la contraseña era incorrecta o el archivo estaba corrompido. No se pudo recuperar el código TIES Ocurrió un error interno. El certificado seleccionado está revocado. No se pudo crear un sello de tiempo. No se puede firmar un PDF protegido. No se pudo leer la configuración. No se pudo recuperar el código TIES Parámetros inválidos para la operación de verificación de firma No se pudo verificar la firma de un documento No se seleccionaron archivos. Error en los parámetros de llamada de verificación de firma. 1.4.2 setoption Establece una opción genérica del comportamiento del applet FORMATO DE LA LLAMADA setoption(cadenatexto key, CadenaTexto value) PARAMETROS key: Clave value: Valor Las diferentes opciones que permite son: Clave crypto-winusepkcs11 crypto-pkcs11libs Funcionalidad Especifica si Windows debe probar primero usar PKCS#11 en lugar del CSP de Windows. Especifica la lista de librerías PKCS#11, separadas por punto y coma, que se intentan cargar. La lista por defecto es: aetpkss1.dll;usrpkcs11.dll;/usr/lib/opensc-pkcs11.so

timestamp-url timestamp-policyoid timestamp-hashalgo signature-hashalgo signature-signerrole ades-add-policy 6 URL del servidor de timestamp OID de política requerida del servidor de timestamp Algoritmo de hash del sello de tiempo (SHA-1 o SHA-256) Applet de firma Rol del firmante en firmas CAdES/XAdES 1 si hay que añadir la política a firmas de tipo CAdES/XAdES. xades-signature-policy-id-identifier Identificador de política XAdES xades-signature-policy-id-description Descripción de la política XAdES xades-signature-policy-hash Hash de la política para firmas XAdES xades-signature-policy-hashalgo Algoritmo de hash de política para firmas XAdES xades-signature-policy-qualifier-url URL de la política EPES para firmas XAdES xades-node-to-sign-name Id del nodo a firmar. Únicamente válido para las firmas xades-node-to-sign-root enveloping. Para las firmas enveloped hay un método especifico con el mismo propósito (signxadesenvelopedselectnode). true para firmar el propio nodo raíz del documento en las firmas enveloping, de lo contrario se firma un nodo contenedor (ds:object). Para utilizar esta opción es necesario que el nodo raíz del documento contenga un atributo Id. Si se utiliza la propiedad xades-node-tosign-name esta propiedad no se tiene en cuenta. Únicamente válido para las firmas enveloping. El valor por defecto de esta propiedad es false. cades-signature-policy-oid OID de política para firmas CAdES cades-signature-policy-hash Hash de la política EPES para firmas CAdES cades-signature-policy-hashalgo Algoritmo de hash de política para firmas CAdES pdf-signature-llx Posición X 0 de visualización de firma en PDF pdf-signature-lly Posición Y 0 de visualización de firma en PDF pdf-signature-urx Posición X 1 de visualización de firma en PDF pdf-signature-ury Posición Y 1 de visualización de firma en PDF pdf-signature-page Página de la firma PDF,... -2=Antepenúltima - pdf-signature-reason pdf-signature-location pdf-signature-image va-universal-ocsp-url lang dlgcertsel-certfilter 1=Penúltima, 0=Última, 1=Primera, 2= Segunda Razón de la firma PDF Lugar de la firma Si está definido, especifica la imagen grafica para la firma en formatos PDF. Se puede especificar la ubicación de un archivo (p.e. c:/temp/firma.gif) o bien una URL (http:// o https:// ) URL del validador OCSP para todos los tipos de certificados Idioma ( 0 para castellano 1 para euskara) Especifica el filtro para la lista de certificados que se podrán seleccionar desde el cuadro de dialogo de selección de certificados. Puede especificarse mediante la lista de 6 Si esta opción está a 1 debe podrán los parámetros xades-signature* para tipos XAdES o cadessignature* para tipos CAdES. En ambas firmas, Izenpe asignará unos valores por defecto.

dlgcertsel-selectfirst dlgcertsel-checkocsp dlgcertsel-enableocsp dlgsign-show proxy signature-dettached-ref-uri signature-dettached-ref-type hash-canonizexmlwithcomments políticas admitidas mediante la cadena policy=oid,oid, 7 o bien los certificados en concreto mediante su fingerprint sha-1 mediante la cadena sha1thumb=thumb1,thumb2, 8 Si está a 1, en el caso que solo haya un certificado para firmar lo seleccionará automáticamente sin mostrar la ventana de selección de certificado. Omite la advertencia de imposibilidad de comprobación del estado de revocación del certificado seleccionado para el proceso de firma. Permite deshabilitar la comprobación del estado de revocación del certificado firmante. Si está a 0 no se realiza la llamada OCSP, mientras que a 1 (valor por defecto) sí se realiza. Si no está a 1 no muestra información sobre ni el certificado ni los elementos a firmar. Especifica si se desea usar proxy. Especifique <server>:<port> o si <server>:<port>:<usr>:<passwd> desea usar autenticación. Una cadena vacía específica que no se desea utilizar proxy. Especifica la URI del documento a firmar en las firmas xades dettached. Especifica el tipo de documento a firmar en las firmas xades dettached. Funciona igual que el parámetro signaturecanonizexmlwithcomments pero en este caso hace referencia al método de canonización utilizado en el calculo del hash externo en las firmas xades dettached. 1.4.3 getoption Permite recuperar el valor de una opción genérica FORMATO DE LA LLAMADA CadenaTexto getoption(cadenatexto key) PARAMETROS 7 8 p.e. policy=1.3.6.1.4.1.14777.104.3, 1.3.6.1.4.1.14777.104.4 p.e. sha1thumb=782f84c6270ab21166c3d797140d495b7245f0a8

key: Clave (los mismos que los definidos en setoption) RETORNO El texto del valor 1.4.4 getfileinfo Recupera información acerca de un archivo. FORMATO DE LA LLAMADA CadenaTexto getfileinfo(cadenatexto filename, CadenaTexto what) PARAMETROS filename: Nombre del archivo sobre el cual recuperar información what: tipo de información que se desea recuperar. La única opción permitida és size. RETORNO Parametro what what Retorno Tamaño del archivo. -1 si no existe EJEMPLO Para obtener el tamaño del archivo c:/foo.txt en pantalla: applet.getfileinfo( c:/foo.txt, size ); 1.4.5 setcryptostoreauto Establece la siguiente lógica en la selección de certificados:

En sistemas Windows 1. Si está definido el parámetro crypto-winusepkcs11 intenta leer en todos los dispositivos criptográficos que tienen interfaz PKCS#11 2. Busca los certificados instalados en el almacén criptográfico de Windows En sistemas no-windows 1. Intenta leer en todos los dispositivos criptográficos que tienen interfaz PKCS#11 2. Pregunta por si se desea utilizar un archivo de claves PKCS#12 Muestra la lista de certificados encontrados al usuario para su selección Nota: consulte los parámetros dlgcertsel* en setoption() para personalizar el comportamiento del cuadro de dialogo. FORMATO DE LA LLAMADA Booleano setcryptostoreauto() RETORNO Cierto si la llamada es satisfactoria 1.4.6 addinput Añade una un componente firmar, verificar firmas attached, cifrar o calcular el hash. FORMATO DE LA LLAMADA Booleano addinput(cadenatexto intype, CadenaTexto in, CadenaTexto outtype, CadenaTexto out) PARAMETROS intype: tipo de entrada in: entrada outtype: tipo de salida out: salida Los tipos aceptados de entrada (intype) son los siguientes:

Tipo file folder inline-hash inline-binary inline-text El parámetro in debe contener el nombre de un archivo El parámetro in debe contener el nombre de un directorio El parámetro in debe contener la codificación en base64 de un hash El parámetro in debe contener la codificación en base64 de un contenido binario El parámetro in debe contener un contenido de texto Los tipos aceptados de salida (outtype) son los siguientes: Tipo file folder inline El parámetro out debe contener el nombre de un archivo El parámetro out debe contener el nombre de un directorio El resultado de la operación será accesible con getoutputcontent() RETORNO Cierto si la llamada es satisfactoria EJEMPLOS Para seleccionar como entrada un archivo y salida un archivo addinput( file,"document.pdf", file, newdoc.pdf ); Para seleccionar como entrada un directorio y salida un directorio addinput( folder,"in", folder, out ); Para seleccionar como entrada un hash y salida un archivo addinput( hash,"ue+atxbnj4 ", file, detached.xades ); Para seleccionar como entrada un texto y salida mediante llamadas al applet

addinput( inline-text,"helloworld!", inline,null); 1.4.7 addinputwithattachement Añade una un componente para verificar firmas dettached. FORMATO DE LA LLAMADA Booleano addinput(cadenatexto intype, String in, String inattachmenttype, String inattachement, String outtype, String out, String reserved) PARAMETROS intype: tipo de entrada in: entrada inattachmenttype: tipo de contenido attached inattachement: entrada del contenido dettached outtype: debe ser obligatoriamente none out: parámetro reservado reserved: parámetro reservado Los tipos aceptados de entrada (intype) son los siguientes: Tipo file inline-binary inline-text El parámetro in debe contener el nombre de un archivo El parámetro in debe contener la codificación en base64 de un contenido binario El parámetro in debe contener un contenido de texto Los tipos aceptados de entrada de conenido dettached (inattachmenttype) son los siguientes: Tipo

file inline-binary inline-text El parámetro in debe contener el nombre de un archivo El parámetro in debe contener la codificación en base64 de un contenido binario El parámetro in debe contener un contenido de texto 1.4.8 clearinputs Elimina todas las entradas especificadas mediante addinput( ) FORMATO DE LA LLAMADA clearinputs() 1.4.9 getoutputcount El número de entradas recuperables mediante el método getoutputcontent( ) FORMATO DE LA LLAMADA Entero getoutputcount() RETORNO El número de entradas 1.4.10 getoutputcontent Recupera el contenido de una operación, cuya entrada ha sido especificada mediante un outtype de tipo inline. FORMATO DE LA LLAMADA CadenaTexto getoutputcontent(entero index, Booleano isbinary) PARAMETROS index: el índice del elemento que se quiere recuperar isbinary: indica si se quiere recuperar el contenido en base64 RETORNO

El resultado de la operación 1.4.11 getoutputreferencefile Recupera el documento original sobre el cual se ha realizado una operación. FORMATO DE LA LLAMADA CadenaTexto getoutputreferencefile (Entero index) PARAMETROS index: el índice del elemento que se quiere recuperar RETORNO 1.4.12 sign El nombre del archivo Aplica la firma electrónica a los elementos añadidos mediante el método addinput( ) FORMATO DE LA LLAMADA Booleano sign(cadenatexto type) PARAMETROS type: tipo de firma Type cades-sign-attached cades-cosign-attached cades-sign-dettached cades-cosign-dettached xades-sign-dettached xades-sign-enveloping Firma CMS/CAdES attached Añadir firma paralela a un CMS/CAdES attached Firma CMS/CAdES dettached Añadir firma paralela a una firma CAdES dettached Firma XMLDSig/XAdES dettached Firma XMLDSig/XAdES enveloping

xades-cosign-enveloped 9 pdf pdf-timestamped Crear/Añadir firma XMLDSig/XAdES enveloped Firma PDF Firma PDF con sello de tiempo cms-cosign-dettached xades-countersign-enveloping OBSOLETO OBSOLETO, use cades-cosign-dettached RETORNO Cierto si la llamada es satisfactoria 1.4.13 verify Verifica la firma de los documentos especificados mediante addinput( ) para firmas attached y addinputwithattachement(..) para firmas dettached FORMATO DE LA LLAMADA Booleano verify(cadenatexto type) PARAMETROS type: tipo de firma a verificar Type cms-verify-attached cms-verify-dettached Firma CMS attached Firma CMS dettached RETORNO Cierto si la llamada es satisfactoria 1.4.14 signsetadeslevel Establece el nivel de firma para CAdES/XAdES FORMATO DE LA LLAMADA 9 Si firma un <Manifest>, el sistema creará una firma de tipo http://www.w3.org/2000/09/xmldsig#manifest

Booleano signsetadeslevel(cadenatexto level) PARAMETROS level: nivel de firma Type none bes t c xl CMS/XMLDSig CAdES-BES/XAdES-BES CAdES-T/XAdES-T CAdES-C/XAdES-C XAdES-XL RETORNO Cierto si la llamada es satisfactoria 1.4.15 cipher Cifra los elementos añadidos mediante el método addinput( ) FORMATO DE LA LLAMADA Booleano cipher(cadenatexto password) PARAMETROS password: la contraseña de cifrado o bien *gui indicando que se debe preguntar al usuario mediante interfaz grafica. RETORNO Cierto si la llamada es satisfactoria 1.4.16 decipher Descifra los elementos añadidos mediante el método addinput( )

FORMATO DE LA LLAMADA Booleano decipher(cadenatexto password) PARAMETROS password: la contraseña de descifrado o bien *gui indicando que se debe preguntar al usuario mediante interfaz grafica. RETORNO Cierto si la llamada es satisfactoria 1.4.17 hash Calcula el hash de los elementos añadidos mediante el método addinput( ) FORMATO DE LA LLAMADA Booleano hash() RETORNO Cierto si la llamada es satisfactoria 1.4.18 getties Recupera el código TIES público de la tarjeta FORMATO DE LA LLAMADA CadenaTexto getties () RETORNO El código TIES si la llamada es satisfactoria, null en otro caso.

1.4.19 setcryptostorepkcs12 Utiliza los certificados y las claves privadas de un archivo PKCS#12. Este método está pensado para ser usado en tareas de testing. FORMATO DE LA LLAMADA Booleano setcryptostorepkcs12(cadenatexto pkcs12path,cadenatexto pin) PARAMETROS pkcs12path: ubicación del archivo PKCS#12 pin: clave del archivo PKCS#12 RETORNO Cierto si la llamada es satisfactoria 1.4.19.1 signxadesenvelopedselectnode Permite firmar, con formato XAdES. Este tipo de llamada cae fuera de la lógica addinput/sign() ya que no muestra ninguna ventana para la validación de la firma a efectuar. Se permite especificar los nodos a firmar del xml de entrada y la posición donde será ubicada la firma. Nota: Se recomienda el uso del método signxadesenvelopedselectnode en el que se permite especificar el encoding del fichero a firmar (parámetro adicional xmlentradaencoding). Dicho método se encuentra detallado en el siguiente punto. FORMATO DE LA LLAMADA CadenaTexto signxadesenvelopedselectnode(cadenatexto xmlentrada, CadenaTexto nodoafirmar, CadenaTexto nodoposiciónfirma, CadenaTexto mecanismocannonicalización) PARAMETROS xmlentrada: El documento XML que se desea firmar. nodoafirmar: El nodo que se desea firmar, puede especificarse:

o bien la referencia al ID del documento: p.e. #id o bien un xpath 10 identificando el nodo: p.e. //node. En el caso que dicho nodo no tenga un identificador, este será añadido de manera automática. nodoposiciónfirma: El nodo donde se desea insertar la firma, puede especificarse: o bien la referencia al ID del documento: p.e. #id o bien un xpath 11 identificando el nodo: p.e. //node mecanismocannonicalización: Especifica el mecanismo que se desea utilizar para la transformación de canonicalización 12. Debe especificar uno de los siguientes valores: TRANSFORM_C14N_OMIT_COMMENTS TRANSFORM_C14N_WITH_COMMENTS TRANSFORM_C14N_EXCL_OMIT_COMMENTS TRANSFORM_C14N_EXCL_WITH_COMMENTS RETORNO El XML Firmado EJEMPLO xml= <root> <data1 id= iddata1 >sample</data1> <data2>sample</data2> <signatures1 id= idsignatures1 ></signatures1> <signatures2></signatures2> </root> signed_xml=applet.signxadesenvelopedselectnode (xml, #iddata1, #idsignatures1, TRANSFORM_C14N_OMIT_COMMENTS ) 10 11 12 Consulte http://www.w3.org/tr/xpath/ Consulte http://www.w3.org/tr/xpath/ Consulte http://www.w3.org/tr/xmldsig-core/

signed_xml=applet.signxadesenvelopedselectnode (xml, //data2, //data2, TRANSFORM_C14N_OMIT_COMMENTS ) 1.4.19.2 signxadesenvelopedselectnode Permite firmar, con formato XAdES. Este tipo de llamada cae fuera de la lógica addinput/sign() ya que no muestra ninguna ventana para la validación de la firma a efectuar. Se permite especificar los nodos a firmar del xml de entrada y la posición donde será ubicada la firma. FORMATO DE LA LLAMADA CadenaTexto signxadesenvelopedselectnode(cadenatexto xmlentrada, CadenaTexto nodoafirmar, CadenaTexto nodoposiciónfirma, CadenaTexto mecanismocannonicalización, String xmlentradaencoding) PARAMETROS xmlentrada: El documento XML que se desea firmar. nodoafirmar: El nodo que se desea firmar, puede especificarse: o bien la referencia al ID del documento: p.e. #id o bien un xpath 13 identificando el nodo: p.e. //node. En el caso que dicho nodo no tenga un identificador, este será añadido de manera automática. nodoposiciónfirma: El nodo donde se desea insertar la firma, puede especificarse: o bien la referencia al ID del documento: p.e. #id o bien un xpath 14 identificando el nodo: p.e. //node mecanismocannonicalización: Especifica el mecanismo que se desea utilizar para la transformación de canonicalización 15. Debe especificar uno de los siguientes valores: TRANSFORM_C14N_OMIT_COMMENTS TRANSFORM_C14N_WITH_COMMENTS TRANSFORM_C14N_EXCL_OMIT_COMMENTS TRANSFORM_C14N_EXCL_WITH_COMMENTS 13 14 15 Consulte http://www.w3.org/tr/xpath/ Consulte http://www.w3.org/tr/xpath/ Consulte http://www.w3.org/tr/xmldsig-core/

xmlentradaencoding: Especifica el encoding del documento xml de entrada. Debe especificar uno de los siguientes valores: ISO-8859-1 UTF-8 RETORNO El XML Firmado EJEMPLO xml= <root> <data1 id= iddata1 >sample</data1> <data2>sample</data2> <signatures1 id= idsignatures1 ></signatures1> <signatures2></signatures2> </root> signed_xml=applet.signxadesenvelopedselectnode (xml, #iddata1, #idsignatures1, TRANSFORM_C14N_OMIT_COMMENTS, ISO-8859-1 ) signed_xml=applet.signxadesenvelopedselectnode (xml, //data2, //data2, TRANSFORM_C14N_OMIT_COMMENTS, ISO-8859-1) 1.4.19.3 signxadesenvelopedselectnodebase64 Permite firmar, con formato XadES un documento xml codificado en base 64 obteniendo la firma también en base64. Este tipo de llamada cae fuera de la lógica addinput/sign() ya que no muestra ninguna ventana para la validación de la firma a efectuar. Se permite especificar los nodos a firmar del xml de entrada y la posición donde será ubicada la firma. FORMATO DE LA LLAMADA CadenaTexto signxadesenvelopedselectnodebase64(cadenatexto xmlentrada, CadenaTexto nodoafirmar, CadenaTexto nodoposiciónfirma, CadenaTexto mecanismocannonicalización, String xmlentradaencoding)

PARAMETROS xmlentrada: El documento XML que se desea firmar codificado en base64. nodoafirmar: El nodo que se desea firmar, puede especificarse: o bien la referencia al ID del documento: p.e. #id o bien un xpath 16 identificando el nodo: p.e. //node. En el caso que dicho nodo no tenga un identificador, este será añadido de manera automática. nodoposiciónfirma: El nodo donde se desea insertar la firma, puede especificarse: o bien la referencia al ID del documento: p.e. #id o bien un xpath 17 identificando el nodo: p.e. //node mecanismocannonicalización: Especifica el mecanismo que se desea utilizar para la transformación de canonicalización 18. siguientes valores: TRANSFORM_C14N_OMIT_COMMENTS TRANSFORM_C14N_WITH_COMMENTS TRANSFORM_C14N_EXCL_OMIT_COMMENTS TRANSFORM_C14N_EXCL_WITH_COMMENTS Debe especificar uno de los xmlentradaencoding: Especifica el encoding del documento xml de entrada. Debe especificar uno de los siguientes valores: ISO-8859-1 UTF-8 RETORNO El XML Firmado codificado en base 64. EJEMPLO xml= PHJvb3Q+DQo8ZGF0YTEgaWQ9ImlkZGF0YTEiPnNhbXBsZTwvZGF0YTE+DQo8ZGF0YTI+c2F tcgxlpc9kyxrhmj4ncjxzawduyxr1cmvzmsbpzd0iawrzawduyxr1cmvzmsi+pc9zawduyxr1c mvzmt4ncjxzawduyxr1cmvzmj48l3npz25hdhvyzxmypg0kpc9yb290pg== 16 17 18 Consulte http://www.w3.org/tr/xpath/ Consulte http://www.w3.org/tr/xpath/ Consulte http://www.w3.org/tr/xmldsig-core/

Que sería el equivalente del siguiente documento codificado en base 64. <root> <data1 id= iddata1 >sample</data1> <data2>sample</data2> <signatures1 id= idsignatures1 ></signatures1> <signatures2></signatures2> </root> signed_xml=applet.signxadesenvelopedselectnodebase64 (xml, #iddata1, #idsignatures1, TRANSFORM_C14N_OMIT_COMMENTS, ISO-8859-1 ) signed_xml=applet.signxadesenvelopedselectnodebase64 (xml, //data2, //data2, TRANSFORM_C14N_OMIT_COMMENTS, ISO-8859-1 ) 1.4.19.4 createxadesmanifest Este método permite crear un manifest para firmas enveloping en XAdES para conseguir, a la práctica, una firma de tipo dettached. FORMATO DE LA LLAMADA CadenaTexto createxadesmanifest(cadenatexto uri, CadenaTexto digestmethodalgorithm, CadenaTexto digestvalue) PARAMETROS uri: La URI al documento de referencia digestmethodalgorithm: el algoritmo de digest a utilizar digestvalue: el valor del digest, eb base64 RETORNO El XML que corresponde al digest EJEMPLO applet.createxadesmanifest("data.bin", "http://www.w3.org/2000/09/xmldsig#sha1", "Au2KNhXNIfC7yePq5S0D6a0/DFw=");

Dará como resultado <ds:manifest Id= Manifest1"> <ds:reference URI="data.bin"> <ds:digestmethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <ds:digestvalue>au2knhxnifc7yepq5s0d6a0/dfw=</ds:digestvalue> </ds:reference> </ds:manifest> 1.5 Uso desde una página web (Applet) Para usar la API desde una página web hay que usar el Applet que se entrega. En esta API de applet se han de utilizar los siguientes tipos de datos: CadenaTexto: String Entero: int Booleano: bool Cierto: true False: false Siempre que el applet se ejecuta crea un archivo de trazas. La ubicación del archivo es: $HOME/.idazki-trace.txt para sistemas Linux/OSX %APPDATA%/.idazki-trace.txt para sistemas Windows 1.5.1 Declaración Para poder utilizar el applet desde una página web se debe especificar el siguiente código dentro de esta: <html> <header <applet code="izenpe.app.applet.appletapplication.class" archive="izenpesignerapplet.jar" name="applet"> </header> </applet> <body> </body> </html>

1.5.2 Metodos especificos para el applet 1.5.2.1 promptfilesystem Muestra una caja de dialogo preguntando por la entrada/salida de un archivo o directorio FORMATO DE LA LLAMADA String promptfilesystem(boolean isinput, boolean isfolder, String semicolonseparatedextensionlist) PARAMETROS 1. isinput: true para indicar que es de entrada, false para indicar que es de salida 2. isfolder: true para indicar que es un directorio, false para indicar que es un archivo 3. semicolonseparatedextensionlist: en el caso que sea una operación sobre archivo (isfolder==false), se puede especificar la lista de extensiones permitidas, separadas por punto y coma. Por ejemplo txt;doc ; RETORNO El archivo/directorio seleccionado si la llamada es satisfactoria, null en otro caso. EJEMPLO alert("seleccione PDF o TXT de entrada"); alert(applet.promptfilesystem(true,false,"pdf;txt")); alert("seleccione un archivo.xades de salida "); alert(applet.promptfilesystem(false,false,"xades")); alert("seleccione una carpeta de entrada ); alert(applet.promptfilesystem(true,true,null)); alert("seleccione una carpeta de salida "); alert(applet.promptfilesystem(true,true,null)); 1.5.2.2 tracetime Permite trazar una operación y poder hacer cronometrajes. FORMATO DE LA LLAMADA void tracetime(string trace, String timer)

PARAMETROS 4. trace: Texto de la traza 5. timer: Identificador del timer EJEMPLO Este ejemplo efectúa una traza de tiempo: applet.tracetime("inicio traza", timer1 ; applet.tracetime("fin de la traza", timer1 ); 1.5.3 Consideraciones adicionales Cuando los applets necesitan cargar una clase o recurso en caso de no encontrarlo en el jar lo intenta cargar accediendo al servidor. Como en el caso de Idazki todos los recursos necesarios se encuentran en el propio jar, es recomendable desactivar este comportamiento. Para ello hay que utilizar el parámetro codebase_lookup de la siguiente forma: <applet code="izenpe.app.applet.appletapplication.class" archive="izenpesignerapplet.jar" name="applet"> <param name="codebase_lookup" value="false"/> </applet> 1.6 Uso desde una aplicación Windows mediante DLL (dllwrapper) Para usar la API desde una aplicación hay que tener en cuenta que se hacen los siguientes mapeos para tipos de datos CadenaTexto: QSTRING (char *) Entero: int Booleano: int Cierto: 1

False: 0 NOTA: todos los métodos son prefijados con idazki_ NOTA importante: debe liberarse la memoria de los QSTRING devueltos. Si se desean generar trazas de las operaciones efectuadas se puede especificar la variable de entorno IDAZKI_WS_DLLWRAPPER_TRACEFILE con el nombre del archivo donde se quieren guardar las trazas. 1.6.1 Declaración Versión debug muthithreaded dll: idazki-ws-dllwrapper_debug.lib para linkar idazki-ws-dllwrapper_debug.dll Versión release muthithreaded dll: idazki-ws-dllwrapper.lib para linkar idazki-ws-dllwrapper.dll En el archivo idazki-ws-dllwrapper.h se encuentran las declaraciones de los métodos y de las constantes de la DLL. 1.6.2 Métodos específicos para la librería DLL 1.6.2.1 idazkiws_forgetlastsessionandcreatenewone Cierra todas las sesiones anteriormente creadas en el servicio web y crea una nueva. FORMATO DE LA LLAMADA QBOOL idazki_forgetlastsessionandcreatenewone(); RETORNO QTRUE si ha podido crear una nueva sesión. Si devuelve QFALSE es posible que el servidor no ha sido arrancado. 1.6.2.2 idazkiws_serverstart Arranca el servidor interno de IdazkiWS.

FORMATO DE LA LLAMADA QBOOL idazkiws_serverstart(qstring serverpath); PARAMETROS 6. serverpath: Lugar donde está instalado el servidor RETORNO QTRUE si no hay ningún error 1.6.2.3 idazkiws_serverstop Cierra el servidor anteriormente arrancado con idazkiws_serverstart si se especifica killall a QFALSE. Si killall está a QTRUE entonces cerrará el servidor aún que no esté arrancado por idazkiws_serverstart. FORMATO DE LA LLAMADA QVOID idazkiws_serverstart(qstring serverpath, QBOOL killall); PARAMETROS 7. serverpath: Lugar donde está instalado el servidor 8. killall: Cerrar el servidor aún si no ha sido arrancado con idazki_serverstart 1.7 Uso desde una aplicación en entorno Windows mediante SOAP EL USO DIRECTO DE SOAP ES EXPERIMENTAL, NO ESTÁ SOPORTADO Y SUS METODOS Y FUNCIONALIDAD PUEDEN CAMBIAR EN CUALQUIER MOMENTO. Para usar la API desde una aplicación hay que tener en cuenta que se hacen los siguientes mapeos para tipos de datos CadenaTexto: xsd:string

Entero: xsd:int Booleano: xsd:bool Cierto: true False: false Todos los métodos, tienen un primer parámetro añadido que es el identificador de sesión que debe ser utilizado para realizar cualquier operación mediante a la llamada especifica de la API forgetlastsessionandcreatenewone. NOTA: El servidor solo acepta llamadas provenientes desde localhost (127.0.0.1) 1.7.1 Declaración La declaración de los servicios está disponible en http://localhost:18080/axis2/services/idazki?wsdl 1.7.2 Métodos específicos para el servicio SOAP 1.7.2.1 forgetlastsessionandcreatenewone Cierra todas las sesiones anteriormente creadas en el servicio web y crea una nueva. FORMATO DE LA LLAMADA <wsdl:message name="forgetlastsessionandcreatenewonerequest"/> <wsdl:message name="forgetlastsessionandcreatenewoneresponse"> <wsdl:part name="parameters" element="ns:forgetlastsessionandcreatenewoneresponse"/> </wsdl:message> <wsdl:operation name="forgetlastsessionandcreatenewone"> <wsdl:input message="ns:forgetlastsessionandcreatenewonerequest" wsaw:action="urn:forgetlastsessionandcreatenewone"/> <wsdl:output message="ns:forgetlastsessionandcreatenewoneresponse" wsaw:action="urn:forgetlastsessionandcreatenewoneresponse"/> </wsdl:operation> RETORNO El nuevo identificador de sesión

Ejemplos de la API 1.8 Applet/JavaScript 1.8.1 Firma de un documento en PDF con sello de tiempo archivoentrada = applet.promptfilesystem( in?,true,false); archivosalida = applet.promptfilesystem( out?,false,false); applet.addinput( file, archivoentrada, file, archivosalida); applet.setcryptostoreauto(); applet.sign( pdf-timestamped ); 1.8.2 Firma de los documentos de una carpeta en CAdES-C dettached y recuperación del contenido mediante javascript. applet.addinput( folder,"/in", inline,null); applet.signsetadeslevel( c ); applet.setcryptostoreauto(); applet.sign( cades-sign-dettached ); for (i=0;i<applet.getoutputcontent();++i) { alert( signed file= +applet.getoutputreferencefile(i,false)); alert( signature= +applet.getoutputcontent(i,true)); } 1.8.3 Cifrado en local de un texto preguntando la contraseña al usuario applet.addinput( inline-text,"cipher-me!", inline,null); applet.cipher( *gui ); ciphereddata = applet.getoutputcontent(0,true);

1.8.4 Recuperación de código TIES 19 alert("ties-public="+applet.getties ()); 1.8.5 Firma y verificación de un CMS attached applet.clearinputs(); applet.addinput("inline-text", datosfirmados,"inline",null); applet.signsetadeslevel("none"); applet.sign("cades-sign-attached"); var cms=applet.getoutputcontent(0,true); applet.clearinputs(); applet.addinput("inline-binary",cms,"none",null); applet.verify("cms-verify-attached"); 1.8.6 Firma y verificación de un CMS dettached applet.clearinputs(); applet.addinput("inline-text", datosfirmados,"inline",null); applet.signsetadeslevel("none"); applet.sign("cades-sign-dettached"); var cms=applet.getoutputcontent(0,true); applet.clearinputs(); applet.addinputwithattachment("inline-binary",cms, "inline-text", datosfirmados,"none",null,null); applet.verify("cms-verify-dettached"); 1.8.7 Firma mancomunada de una CAdES-BES dettached applet.clearinputs(); applet.addinput("inline-text", datosfirmados,"inline",null); applet.signsetadeslevel("bes"); applet.setcryptostoreauto(); 19 En los sistemas UNIX puede recuperar el código ties mediante la llamada: pkcs11-tool --readobject --label 'TIES-PUB' --type data

applet.sign("cades-sign-dettached"); var cades_1firma=applet.getoutputcontent(0,true); applet.clearinputs(); applet.addinput("inline-binary", cades_1firma,"inline",null); applet.signsetadeslevel("bes"); applet.setcryptostoreauto(); applet.sign("cades-cosign-dettached"); var cades_2firma=applet.getoutputcontent(0,true); 1.8.8 Firma XAdES-BES dettached a partir de un hash externo. El hash introducido ha sido calculado a partir de un fichero xml, y por tanto hay que especificar el método de canonización (hash-canonizexmlwithcomments). applet.clearinputs(); applet.setoption("signature-hashalgo","sha-1"); applet.setoption("signature-dettached-ref-uri","original.xml"); applet.setoption("signature-dettached-ref-type","hash"); applet.setoption("hash-canonizexmlwithcomments","0"); applet.addinput("inline-hash", "VvPGEQaGWoHmPfH5E+LgP8MJvaU=", "inline", null ); applet.setoption("va-universal-ocsp-url", "http://ocspdes.izenpe.com:8094"); applet.setoption("timestamp-url", "http://ocspdes.izenpe.com:8093/"); applet.setcryptostoreauto(); applet.signsetadeslevel("bes"); applet.sign("xades-sign-dettached"); var data_xml_signed=applet.getoutputcontent(0,false); 1.8.9 Firma XAdES-BES dettached a partir de un hash externo. El hash introducido ha sido calculado a partir de un fichero binario. applet.clearinputs(); applet.setoption("signature-hashalgo","sha-1");

applet.setoption("signature-dettached-ref-uri","original.xml"); applet.setoption("signature-dettached-ref-type","hash"); applet.addinput("inline-hash", "VvPGEQaGWoHmPfH5E+LgP8MJvaU=", "inline", null ); applet.setoption("va-universal-ocsp-url", "http://ocspdes.izenpe.com:8094"); applet.setoption("timestamp-url", "http://ocspdes.izenpe.com:8093/"); applet.setcryptostoreauto(); applet.signsetadeslevel("bes"); applet.sign("xades-sign-dettached"); var data_xml_signed=applet.getoutputcontent(0,false);

1.9 DLL (en C++, mediante DLLWrapper) 1.9.1 Obtención de una sesión valida en el servidor WS (y arranque del servidor) Primero de todo se intenta crear una nueva sesión: QBOOL alive = idazkiws_forgetlastsessionandcreatenewone(); std::cout<< "server is " << (alive==qfalse?"not running":"running") << std::endl; if (alive==qtrue) return 0; En el caso que no se haya podido crear lo más seguro es que el servidor no esté arrancado, por lo que se puede intentar de arrancar (en este caso el servidor WS está ubicado en C:\IDAZKI_SRV std::cout<< "arrancando servidor..." << std::endl; idazkiws_serverstart( c:\\idazki_srv ); Se vuelve a intentar conseguir acceder a una nueva sesión (el bucle es necesario ya que el servidor puede estar arrancando). int tries = 50; while ((alive = idazkiws_forgetlastsessionandcreatenewone())==qfalse && tries--) { Sleep(200); } if (alive==qfalse) { std::cout << "Cannot start up server" << std::endl; getchar(); return -1; } return 0; 1.9.2 Firma de 3 PDFs en batch y finalmente cofirma del último con sello tiempo idazkiws_clearinputs(); idazkiws_setoption(option_pdf_signature_llx,"150"); idazkiws_setoption(option_pdf_signature_lly,"150"); idazkiws_setoption(option_pdf_signature_urx,"250"); idazkiws_setoption(option_pdf_signature_ury,"250"); idazkiws_setoption(option_pdf_signature_page,"1"); idazkiws_setoption(option_pdf_signature_image,"c:\\signature1.gif"); idazkiws_addinput(param_element_in_file,"c:\\doc1.pdf", PARAM_ELEMENT_OUT_FILE,"doc1_s.pdf"); idazkiws_addinput(param_element_in_file,"c:\\doc2.pdf",

PARAM_ELEMENT_OUT_FILE,"doc2_s.pdf"); idazkiws_setcryptostoreauto() idazkiws_sign(param_sign_pdf) idazkiws_clearinputs(); idazkiws_setoption(option_pdf_signature_llx,"250"); idazkiws_setoption(option_pdf_signature_lly,"150"); idazkiws_setoption(option_pdf_signature_urx,"350"); idazkiws_setoption(option_pdf_signature_ury,"250"); idazkiws_setoption(option_pdf_signature_image,"c:\\signature2.gif"); idazkiws_addinput(param_element_in_file,"c:\\doc1_s.pdf", PARAM_ELEMENT_OUT_FILE,"doc1_s_s.pdf"); idazkiws_setcryptostoreauto() idazkiws_sign(param_sign_pdf_tsa)

Aplicación de escritorio 1.10 Instalación / desinstalación 1.10.1 OSX 1.10.1.1 Instalación grafica Para instalar la aplicación en OSX: 1. Localice el archivo ID@ZKI.DMG: 2. Haga doble clic en el archivo para montarlo en el sistema de archivos. Deberá disponer de un nuevo volumen montado IZENPE ID@ZKI : 3. Arrastre el icono ID@ZKI a su carpeta de aplicaciones. Podrá ejecutar ID@ZKI dentro de su carpeta de aplicaciones.

1.10.1.2 Desinstalación grafica Para desinstalar la aplicación, envíe ID@ZKI a la papelera. 1.10.1.3 Instalación en línea de comandos 1. Monte el archivo de instalación en el sistema mediante el comando hdid ID\@ZKI.dmg 2. Copie la aplicación mediante la instrucción cp /Volumes/IZENPE ID\@ZKI/ID\@ZKI.app /Applications 3. Desmonte el archivo de instalación con umount /Volumes/IZENPE ID\@ZKI 1.10.1.4 Desinstalación en línea de comandos Elimine el directorio de la aplicación mediante la instrucción rm rf /Applications/ID\@ZKI.app 1.10.2 Windows/Linux

1.10.2.1 Instalación La instalación deberá realizarse con el fichero correspondiente a la plataforma destino: Microsoft Windows (XP y Vista): Binario autoejecutable Linux (OpenSuse, Ubuntu y FedoraCore): fichero comprimido jar a lanzar mediante la Java Virtual Machine (JRE 1.6) Mac: fichero comprimido jar a lanzar mediante la Java Virtual Machine (JRE 1.6) Para realizar la instalación se deberá utilizar un usuario con privilegios administrativos sobre el sistema. El lanzamiento del instalador se hará: Microsoft Windows: Ejecutable, doble click Linux y OSX: Botón derecho -> abrir con Sun Java 6 Runtime 20 1. Pantalla de elección del lenguaje de instalación y funcionamiento. Idazki podrá 2. instalarse en euskera y castellano. Se elegirá el lenguaje mediante el menú desplegable. 3. Se pasará por los paneles de bienvenida y de elección de componentes para la instalación, donde, en esta versión 1.0, no se podrá realizar ninguna elección por parte del usuario (el componente es único). 20 En Opensuse 11.0 y 11.1, debido a un bug este procedimiento ha de ser ejecutado de la siguiente manera: Botón derecho -> Usar un comando personalizado -> Escibir java jar (sin comillas) -> Abrir

4. En el siguiente panel, se elegirá el directorio destino de la instalación (en él se podrá navegar sobre el sistema de ficheros para la elección):

5. El siguiente panel nos ofrecerá la evolución de la instalación. 6. En este panel, se elegirán las opciones de personalización de los accesos directos, según la plataforma en la que se esté. 7. El último panel nos resumirá el éxito de la instalación. 1.10.2.2 Desinstalación La desinstalación deberá realizarse siempre con privilegios administrativos sobre el sistema. La aplicación dejará un fichero jar (también accesos directos al mismo) que, ejecutado mediante la JVM de Sun, procederá a la desinstalación del componente: Borrado de los ficheros copiados en la instalación Borrado de los accesos directos generados en la instalación 1.11 Procedimiento de registro de la aplicación 1.11.1 Envío de la petición por parte del usuario La aplicación necesita ser registrada para poder utilizarse. La primera vez que se inicia la aplicación una vez instalada aparece la siguiente ventana:

El usuario deberá enviar la información a Izenpe así como el código de registro generado. 1.11.2 Generación del código de instalación para el usuario Se debe ir a la distribución y arrancar manualmente la herramienta de generación de códigos mediante la línea de comandos: java jar desktop-regtool.jar Aparecerá la siguiente ventana, introduzca el código subministrado por el usuario, el nombre del registro y la fecha límite de uso de la licencia. Todos los códigos generados se añaden a archivo cvs que se puede abrir con Excel para su posterior inspección. Pulse el botón Generar

El código generado puede pegarse directamente en un mail al cliente, el código en sí está entre los caracteres $$$ y no debería modificarse. Por ejemplo, se puede enviar un email al cliente de la forma: Estimado cliente, su código ha sido generado, por favor, copie el siguiente contenido en la caja del código de registro: FECHA LIMITE: 01/01/2020 REGISTRO A NOMBRE DE: Juan Lopez Lopez =====================================$$$ 02-30312f30312f32303230-4a75616e204c6f70 657a204c6f70657a-41d75e74 $$$===================================== Atentamente 1.11.3 Instalación del código de instalación El cliente sencillamente ha de insertar el código que se le ha suministrado. Recuerde que se omite todo lo que esté fuera de los caracteres $$$, por lo que cualquier otro tipo de texto será omitido.

Una vez introducido el código y pulsado el botón Registrar, la aplicación pedirá al usuario que reinicie la aplicación para poder arrancar de forma normal. 1.12 Uso de la aplicación 1.12.1 Firma de un archivo Este procedimiento le permitirá firmar un archivo. Si el documento es un PDF se generará un archivo PDF firmado, si el documento no es de tipo PDF se generará un archivo XAdES-BES. Se incluirá sello de tiempo o no depende si el servidor de sellado de tiempo está accesible o no. 1. Si desea firmar con un dispositivo criptográfico, introdúzcalo ahora. Si desea firmar con un archivo de claves PKCS#12 deberá tener retirado el dispositivo criptográfico del ordenador y en el caso que sea Windows, deberá importar dicho PKCS#12 dentro de su almacén personal de claves. 2. Pulse el botón Firmar archivo

3. Pulse el botón Firmar archivo 4. (Opcional) Si le aparece una ventana indicándole que no está disponible el servidor de sellado de tiempo no podrá añadir sello de tiempo a la firma electrónica. Si desea continuar pulse Si 5. Le aparecerá una ventana indicándole que seleccione el certificado a utilizar, pulse Ok para seleccionarlo o el botón Detalles para ver más detalles acerca del certificado seleccionado. 6. Seleccione el archivo de entrada. Se mostrará información acerca del archivo a firmar y del certificado de firma que utilizará. Pulse aceptar para continuar. 7. Seleccione como desea guardar el documento firmado

8. Introduzca la contraseña de protección de claves en el caso que se requiera. 1.12.2 Verificación de firma y extracción documento embebido Nota: Para verificar documentos PDF firmados utilice la herramienta Adobe Acrobat Reader. 1. Pulse el botón Verificar archivo 2. Seleccione para comprobar la firma. Solo se permite verificar archivos firmados mediante la aplicación de escritorio (archivos.signed-xades). 3. Se mostrará una ventana con información acerca de la firma: Certificado que ha firmado el documento Sello de tiempo seguro (en e el caso que esté)

Botón para extraer el documento original que se ha firmado. En el caso que el certificado con el que se firma no se pueda validar el sistema mostrará el mensaje NO SE PUEDE GARANTIZAR LA VALIDEZ DE LA FIRMA. 1.12.3 Firma de múltiples archivos Este procedimiento le permitirá firmar un conjunto de archivos. Si el documento es un PDF se generará un archivo PDF firmado, si el documento no es de tipo PDF se generará un archivo XAdES-BES. Se incluirá sello de tiempo o no depende si el servidor de sellado de tiempo está accesible o no. 1. Si desea firmar con un dispositivo criptográfico, introdúzcalo ahora. Si desea firmar con un archivo de claves PKCS#12 deberá tener retirado el dispositivo criptográfico del ordenador y en el caso que sea Windows, deberá importar dicho PKCS#12 dentro de su almacén personal de claves. 2. Cree una carpeta con todos los archivos que desee firmar. Prepare otra carpeta donde querrá dejar los archivos firmados. 3. Pulse el botón Firmar carpeta 4. (Opcional) Si le aparece una ventana indicándole que no está disponible el servidor de sellado de tiempo no podrá añadir sello de tiempo a la firma electrónica. Si desea continuar pulse Si