public final class AOXMLDSigSigner extends java.lang.Object implements AOSigner
Constructor and Description |
---|
AOXMLDSigSigner() |
Modifier and Type | Method and Description |
---|---|
byte[] |
cosign(byte[] data,
byte[] sign,
java.lang.String algorithm,
java.security.PrivateKey key,
java.security.cert.Certificate[] certChain,
java.util.Properties xParams)
Cofirma una firma en formato XMLdSig.
|
byte[] |
cosign(byte[] sign,
java.lang.String algorithm,
java.security.PrivateKey key,
java.security.cert.Certificate[] certChain,
java.util.Properties xParams)
Cofirma una firma en formato XMLdSig.
|
byte[] |
countersign(byte[] sign,
java.lang.String algorithm,
CounterSignTarget targetType,
java.lang.Object[] targets,
java.security.PrivateKey key,
java.security.cert.Certificate[] certChain,
java.util.Properties xParams)
Contrafirma firmas en formato XMLdSig.
|
byte[] |
getData(byte[] sign)
Recupera los datos originalmente firmados de una firma.
|
java.lang.String |
getSignedName(java.lang.String originalName,
java.lang.String inText)
Devuelve el nombre de fichero de firma recomendado para el resultado de firmar un fichero
con el nombre proporcionado.
|
AOTreeModel |
getSignersStructure(byte[] sign,
boolean asSimpleSignInfo)
Recupera el árbol de nodos de firma de una firma electrónica.
|
AOSignInfo |
getSignInfo(byte[] sign)
Obtiene la información general de un objeto de firma.
|
boolean |
isSign(byte[] sign)
Indica si un dato es una firma compatible con la implementación concreta.
|
boolean |
isValidDataFile(byte[] data)
Comprueba si el dato introducido es válido para ser firmado por
este manejador de firma.
|
byte[] |
sign(byte[] data,
java.lang.String algorithm,
java.security.PrivateKey key,
java.security.cert.Certificate[] certChain,
java.util.Properties xParams)
Firma datos en formato XMLDSig 1.0 (XML Digital Signature).
|
public byte[] sign(byte[] data, java.lang.String algorithm, java.security.PrivateKey key, java.security.cert.Certificate[] certChain, java.util.Properties xParams) throws AOException
En el caso de que se firma un fichero con formato XML que contenga hojas de estilo XSL, y siempre que no se haya establecido el parámetro ignoreStyleSheets a true, se sigue la siguiente convención para la firma es estas:
sign
in interface AOSimpleSigner
data
- Datos que deseamos firmar.algorithm
- Algoritmo a usar para la firma.
Se aceptan los siguientes algoritmos en el parámetro algorithm
:
AOSignConstants.SIGN_ALGORITHM_SHA1WITHRSA
)AOSignConstants.SIGN_ALGORITHM_SHA256WITHRSA
)AOSignConstants.SIGN_ALGORITHM_SHA384WITHRSA
)AOSignConstants.SIGN_ALGORITHM_SHA512WITHRSA
)key
- Clave privada a usar para firmarcertChain
- Cadena de certificados del firmantexParams
- Parámetros adicionales para la firma.
Se aceptan los siguientes valores en el parámetro xParams
:
AOSignConstants.SIGN_MODE_EXPLICIT
)AOSignConstants.SIGN_MODE_IMPLICIT
)AOSignConstants.SIGN_FORMAT_XMLDSIG_DETACHED
)AOSignConstants.SIGN_FORMAT_XMLDSIG_EXTERNALLY_DETACHED
)AOSignConstants.SIGN_FORMAT_XMLDSIG_ENVELOPED
)AOSignConstants.SIGN_FORMAT_XMLDSIG_ENVELOPING
)true
, si se establece a false
sí las firmatrue
, si se establece a false
actúa normalmente (sí las declara)
true
, si se establece a false
actúa
normalmente (puede mostrar diálogos, por ejemplo, para la dereferenciación de hojas de estilo enlazadas con rutas relativas).
Útil para los procesos desatendidos y por lotes
true
o false
, que debe
incluirse en la firma únicamente el certificado utilizado
para firmar y no su cadena de certificación completa.
Por defecto, se incluirá toda la cadena de certificación.
AOException
- Cuando ocurre cualquier problema durante el procesopublic byte[] getData(byte[] sign) throws AOInvalidFormatException
null
.getData
in interface AOSigner
sign
- Datos de firma o fichero firmado.AOInvalidFormatException
- Si no se ha introducido un fichero de firma válido o no
ha podido leerse la firma.public byte[] cosign(byte[] data, byte[] sign, java.lang.String algorithm, java.security.PrivateKey key, java.security.cert.Certificate[] certChain, java.util.Properties xParams) throws AOException
Este método firma todas las referencias a datos declaradas en la firma original, ya apunten estas a datos, hojas de estilo o cualquier otro elemento. En cada referencia firmada se introduciran las mismas transformaciones que existiesen en la firma original.
A nivel de formato interno, cuando cofirmamos un documento ya firmado previamente, esta
firma previa no se modifica. Si tenemos en cuenta que XAdES es en realidad un subconjunto
de XMLDSig, el resultado de una cofirma XMLdSig sobre un documento firmado previamente con
XAdES (o viceversa), son dos firmas independientes, una en XAdES y otra en XMLDSig.
Dado que todas las firmas XAdES son XMLDSig pero no todas las firmas XMLDSig son XAdES,
el resultado global de la firma se adecúa al estandar mas amplio, XMLDSig en este caso.
cosign
in interface AOCoSigner
data
- No se utiliza.sign
- Firma que se desea cofirmar.algorithm
- Algoritmo a usar para la firma.
Se aceptan los siguientes algoritmos en el parámetro algorithm
:
AOSignConstants.SIGN_ALGORITHM_SHA1WITHRSA
)AOSignConstants.SIGN_ALGORITHM_SHA256WITHRSA
)AOSignConstants.SIGN_ALGORITHM_SHA384WITHRSA
)AOSignConstants.SIGN_ALGORITHM_SHA512WITHRSA
)key
- Clave privada a usar para firmarcertChain
- Cadena de certificados del firmantexParams
- Parámetros adicionales para la firma.
Se aceptan los siguientes valores en el parámetro xParams
:
true
o false
, que debe
incluirse en la firma únicamente el certificado utilizado
para firmar y no su cadena de certificación completa.
Por defecto, se incluirá toda la cadena de certificación.
AOException
- Cuando ocurre cualquier problema durante el procesopublic byte[] cosign(byte[] sign, java.lang.String algorithm, java.security.PrivateKey key, java.security.cert.Certificate[] certChain, java.util.Properties xParams) throws AOException
Este método firma todas las referencias a datos declaradas en la firma original, ya apunten estas a datos, hojas de estilo o cualquier otro elemento. En cada referencia firmada se introduciran las mismas transformaciones que existiesen en la firma original.
A nivel de formato interno, cuando cofirmamos un documento ya firmado previamente, esta
firma previa no se modifica. Si tenemos en cuenta que XAdES es en realidad un subconjunto
de XMLDSig, el resultado de una cofirma XMLdSig sobre un documento firmado previamente con
XAdES (o viceversa), son dos firmas independientes, una en XAdES y otra en XMLDSig.
Dado que todas las firmas XAdES son XMLDSig pero no todas las firmas XMLDSig son XAdES,
el resultado global de la firma se adecúa al estandar mas amplio, XMLDSig en este caso.
cosign
in interface AOCoSigner
sign
- Firma que se desea cofirmar.algorithm
- Algoritmo a usar para la firma.
Se aceptan los siguientes algoritmos en el parámetro algorithm
:
AOSignConstants.SIGN_ALGORITHM_SHA1WITHRSA
)AOSignConstants.SIGN_ALGORITHM_SHA256WITHRSA
)AOSignConstants.SIGN_ALGORITHM_SHA384WITHRSA
)AOSignConstants.SIGN_ALGORITHM_SHA512WITHRSA
)key
- Clave privada a usar para firmarcertChain
- Cadena de certificados del firmantexParams
- Parámetros adicionales para la firma.
Se aceptan los siguientes valores en el parámetro xParams
:
true
o false
, que debe
incluirse en la firma únicamente el certificado utilizado
para firmar y no su cadena de certificación completa.
Por defecto, se incluirá toda la cadena de certificación.
AOException
- Cuando ocurre cualquier problema durante el procesopublic byte[] countersign(byte[] sign, java.lang.String algorithm, CounterSignTarget targetType, java.lang.Object[] targets, java.security.PrivateKey key, java.security.cert.Certificate[] certChain, java.util.Properties xParams) throws AOException
Este método contrafirma los nodos de firma indicados de un documento de firma.
countersign
in interface AOCounterSigner
sign
- Documento con las firmas iniciales.algorithm
- Algoritmo a usar para la firma.
Se aceptan los siguientes algoritmos en el parámetro algorithm
:
targetType
- Mecanismo de selección de los nodos de firma que se deben
contrafirmar.
Las distintas opciones son:
target
target
Cada uno de estos tipos se define en CounterSignTarget
.
targets
- Listado de nodos o firmantes que se deben contrafirmar según el
targetType
seleccionado.key
- Clave privada a usar para firmar.certChain
- Cadena de certificados del firmante.xParams
- Parámetros adicionales para la firma.
Se aceptan los siguientes valores en el parámetro xParams
:
true
o false
, que debe
incluirse en la firma únicamente el certificado utilizado
para firmar y no su cadena de certificación completa.
Por defecto, se incluirá toda la cadena de certificación.AOException
- Cuando ocurre cualquier problema durante el procesopublic AOTreeModel getSignersStructure(byte[] sign, boolean asSimpleSignInfo)
AOSimpleSignInfo
con la
información básica de las firmas individuales, según
el valor del parámetro asSimpleSignInfo
. Los nodos se
mostrarán en el mismo orden y con la misma estructura con el que
aparecen en la firma electrónica.getSignersStructure
in interface AOSigner
sign
- Firma electrónica de la que se desea obtener la estructura.asSimpleSignInfo
- Si es true
se devuelve un árbol con la
información básica de cada firma individual
mediante objetos AOSimpleSignInfo
, si es false
un árbol con los nombres (CN X.500) de los
titulares de los certificados.null
en caso de error.public boolean isSign(byte[] sign)
public boolean isValidDataFile(byte[] data)
isValidDataFile
in interface AOSigner
data
- Dato que deseamos comprobar.true
si el dato es susceptible de ser firmado por la implementación concreta,
false
en caso contrario.public java.lang.String getSignedName(java.lang.String originalName, java.lang.String inText)
getSignedName
in interface AOSigner
originalName
- Nombre del fichero original que se firmainText
- Partícula intermedia que agregar al nombre del fichero de
firma.public AOSignInfo getSignInfo(byte[] sign) throws AOException
getSignInfo
in interface AOSigner
sign
- Firma que se desea analizar.AOInvalidFormatException
- Cuando la firma introducida no es un objeto de firma
reconocido por este manejador.AOException
- Ocurrió un error durante la recuperación de los
datos.