
es.gob.afirma.signers.pades.PdfExtraParams Maven / Gradle / Ivy
Show all versions of afirma-crypto-pdf Show documentation
/* Copyright (C) 2011 [Gobierno de Espana]
* This file is part of "Cliente @Firma".
* "Cliente @Firma" is free software; you can redistribute it and/or modify it under the terms of:
* - the GNU General Public License as published by the Free Software Foundation;
* either version 2 of the License, or (at your option) any later version.
* - or The European Software License; either version 1.1 or (at your option) any later version.
* You may contact the copyright holder at: [email protected]
*/
package es.gob.afirma.signers.pades;
/** Parámetros adicionales para las firmas PAdES. */
public final class PdfExtraParams {
/** Si se establece a true
omite la inclusión de la
* política de certificación en el SigningCertificate,
* si se establece a false
se incluye siempre que el certificado
* la declare. */
static final String DO_NOT_INCLUDE_POLICY_ON_SIGNING_CERTIFICATE = "doNotIncludePolicyOnSigningCertificate"; //$NON-NLS-1$
/** Si se establece a true
se incluye en la firma únicamente el certificado del firmante (y no la cadena de
* certificación completa). Si no se establece o se establece a false
se incluirá toda la cadena
* de certificación (propiedad compartida con XAdES y CAdES). */
static final String INCLUDE_ONLY_SIGNNING_CERTIFICATE = "includeOnlySignningCertificate";//$NON-NLS-1$
/** Establece la fecha y hora indicadas como momento de la firma.
* Debe establecerse en el formato yyyy:MM:dd:HH:mm:ss
.
* Por ejemplo, la cadena 2010:12:25:12:30:01
indica el venticinco de diciembre de 2010 a las 12 horas,
* treinta minutos y un segundo.
* Se toma siempre como zona horaria la establecida en la máquina donde se ejecuta el firmador. */
static final String SIGN_TIME = "signTime";//$NON-NLS-1$
/** Si se establece a true
se permite firmar un PDF incluso si este contiene firmas previas
* no registradas dentro de campos Acrobat (AcroFields).
* El firmar un PDF que contenga firmas no registradas puede dar como resultado que se invaliden estas firmas previas,
* por lo que no se recomienda permitirlo.
* Si no se establece o se establece a false
, al intentar firmar un PDF que contenga firmas no registradas
* se lanza una excepción de tipo PdfHasUnregisteredSignaturesException
. */
static final String ALLOW_COSIGNING_UNREGISTERED_SIGNATURES = "allowCosigningUnregisteredSignatures";//$NON-NLS-1$
/** Nombre del sub-filtro en el diccionario PDF para indicar el tipo de la firma.
* Si no se indica este parámetro por defecto se usa adbe.pkcs7.detached
(firma PAdES básica).
* Es posible indicar ETSI.CAdES.detached
para generar una firma PAdES-BES, si bien el hacerlo puede causar
* que al añadir firmas adicionales al PDF se invaliden las ya existentes. */
static final String SIGNATURE_SUBFILTER = "signatureSubFilter";//$NON-NLS-1$
/** Si se establece a false
no se comprime el PDF resultante. Si no se establece o se establece a
* cualquier otro valor distinto de false
, el PDF de salida (firmado) se comprime para que ocupe
* menos tamaño. Esta propiedad sólo se aplica si se trata de un PDF v4 o superior, en versiones
* anteriores nunca se comprimen los PDF. */
static final String COMPRESS_PDF = "compressPdf";//$NON-NLS-1$
/** Si se establece a true
siempre crea una revisión del PDF incluso cuando el documento no contiene
* ninguna firma previa.
* Esto requiere que los documentos de entrada cumplan estrictamente la especificación PDF 1.7 (ISO 32000-1:2008),
* y puede crear incompatibilidades con documentos PDF acordes a la especificación 1.3 creados con bibliotecas
* antiguas, como por ejemplo QPDF.
* Si se establece a false
, no crea revisiones en documentos que no contengan firmas previas y sí las
* crea en documentos que ya contengan alguna firma.
* En los documentos cifrados siempre se crea una revisión, sea cual sea el valor de este parámetro. */
static final String ALWAYS_CREATE_REVISION = "alwaysCreateRevision";//$NON-NLS-1$
/** Imagen que se desea insertar en el PDF antes de que este sea firmado.
* La imagen debe proporcionarse en formato JPEG codificado en Base64.
* Si el documento ya contiene firmas es posible que se invaliden, por lo que conviene usarlo
* únicamente en documentos sin firmas previas. */
static final String IMAGE = "image";//$NON-NLS-1$
/** Página donde desea insertarse la imagen indicada mediante el parámetro image
.
* La numeración de las páginas comienza en uno.
* Si se indica -1 como número de página se inserta la imagen en la última página del documento.
* Si se indica 0 como número de página se inserta la imagen en todas las páginas del documento.
* Este parámetro es obligatorio, si no se indica una página válida no se insertará la imagen. */
static final String IMAGE_PAGE = "imagePage";//$NON-NLS-1$
/** Coordenada horizontal inferior izquierda de la posición de la imagen (indicada mediante el parámetro
* image
) dentro de la página.
* Es necesario indicar el resto de coordenadas de la imagen mediante los parámetros imagePositionOnPageLowerLeftY
,
* imagePositionOnPageUpperRightX
e imagePositionOnPageUpperRightY
.
* Es necesario indicar también una página de inserción en el parámetro imagePage
. */
static final String IMAGE_POSITION_ON_PAGE_LOWER_LEFTX = "imagePositionOnPageLowerLeftX";//$NON-NLS-1$
/** Coordenada vertical inferior izquierda de la posición de la imagen (indicada mediante el parámetro
* image
) dentro de la página.
* Es necesario indicar el resto de coordenadas de la imagen mediante los parámetros imagePositionOnPageLowerLeftX
,
* imagePositionOnPageUpperRightX
e imagePositionOnPageUpperRightY
.
* Es necesario indicar también una página de inserción en el parámetro imagePage
. */
static final String IMAGE_POSITION_ON_PAGE_LOWER_LEFTY = "imagePositionOnPageLowerLeftY";//$NON-NLS-1$
/** Coordenada horizontal superior derecha de la posición de la imagen (indicada mediante el parámetro
* image
) dentro de la página.
* Es necesario indicar el resto de coordenadas de la imagen mediante los parámetros imagePositionOnPageLowerLeftX
,
* imagePositionOnPageLowerLeftY
e imagePositionOnPageUpperRightY
.
* Es necesario indicar también una página de inserción en el parámetro imagePage
. */
static final String IMAGE_POSITION_ON_PAGE_UPPER_RIGHTX = "imagePositionOnPageUpperRightX";//$NON-NLS-1$
/** Coordenada vertical superior derecha de la posición de la imagen (indicada mediante el parámetro
* image
) dentro de la página.
* Es necesario indicar el resto de coordenadas de la imagen mediante los parámetros imagePositionOnPageLowerLeftX
,
* imagePositionOnPageLowerLeftY
e imagePositionOnPageUpperRightX
.
* Es necesario indicar también una página de inserción en el parámetro imagePage
. */
static final String IMAGE_POSITION_ON_PAGE_UPPER_RIGHTY = "imagePositionOnPageUpperRightY";//$NON-NLS-1$
/** Contenido a añadir como adjunto al PDF, en formato Base64 (el adjunto será el binario decodificado).
* Este parámetro requiere que se haya establecido también el parámetro attachFileName
. */
static final String ATTACH = "attach";//$NON-NLS-1$
/** Nombre de fichero para adjuntar el contenido binario indicado mediante attach
.
* Este parámetro requiere que se haya establecido también el parámetro attach
. */
static final String ATTACH_FILENAME = "attachFileName";//$NON-NLS-1$
/** Descripción del contenido binario indicado mediante attach
. */
static final String ATTACH_DESCRIPTION = "attachDescription";//$NON-NLS-1$
/** Configura si debe realizarse una firma de aprobación (por defecto) o certificada.
* Una firma de aprobación o de formulario se realiza sobre un campo de firma de formulario del documento (preexistente o creado automáticamente en el momento de la firma). Un documento puede contener tantas firmas de aprobación como necesite. Esta es la opción común de firma.
* Una firma certificada o de documento se aplica sobre un campo de firma identificado como de documento (preexistente o creado automáticamente en el momento de la firma). Un documento puede contener un único campo de este tipo y por tanto una única firma certificada. En caso de agregarse una firma certificada al documento, esta debe ser la primera que se agregue. Si hubiese alguna firma previa el resultado no sería válido.
* Independientemente de sus nombres, ambos tipos de firma aplican a todo el documento (lo firman por completo), sólo cambia la designación del campo en el que se almacenan.
* Una firma certificada restringe modificaciones posteriores sobre el documento. Según el nivel de certificación de esta firma se podrán hacer unos cambios u otros. El Cliente @firma permite configurar el nivel de certificación de una firma por medio del parámetro certificationLevel y un valor numérico:
*
* - 0 = Firma sin certificar. Esta sería una firma de aprobación. Es el valor por defecto.
* - 1 = Firma certificada de autor. Tras este tipo de firma certificada, no se permite ningún cambio posterior en el documento (no se pueden agregar firmas, ni rellenar formularios).
* - 2 = Firma certificada de autor para formularios. Tras este tipo de firma certificada, sólo se permite el relleno de los campos del formulario (no se pueden agregar firmas).
* - 3 = Firma certificada común. Tras este tipo de firma certificada, sólo se permite el relleno de los campos del formulario y la creación de firmas de aprobación.
*
*/
static final String CERTIFICATION_LEVEL = "certificationLevel";//$NON-NLS-1$
/** Versión del PDF de salida:
*
* - 2 = PDF 1.2
* - 3 = PDF 1.3
* - 4 = PDF 1.4
* - 5 = PDF 1.5
* - 6 = PDF 1.6
* - 7 = PDF 1.7
*
*/
static final String PDF_VERSION = "pdfVersion";//$NON-NLS-1$
/** Nombre del campo en donde insertar la firma.
* Si el documento PDF tiene ya un campo de firma pre-creado es posible utilizarlo para insertar la firma generada, referenciándolo
* por su nombre.
* Si se indica un nombre de campo de firma que no exista en el documento PDF proporcionado, se generará una excepción. */
public static final String SIGNATURE_FIELD = "signatureField";//$NON-NLS-1$
/** Página del documento PDF donde insertar la firma. Si no se establece o es -1 se
* usará la última página del documento PDF.
* Las páginas comienzan su numeración desde el uno.
* Este parámetro se ignora si se ha establecido valor al parámetro
* signatureField
, y necesita que se establezcan valores válidos a los
* parámetros signaturePositionOnPageLowerLeftX
, signaturePositionOnPageLowerLeftY
,
* signaturePositionOnPageUpperRightX
y signaturePositionOnPageUpperRightY
. */
public static final String SIGNATURE_PAGE = "signaturePage";//$NON-NLS-1$
/** Coordenada horizontal inferior izquierda de la posición del recuadro visible de la firma dentro de la página.
* Es necesario indicar el resto de coordenadas del recuadro mediante los parámetros signaturePositionOnPageLowerLeftY
,
* signaturePositionOnPageUpperRightX
y signaturePositionOnPageUpperRightY
.
* Si no se indica una página en el parámetro signaturePage
la firma se inserta en la última página
* del documento. */
public static final String SIGNATURE_POSITION_ON_PAGE_LOWER_LEFTX = "signaturePositionOnPageLowerLeftX";//$NON-NLS-1$
/** Coordenada vertical inferior izquierda de la posición del recuadro visible de la firma dentro de la página.
* Es necesario indicar el resto de coordenadas del recuadro mediante los parámetros signaturePositionOnPageLowerLeftX
,
* signaturePositionOnPageUpperRightX
y signaturePositionOnPageUpperRightY
.
* Si no se indica una página en el parámetro signaturePage
la firma se inserta en la última página
* del documento. */
public static final String SIGNATURE_POSITION_ON_PAGE_LOWER_LEFTY = "signaturePositionOnPageLowerLeftY";//$NON-NLS-1$
/** Coordenada horizontal superior derecha de la posición del recuadro visible de la firma dentro de la página.
* Es necesario indicar el resto de coordenadas del recuadro mediante los parámetros signaturePositionOnPageLowerLeftX
,
* signaturePositionOnPageLowerLeftY
y signaturePositionOnPageUpperRightY
.
* Si no se indica una página en el parámetro signaturePage
la firma se inserta en la última página
* del documento. */
public static final String SIGNATURE_POSITION_ON_PAGE_UPPER_RIGHTX = "signaturePositionOnPageUpperRightX";//$NON-NLS-1$
/** Coordenada vertical superior derecha de la posición del recuadro visible de la firma dentro de la página.
* Es necesario indicar el resto de coordenadas del recuadro mediante los parámetros signaturePositionOnPageLowerLeftX
,
* signaturePositionOnPageLowerLeftY
y signaturePositionOnPageUpperRightX
.
* Si no se indica una página en el parámetro signaturePage
la firma se inserta en la última página
* del documento. */
public static final String SIGNATURE_POSITION_ON_PAGE_UPPER_RIGHTY = "signaturePositionOnPageUpperRightY";//$NON-NLS-1$
/** Imagen JPEG codificada en Base64 de la rúbrica de la firma manuscrita que se desea aparezca como firma visible en el PDF. */
static final String SIGNATURE_RUBRIC_IMAGE = "signatureRubricImage";//$NON-NLS-1$
/**
Texto a escribir dentro de la "capa 2" de la firma visible.
Este texto se escribe únicamente si no se ha especificado una
imagen de rúbrica, y necesita que se indique la página y la situación dónde mostrar el recuadro de firma
mediante los parámetros signaturePositionOnPageLowerLeftX
, signaturePositionOnPageLowerLeftY
,
signaturePositionOnPageUpperRightX
, signaturePositionOnPageUpperRightY
y signaturePage
.
Este texto puede incluir una serie de palabras clave que serán sustituidas por los textos apropiados del titular o emisor del
certificado de firma:
- $$SUBJECTCN$$
- Nombre común (CN, Common Name) dentro del
X.500 Principal
del titular del certificado de firma.
- $$ISSUERCN$$
- Nombre común (CN, Common Name) dentro del
X.500 Principal
del emisor del certificado de firma.
- $$CERTSERIAL$$
- Número de serie del certificado de firma.
- $$SIGNDATE=
PATRÓN
$$
-
Fecha de la firma, donde
PATRÓN
debe indicar el formato en el que debe mostrarse la fecha, siguiendo el esquema
definido por Oracle para la clase SimpleDateFormat.
Así, por ejemplo, el texto "Firmado por $$SUBJECTCN$$ el día $$SIGNDATE=dd/MM/yyyy$$.
" resultará finalmente
en el PDF como "Firmado por Tomás García-Merás el día 04/01/2016.
" suponiendo que el CN del titular del certificado
de firma es Tomás García-Merás
y que la firma se realiza el 04/01/2016. */
static final String LAYER2_TEXT = "layer2Text";//$NON-NLS-1$
/** Tipo de letra a usar en el texto de la "capa 2" de la firma visible. Este parámetro requiere que se haya establecido también
* el parámetro layer2Text
.
Los valores admitidos son numéricos, correspondiendo:
*
* - 0 = Courier (tipo por defecto)
* - 1 = Helvética
* - 2 = Times Roman
* - 3 = Symbol
* - 4 = ZapfDingBats
*
*/
static final String LAYER2_FONTFAMILY = "layer2FontFamily";//$NON-NLS-1$
/** Tamaño de letra a usar en el texto de la "capa 2" de la firma visible. Este parámetro requiere que se haya establecido
también el parámetro layer2Text
.
Los valores admitidos son numéricos (y el valor por defecto es 12). */
static final String LAYER2_FONTSIZE = "layer2FontSize";//$NON-NLS-1$
/** Estilo del tipo de letra a usar en el texto de la "capa 2" de la firma visible. Este parámetro requiere que se haya establecido
* también el parámetro layer2Text
.
Los valores admitidos son numéricos, correspondiendo:
*
* - 0 = Normal (estilo por defecto)
* - 1 = Negrita
* - 2 = Cursiva
* - 3 = Negrita y cursiva
* - 4 = Subrayado
* - 8 = Tachado
*
* Es posible combinar estilos aplicando la operación lógica o sobre los valores numéricos a combinar. */
static final String LAYER2_FONTSTYLE = "layer2FontStyle";//$NON-NLS-1$
/** Color del texto de la "capa 2" de la firma visible. Este parámetro requiere que se haya establecido
* también el parámetro layer2Text
.
Los valores admitidos son textuales (se ignora entre mayúsculas
* y minúsculas), soportándose:
*
* - black = Negro (color por defecto)
* - white = Blanco
* - gray = Gris
* - lightGray = Gris claro
* - darkGray = Gris oscuro
* - red = Rojo
* - pink = Rosa
*
*/
static final String LAYER2_FONTCOLOR = "layer2FontColor";//$NON-NLS-1$
/** Razón por la que se realiza la firma (este dato se añade al diccionario PDF, y no a la propia firma). */
static final String SIGN_REASON = "signReason";//$NON-NLS-1$
/** Ciudad en la que se realiza la firma (este dato se añade al diccionario PDF, y no a la propia firma). */
static final String SIGNATURE_PRODUCTION_CITY = "signatureProductionCity";//$NON-NLS-1$
/** Contacto del firmante, usualmente una dirección de correo electrónico (este dato se añade al
* diccionario PDF, y no a la propia firma). */
static final String SIGNER_CONTACT = "signerContact";//$NON-NLS-1$
/** Identificador de la política de firma. Debe ser un OID (o una URN de tipo OID)
* que identifique unívocamente la política en formato ASN.1 procesable.
* (propiedad compartida con XAdES y CAdES) */
static final String POLICY_IDENTIFIER = "policyIdentifier";//$NON-NLS-1$
/** Huella digital del documento de política de firma (normalmente del mismo fichero en formato ASN.1 procesable).
* Si no se indica una huella digital y el parámetro policyIdentifier
no es una URL accesible
* universalmente se lanzará una Excepción, mientras que si no se indica una huella digital pero el parámetro
* policyIdentifier
es una URL accesible universalmente, se descargara el fichero apuntado por la URL para calcular la huella
* digital al vuelo. */
static final String POLICY_IDENTIFIER_HASH = "policyIdentifierHash";//$NON-NLS-1$
/** Algoritmo usado para el cálculo de la huella digital indicada en el parámetro policyIdentifierHash
.
* Es obligatorio indicarlo cuando se proporciona una huella digital distinta de 0
.
* (propiedad compartida con XAdES y CAdES). */
static final String POLICY_IDENTIFIER_HASH_ALGORITHM = "policyIdentifierHashAlgorithm";//$NON-NLS-1$
/** URL que apunta al documento descriptivo de la política de firma (normalmente un documento PDF con una descripción textual)
* (propiedad compartida con XAdES y CAdES). */
static final String POLICY_QUALIFIER = "policyQualifier";//$NON-NLS-1$
/** Contraseña de apertura del PDF (contraseña del propietario) si este estaba cifrado.
* No se soporta la firma de documentos PDF cifrados con certificados o con algoritmo AES256. */
static final String OWNER_PASSWORD = "ownerPassword";//$NON-NLS-1$
/** Evita cualquier interacción con el usuario si se establece a true
, si no se establece o se establece a false
* actúa normalmente (puede mostrar diálogos, por ejemplo, para solicitar las contraseñas de los PDF cifrados). Útil para
* los procesos desatendidos y por lotes. */
static final String HEADLESS = "headless";//$NON-NLS-1$
/** Si se establece a true
permite la firma o cofirma de PDF certificados sin consultarlo al usuario, si se establece a
* false
o cualquier otro valor se lanza una excepción en caso de intentar firmar o cofirmar un PDF certificado y
* si no se establece se mostrará un diálogo al usuario para que confirme que desea realizar la firma a pesar de que
* el resultado serán una firma no válida.
* Si el parámetro headless
está establecido a true
, no podrá mostrar el diálogo
* de confirmación así que llegados a este punto se lanzará una excepción.
* No se soporta el cifrado de documentos PDF con certificados o con algoritmo AES256. */
static final String ALLOW_SIGNING_CERTIFIED_PDFS = "allowSigningCertifiedPdfs";//$NON-NLS-1$
/** Tipo de sello de tiempo a aplicar:
*
* - 1 = Solo sello a nivel de firma.
* - 2 = Solo sello a nivel de documento.
* - 3 = Dos sellos, uno a nivel de firma y otro a nivel de documento.
*
*/
static final String TS_TYPE = "tsType";//$NON-NLS-1$
/** URL de la autoridad de sello de tiempo (si no se indica no se añade sello de tiempo). */
static final String TSA_URL = "tsaURL";//$NON-NLS-1$
/** Política de sellado de tiempo. */
static final String TSA_POLICY = "tsaPolicy";//$NON-NLS-1$
/** Algoritmo de huella digital a usar para el sello de tiempo (si no se establece se usa SHA-1). */
static final String TSA_HASH_ALGORITHM = "tsaHashAlgorithm";//$NON-NLS-1$
/** true
si se requiere el certificado de la TSA, false en caso contrario (si no se establece se asume true
). */
static final String TSA_REQUIRE_CERT = "tsaRequireCert";//$NON-NLS-1$
/** Nombre de usuario de la TSA. */
static final String TSA_USR = "tsaUsr";//$NON-NLS-1$
/** Contraseña del usuario de la TSA. Se ignora si no se ha establecido además tsaUsr
. */
static final String TSA_PWD = "tsaPwd";//$NON-NLS-1$
/** OID de la extensión a añadir a la petición al servidor de sello de tiempo (opcional). Solo se permite indicar una extensión. */
static final String TSA_EXTENSION_OID = "tsaExtensionOid";//$NON-NLS-1$
/** Valor, en binario convertido a Base64, de la extensión a añadir a la petición al servidor de sello de tiempo.
* Se ignora si no se ha establecido además tsaUsr
. */
static final String TSA_EXTENSION_VALUE_BASE64 = "tsaExtensionValueBase64";//$NON-NLS-1$
/** Indica si la extensión indicada en tsaExtensionOid
es crítica (valor true
) o no (valor false
).
* Se ignora si no se ha establecido además tsaUsr
. */
static final String TSA_EXTENSION_CRITICAL = "tsaExtensionCritical";//$NON-NLS-1$
/** Almacén de claves codificado en Base64 que contiene el certificado SSL cliente que pedirá la TSA al establecer la conexión HTTPS. */
static final String TSA_SSL_KEYSTORE = "tsaSslKeyStore";//$NON-NLS-1$
/** Contraseña del almacén de claves que contiene el certificado SSL cliente para las conexiones HTTPS. */
static final String TSA_SSL_KEYSTORE_PASSWORD = "tsaSslKeyStorePassword";//$NON-NLS-1$
/** Tipo del almacén de claves que contiene el certificado SSL cliente para las conexiones HTTPS.
* El formato JKS
puede no funcionar adecuadamente en Android. */
static final String TSA_SSL_KEYSTORE_TYPE = "tsaSslKeyStoreType";//$NON-NLS-1$
/** Almacén de confianza en base64 que contiene los certificados emisores de confianza del certificado SSL de la TSA. */
static final String TSA_SSL_TRUST_STORE = "tsaSslTrustStore";//$NON-NLS-1$
/** Contraseña del almacén de confianza que contiene los certificados emisores del certificado SSL de la TSA. */
static final String TSA_SSL_TRUST_STORE_PASSWORD = "tsaSslTrustStorePassword";//$NON-NLS-1$
/** Tipo del almacén de confianza que contiene los certificados emisores del certificado SSL de la TSA.
* El formato JKS
puede no funcionar adecuadamente en Android. */
static final String TSA_SSL_TRUST_STORE_TYPE = "tsaSslTrustStoreType";//$NON-NLS-1$
/** Si se indica a true
se utilizará SigningCertificateV2, si se indica cualquier otra cosa SigningCertificateV1.
* Si no se indica nada, se utilizará V1 para las firmas SHA1 y V2 para el resto (propiedad compartida con CAdES). */
static final String SIGNING_CERTIFICATE_V2 = "signingCertificateV2";//$NON-NLS-1$
/** Texto a escribir dentro de la "capa 4" de la firma visible.
* Este texto se escribe únicamente si no se ha especificado una imagen de rúbrica. */
static final String LAYER4_TEXT = "layer4Text";//$NON-NLS-1$
/** Contraseña del pdf en caso de se encuentre protegido contra modificaciones y/o aperturas. */
static final String USER_PASSWORD = "userPassword";//$NON-NLS-1$
/** Constructor vacío privado para que no se pueda instanciar la clase ya que es estático. */
private PdfExtraParams(){
// No instanciable
}
}