public final class MiniAfirmaApplet
extends javax.swing.JApplet
Constructor and Description |
---|
MiniAfirmaApplet() |
Modifier and Type | Method and Description |
---|---|
void |
addData(java.lang.String data)
Añade datos mediante porciones de un total codificado en Base64.
|
java.lang.String |
coSign(java.lang.String dataB64,
java.lang.String algorithm,
java.lang.String format,
java.lang.String extraParams)
Realiza la firma paralela (cofirma) de unos datos.
|
java.lang.String |
counterSign(java.lang.String algorithm,
java.lang.String format,
java.lang.String extraParams)
Realiza una firma en cascada (Contrafirma) sobre una firma.
|
java.lang.String |
echo()
Imprime en el logger el texto "MiniApplet cargado y en ejecución".
|
java.lang.String |
getBase64FromText(java.lang.String plainText,
java.lang.String charset)
Codifica un texto plano a Base64.
|
java.net.URL |
getCodeBase()
Obtiene la URL base del Applet.
|
java.lang.String |
getCurrentLog()
Obtiene el registro (log), en formato XML, acumulado desde la carga inicial del Applet.
|
java.lang.String |
getErrorMessage()
Recupera el error producido durante la última operación
realizada por el applet.
|
java.lang.String |
getErrorType()
Recupera el tipo de error producido durante la última operación
realizada por el applet.
|
java.lang.String |
getFileNameContentBase64(java.lang.String title,
java.lang.String extensions,
java.lang.String description,
java.lang.String filePath)
Muestra un diálogo modal para la selección de un fichero del
que se devolverá su nombre y su contenido en Base64.
|
java.lang.String[] |
getMultiFileNameContentBase64(java.lang.String title,
java.lang.String extensions,
java.lang.String description,
java.lang.String filePath)
Muestra un diálogo modal para la selección de múltiples ficheros, de los
que se devolverá sus nombres y sus contenidos en Base64.
|
java.lang.String |
getRemainingData()
Obtiene los datos restantes que no se entregaron por exceso de tamaño en cualquiera de los métodos
públicos del Applet.
|
java.lang.String |
getTextFromBase64(java.lang.String base64Data,
java.lang.String charset)
Decodifica un texto en Base64.
|
void |
init() |
boolean |
saveDataToFile(java.lang.String title,
java.lang.String fileName,
java.lang.String extension,
java.lang.String description)
Muestra un diálogo modal que permite al usuario seleccionar
el directorio y el nombre de fichero para el guardado de datos.
|
java.lang.String |
selectCertificate(java.lang.String extraParams)
Selecciona y recupera un certificado del almacén actual.
|
void |
setKeyStore(java.lang.String ksType)
Establece el almacén de certificados que se debe utilizar en las subsiguientes
operaciones con certificados.
|
void |
setStickySignatory(boolean sticky)
Fija el firmante que se establezca para ser reutilizado (sin intervención del usuario) en todas
las operaciones posteriores hasta que se desactive esta opción.
|
java.lang.String |
sign(java.lang.String algorithm,
java.lang.String format,
java.lang.String extraParams)
Firma unos datos según la configuracion proporcionada.
|
java.lang.String |
signAndSaveToFile(java.lang.String op,
java.lang.String algorithm,
java.lang.String format,
java.lang.String extraParams,
java.lang.String fileName)
Firma/multifirma unos datos según la configuracion proporcionada y
guarda el resultado en disco.
|
java.lang.String |
signBatch(java.lang.String batchB64,
java.lang.String batchPreSignerUrl,
java.lang.String batchPostSignerUrl,
java.lang.String extraParams)
Procesa un lote de firmas, que se realizarán siempre de forma triásica.
|
getAccessibleContext, getContentPane, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, remove, repaint, setContentPane, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setTransferHandler, update
destroy, getAppletContext, getAppletInfo, getAudioClip, getAudioClip, getDocumentBase, getImage, getImage, getLocale, getParameter, getParameterInfo, isActive, isValidateRoot, newAudioClip, play, play, resize, resize, setStub, showStatus, start, stop
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, dispatchEvent, enable, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocusInWindow, reshape, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
public void setStickySignatory(boolean sticky)
sticky
- Si se establece a true
, el firmante que se seleccione tras este establecimiento se
reutilizará para todas las operaciones posteriores, hasta que se restablezca a false
.
Si se establece al false
se borra el firmante fijado si lo hubiese, por lo que se preguntará
al usuario de nuevo con un diálogo de selección de certificado la próxima vez que se
necesite (o un diálogo de confirmación de firma si el certificado se establece unívocamente
mediante un filtro.public java.lang.String sign(java.lang.String algorithm, java.lang.String format, java.lang.String extraParams) throws java.security.PrivilegedActionException, java.io.IOException, es.gob.afirma.core.AOException, java.security.cert.CertificateEncodingException, es.gob.afirma.core.signers.ExtraParamsProcessor.IncompatiblePolicyException
addData(String)
.
La configuración que se puede proporcionar es el algoritmo,
el formato de firma y parámetros adicionales del formato particular.
Estos parámetros extra se indicarán como una cadena de
múltiples líneas con la forma CLAVE=VALOR
, en donde
CLAVE
es el nombre de la propiedad y VALOR
el valor asignado
a esta. Para utilizar el valor por defecto de una propiedad se dejará
de indicar esta en el listado de parámetros.algorithm
- Algoritmo de firma.format
- Formato de firma.extraParams
- Parámetros adicionales para configurar la operacón.getRemainingData()
y concatenar las respuestas hasta
que este último método devuelva '%%EOF%%'java.security.PrivilegedActionException
- Cuando ocurre un error de seguridad.java.io.IOException
- Cuando se produce un error durante la firma electrónica.es.gob.afirma.core.AOFormatFileException
- Cuando se indica un formato de firma no soportado.es.gob.afirma.core.AOException
- Cuando se produce un error desconocido.java.security.cert.CertificateEncodingException
- Cuando no se puede codificar el certificado usado para la firma.es.gob.afirma.core.signers.ExtraParamsProcessor.IncompatiblePolicyException
- Si se pide una política de firma concreta (por nombre, no indicando los parámetros
individualmente) incompatible con el formato de firma indicado.public java.lang.String coSign(java.lang.String dataB64, java.lang.String algorithm, java.lang.String format, java.lang.String extraParams) throws java.security.PrivilegedActionException, java.io.IOException, es.gob.afirma.core.AOException, java.security.cert.CertificateEncodingException, es.gob.afirma.core.signers.ExtraParamsProcessor.IncompatiblePolicyException
addData(String)
.
Tanto si la firma está contenida en los datos (por ejemplo, en OOXML, ODF, PDF,
etc.) como si los datos están contenidos en la firma, el parámetro
data debe establecerse a null
. Sólo se establece si firma y
datos se encuentran en archivos independientes.
Es posible configurar la multifirma generada por medio de una serie de parámetros
extra propios de cada formato de firma (consultar la documentación de cada formato
particular). Estos parámetros extra se indicarán como una cadena de
múltiples líneas con la forma CLAVE=VALOR
, en donde
CLAVE
es el nombre de la propiedad y VALOR
el valor asignado
a esta. Para utilizar el valor por defecto de una propiedad se dejará
de indicar esta en el listado de parámetros.dataB64
- Datos en Base64 que se firmaron originalmente o null
si no son necesarios.algorithm
- Algoritmo de firma.format
- Formato de firma.extraParams
- Parámetros adicionales para configurar la operacón.getRemainingData()
y concatenar las respuestas hasta
que este último método devuelva '%%EOF%%'java.security.PrivilegedActionException
- Cuando ocurre un error de seguridad.java.io.IOException
- Cuando se produce un error durante la cofirma electrónica.es.gob.afirma.core.AOFormatFileException
- Cuando se indica un formato de firma no soportado o no
se puede identificar el formato de la firma.es.gob.afirma.core.AOException
- Cuando se produce un error desconocido.java.security.cert.CertificateEncodingException
- Cuando no se puede codificar el certificado usado para la firma.es.gob.afirma.core.signers.ExtraParamsProcessor.IncompatiblePolicyException
- Si se pide una política de firma concreta (por nombre, no indicando los parámetros
individualmente) incompatible con el formato de firma indicado.public java.lang.String counterSign(java.lang.String algorithm, java.lang.String format, java.lang.String extraParams) throws java.security.PrivilegedActionException, java.io.IOException, es.gob.afirma.core.AOException, java.security.cert.CertificateEncodingException, es.gob.afirma.core.signers.ExtraParamsProcessor.IncompatiblePolicyException
addData(String)
.extraParams
se indique
el parámetro "target=tree
", en cuyo caso se contrafirmarán todos
los nodos del árbol.CLAVE=VALOR
, en
donde CLAVE
es el nombre de la propiedad y VALOR
el valor asignado a
esta. Para utilizar el valor por defecto de una propiedad se dejará de indicar
esta en el listado de parámetros.algorithm
- Algoritmo de firma.format
- Formato de firma.extraParams
- Parámetros adicionales para configurar la operación.getRemainingData()
y concatenar las respuestas hasta
que este último método devuelva '%%EOF%%'java.security.PrivilegedActionException
- Cuando ocurre un error de seguridad.java.io.IOException
- Cuando se produce algun error durante la operación.es.gob.afirma.core.AOFormatFileException
- Cuando se indica un formato de firma no soportado o no
se puede identificar el formato de la firma.es.gob.afirma.core.AOException
- Cuando se produce un error desconocido.java.security.cert.CertificateEncodingException
- Cuando no se puede codificar el certificado usado para la firma.es.gob.afirma.core.signers.ExtraParamsProcessor.IncompatiblePolicyException
- Si se pide una política de firma concreta (por nombre, no indicando los parámetros
individualmente) incompatible con el formato de firma indicado.public boolean saveDataToFile(java.lang.String title, java.lang.String fileName, java.lang.String extension, java.lang.String description) throws java.security.PrivilegedActionException, java.io.IOException
title
- Título para el diálogo.fileName
- Nombre que se debe proponer al usuario en el diálogo para
guardar el fichero. Puede ser nulo.extension
- Extensión del fichero a guardar. Ejemplos, "csig", "pdf", "xsig"...description
- Descripción del tipo de fichero que se desea guardar.true
en caso de guardarse correctamente, false
en caso
contrario.java.security.PrivilegedActionException
- Cuando ocurre un error de seguridad.java.io.IOException
- Cuando ocurre algún error en el guardado del fichero.public java.lang.String signAndSaveToFile(java.lang.String op, java.lang.String algorithm, java.lang.String format, java.lang.String extraParams, java.lang.String fileName) throws java.security.PrivilegedActionException, java.io.IOException, es.gob.afirma.core.AOException, java.security.cert.CertificateEncodingException, es.gob.afirma.core.signers.ExtraParamsProcessor.IncompatiblePolicyException
addData(String)
.
La configuración que se puede proporcionar es el algoritmo,
el formato de firma y parámetros adicionales del formato particular.
Estos parámetros extra se indicarán como una cadena de
múltiples líneas con la forma CLAVE=VALOR
, en donde
CLAVE
es el nombre de la propiedad y VALOR
el valor asignado
a esta. Para utilizar el valor por defecto de una propiedad se dejará
de indicar esta en el listado de parámetros.op
- Operación criptográfica a realizar (sign, cosign, countersign)algorithm
- Algoritmo de firma.format
- Formato de firma.extraParams
- Parámetros adicionales para configurar la operacón.fileName
- Nombre propuesto para el fichero de salida.getRemainingData()
y concatenar las respuestas hasta
que este último método devuelva '%%EOF%%'java.security.PrivilegedActionException
- Cuando ocurre un error de seguridad.java.io.IOException
- Cuando se produce un error durante la firma electrónica.es.gob.afirma.core.AOFormatFileException
- Cuando se indica un formato de firma no soportado.es.gob.afirma.core.AOException
- Cuando se produce un error desconocido.java.security.cert.CertificateEncodingException
- Cuando no se puede codificar el certificado usado para la firma.es.gob.afirma.core.signers.ExtraParamsProcessor.IncompatiblePolicyException
- Si se pide una política de firma concreta (por nombre, no indicando los parámetros
individualmente) incompatible con el formato de firma indicado.public java.lang.String getFileNameContentBase64(java.lang.String title, java.lang.String extensions, java.lang.String description, java.lang.String filePath) throws java.security.PrivilegedActionException, java.io.IOException
null
.title
- Título para el diálogo.extensions
- Extensiones de búsqueda separadas por comas (',').description
- Descripción del tipo de fichero que se desea cargar.filePath
- Ruta del fichero seleccionado por defecto.getRemainingData()
y concatenar las respuestas hasta
que este último método devuelva '%%EOF%%'java.security.PrivilegedActionException
- Cuando ocurre un error de seguridad.java.io.IOException
- Cuando ocurre algún error en la lectura del fichero.public java.lang.String[] getMultiFileNameContentBase64(java.lang.String title, java.lang.String extensions, java.lang.String description, java.lang.String filePath) throws java.security.PrivilegedActionException
null
.title
- Título para el diálogo.extensions
- Extensiones de búsqueda.description
- Descripción del tipo de fichero que se desea cargar.filePath
- Ruta del fichero seleccionado por defecto.java.security.PrivilegedActionException
- Cuando ocurre un error de seguridad.public java.lang.String getTextFromBase64(java.lang.String base64Data, java.lang.String charset) throws java.io.IOException
null
.base64Data
- Datos en Base64.charset
- Juego de caracteres a utilizar en el texto de salida.
El nombre de este debe seguir las convenciones de la RFC2278,
soportándose al menos los siguientes:
null
.getRemainingData()
y concatenar las respuestas hasta
que este último método devuelva '%%EOF%%'java.io.IOException
- Cuando se indica una codificación no válida.public java.lang.String getBase64FromText(java.lang.String plainText, java.lang.String charset) throws java.io.UnsupportedEncodingException
null
.plainText
- Texto plano.charset
- Juego de caracteres del texto.
El nombre de este debe seguir las convenciones de la RFC2278,
soportándose al menos los siguientes:
null
.java.io.UnsupportedEncodingException
- Cuando se indica una codificación no válida.public java.net.URL getCodeBase()
getCodeBase
in class java.applet.Applet
public void init()
init
in class java.applet.Applet
public java.lang.String getErrorMessage()
es.gob.afirma.keystores.AOCertificatesNotFoundException:
El almacen no contenia entradas validas
null
.public java.lang.String getErrorType()
null
.public void setKeyStore(java.lang.String ksType) throws es.gob.afirma.core.AOException
ksType
- Identificador del almacén de certificados.es.gob.afirma.core.AOException
- Cuando se indica un tipo de almacén no válido.public java.lang.String echo()
public java.lang.String getRemainingData() throws java.io.IOException
java.io.IOException
- En caso de problemas en el tratamiento de los datospublic void addData(java.lang.String data)
data
- Datos o porción de estos a procesar. Si se proporciona null
se reinicializa
el acumulado (a cadena vacía)public java.lang.String getCurrentLog()
public java.lang.String signBatch(java.lang.String batchB64, java.lang.String batchPreSignerUrl, java.lang.String batchPostSignerUrl, java.lang.String extraParams) throws es.gob.afirma.core.AOException, java.security.PrivilegedActionException
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="signbatch"> <xs:complexType> <xs:sequence> <xs:element name="singlesign" maxOccurs="unbounded" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="datasource"/> <xs:element name="format"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="XAdES"/> <xs:enumeration value="CAdES"/> <xs:enumeration value="PAdES"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="suboperation"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="sign"/> <xs:enumeration value="cosign"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="extraparams"> <xs:simpleType> <xs:restriction base="xs:base64Binary" /> </xs:simpleType> </xs:element> <xs:element name="signsaver"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="class"/> <xs:element name="config"> <xs:simpleType> <xs:restriction base="xs:base64Binary" /> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute type="xs:string" name="id" use="required"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute type="xs:string" name="stoponerror" use="optional"/> <xs:attribute type="xs:string" name="algorithm" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="SHA1withRSA"/> <xs:enumeration value="SHA256withRSA"/> <xs:enumeration value="SHA384withRSA"/> <xs:enumeration value="SHA512withRSA"/> </xs:restriction> </xs:simpleType> <xs:attribute> </xs:complexType> </xs:element> </xs:schema>Un ejemplo de definición XML de lote de firmas podría ser este (ejemplo con dos firmas en el lote):
<?xml version="1.0" encoding="UTF-8" ?> <signbatch stoponerror="true" algorithm="SHA1withRSA"> <singlesign id="f8526f7b-d30a-4720-9e35-fe3494217944"> <datasource>http://google.com</datasource> <format>XAdES</format> <suboperation>sign</suboperation> <extraparams>Iw0KI1RodSBBdW[...]QNCg==</extraparams> <signsaver> <class>es.gob.afirma.signers.batch.SignSaverFile</class> <config>Iw0KI1RodSBBdWcgMT[...]wNCg==</config> </signsaver> </singlesign> <singlesign id="0e9cc5de-63ee-45ee-ae02-4a6591ab9a46"> <datasource>SG9sYSBNdW5kbw==</datasource> <format>CAdES</format> <suboperation>sign</suboperation> <extraparams>Iw0KI1RodSBBdWc[...]NCg==</extraparams> <signsaver> <class>es.gob.afirma.signers.batch.SignSaverFile</class> <config>Iw0KI1RodSBBdWcgMTM[...]Cg==</config> </signsaver> </singlesign> </signbatch>
batchB64
- XML de definición del lote de firmas.batchPreSignerUrl
- URL del servicio remoto de preproceso de lotes de firma.batchPostSignerUrl
- URL del servicio remoto de postproceso de lotes de firma.extraParams
- Parámetros adicionales para es establecimiento de filtros de
certificados (se ignorarán todos los parámetros
proporcionados que no estén relacionados con los filtros).<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="signs"> <xs:complexType> <xs:sequence> <xs:element name="sign" maxOccurs="unbounded" minOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="result"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="OK"/> <xs:enumeration value="KO"/> <xs:enumeration value="NP"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element type="xs:string" name="reason" minOccurs="0"/> </xs:sequence> <xs:attribute type="xs:string" name="id" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
es.gob.afirma.core.AOException
- En cualquier otro error.java.security.PrivilegedActionException
- Cuando ocurre un error de seguridad, típicamente en
la obtención de la clave y el certificado de firma.public java.lang.String selectCertificate(java.lang.String extraParams) throws es.gob.afirma.core.AOException, java.security.PrivilegedActionException, java.security.cert.CertificateEncodingException
CLAVE=VALOR
, en
donde CLAVE
es el nombre de la propiedad y VALOR
el valor asignado
a esta.extraParams
- Propiedades para la configuración de los filtro de
certificados.es.gob.afirma.core.AOException
- Cuando ocurre un error grave durante la selección del certificado.java.security.PrivilegedActionException
- Cuando ocurre un error de seguridad.java.security.cert.CertificateEncodingException
- Cuando no se haya podido decodificar el certificado.