// ************** ATTACHED o DETACHED ******************
/**
* Inclusion de datos por defecto: Fijado a INCLUIDOS NO
* @constant
*/
var DATOS_INCLUIDOS_DEFECTO = false;//Por defecto detached
/**
* Los datos originales se incluyen en la firma
* @constant
*/
var DATOS_INCLUIDOS_SI = true;
/**
* Los datos originales NO se incluyen en la firma
* @constant
*/
var DATOS_INCLUIDOS_NO = false;
// ************** FORMATO ******************
/**
* Formato de firma por defecto (CAdES)
* @constant
*/
var FORMATO_DEFECTO = 7; //MT_CAdES
/**
* Formato de firma CAdES
* @constant
*/
var FORMATO_CADES = 7; //MT_CAdES;
/**
* Formato de firma XAdES
* @constant
*/
var FORMATO_XADES = 5; //MT_XADES;
/**
* Formato de firma PAdES
* @constant
*/
var FORMATO_PADES = 9; //MT_PADES;
// ************** ENVOLTORIO XML ******************
/**
* Envoltorio por defecto para las firmas XAdES
* @constant
*/
var ENVOLTORIO_DEFECTO = 'Enveloped'; //ATACHED_ENVELOPED;
/**
* Envoltorio de tipo ENVELOPED para las firmas XAdES (ENVELOPED)
* @constant
*/
var ENVOLTORIO_ATTACHED_ENVELOPED = 'Enveloped'; //ATACHED_ENVELOPED;
/**
* Envoltorio de tipo ENVELOPING para las firmas XAdES (ENVELOPED)
* @constant
*/
var ENVOLTORIO_ATTACHED_ENVELOPING = 'Enveloping'; //ATACHED_ENVELOPING;
/**
* Tipo de firma multiple por defecto (firma NO multiple, un solo firmante)
* @constant
*/
var TIPO_FMULTIPLE_DEFECTO = 0; //FIRMA SENCILLA
/**
* Tipo de firma NO multiple, un solo firmante
* @constant
*/
var TIPO_FMULTIPLE_NO = 0; //FIRMA SENCILLA
/**
* Tipo de firma multiple secuencial, el segundo firmante firma el documento y la firma anterior.
* No se soporta firma secuencial, las firmas secuenciales que se soliciten seran tratadas como paralelas
* @constant
* @deprecated
*/
var TIPO_FMULTIPLE_SECUENCIAL = 1;
/**
* Tipo de firma multiple paralela, el segundo firmante deja su firma al mismo nivel que el primer firmante
* @constant
*/
var TIPO_FMULTIPLE_PARALELA = 2;
// ************** ALGORITMO RESUMEN ******************
/**
* Algoritmo de resumen (hash) por defecto para las firmas
* @constant
*/
var ALGORITMO_RESUMEN_DEFECTO = '2.16.840.1.101.3.4.2.3'; //HASH_SHA_512
/**
* Algoritmo de resumen (hash) SHA-1
* @constant
* @deprecated
*/
var ALGORITMO_RESUMEN_SHA_1 = "1.3.14.3.2.26"; //HASH_SHA_1
/**
* Algoritmo de resumen (hash) SHA-256
* @constant
*/
var ALGORITMO_RESUMEN_SHA_256 = "2.16.840.1.101.3.4.2.1"; //HASH_SHA_256
/**
* Algoritmo de resumen (hash) SHA-384
* @constant
*/
var ALGORITMO_RESUMEN_SHA_384 = "2.16.840.1.101.3.4.2.2"; //HASH_SHA_384
/**
* Algoritmo de resumen (hash) SHA-512
* @constant
*/
var ALGORITMO_RESUMEN_SHA_512 = "2.16.840.1.101.3.4.2.3"; //HASH_SHA_512
// ************** DATOS DE LA POLITICA DE FIRMA ******************
//Etiquetas globales de políticas (campo expPolicy)
/**
* Identificador de la politica de la AGE. Equivalente a fijar los siguientes valores:
* - CAdES:
* - policyIdentifier=2.16.724.1.3.1.1.2.1.9
* - policyIdentifierHash=G7roucf600+f03r/o0bAOQ6WAs0=
* - policyIdentifierHashAlgorithm=http://www.w3.org/2000/09/xmldsig#sha1
* - policyQualifier=https://sede.administracion.gob.es/politica_de_firma_anexo_1.pdf
* - mode=implicit (si el doc es < 1MB o explicit si es > 1MB)
* - XAdES:
* - policyIdentifier=urn:oid:2.16.724.1.3.1.1.2.1.9
* - policyIdentifierHash=G7roucf600+f03r/o0bAOQ6WAs0=
* - policyIdentifierHashAlgorithm=http://www.w3.org/2000/09/xmldsig#sha1
* - policyQualifier=https://sede.administracion.gob.es/politica_de_firma_anexo_1.pdf
* - format=XAdES Detached
* - PAdES:
* - policyIdentifier=2.16.724.1.3.1.1.2.1.9
* - policyIdentifierHash=G7roucf600+f03r/o0bAOQ6WAs0=
* - policyIdentifierHashAlgorithm=http://www.w3.org/2000/09/xmldsig#sha1
* - policyQualifier=https://sede.administracion.gob.es/politica_de_firma_anexo_1.pdf
*/
var POLITICA_AGE = 'FirmaAGE';
/**
* Identificador de la politica de Factura Elctronica. Establecerá automáticamente las propiedades necesarias
* para la firma de facturas electrónicas, incluida la política de firma. Las firmas generadas con este formato
* siempre son según la especificación 3.1 de factura electrónica.
*/
var POLITICA_FACTURAE = 'FacturaE';
//OIDs politicas
/**
* OID de la politica por defecto para firmas
* @constant
*/
var OID_POLITICA_DEFECTO = '2.16.724.1.3.1.1.2.1.9';;
/**
* OID de la politica de la AGE en su v1.8 para firmas CAdES o PAdES
* @constant
*/
var OID_POLITICA_AGE_v18_CADES = '2.16.724.1.3.1.1.2.1.8'; //Id de política de la AGE para formatos CAdES y PAdES
/**
* OID de la politica de la AGE en su v1.8 para firmas XAdES
* @constant
*/
var OID_POLITICA_AGE_v18_XADES = 'urn:oid:2.16.724.1.3.1.1.2.1.8'; //Id de política de la AGE para formato XAdES
/**
* OID de la politica de la AGE en su v1.9 para firmas CAdES o PAdES
* @constant
*/
var OID_POLITICA_AGE_v19_CADES = '2.16.724.1.3.1.1.2.1.9'; //Id de política de la AGE para formatos CAdES y PAdES
/**
* OID de la politica de la AGE en su v1.9 para firmas XAdES
* @constant
*/
var OID_POLITICA_AGE_v19_XADES = 'urn:oid:2.16.724.1.3.1.1.2.1.9'; //Id de política de la AGE para formato XAdES
/**
* OID de la politica de FacturaE en su v3.0 para firmas XAdES
* @constant
*/
var OID_POLITICA_FACTURAE_v30_XADES = 'http://www.facturae.es/politica%20de%20firma%20formato%20facturae/politica%20de%20firma%20formato%20facturae%20v3_0.pdf'; //Id de política de FacturaE
/**
* OID de la politica de FacturaE en su v3.1 para firmas XAdES
* @constant
*/
var OID_POLITICA_FACTURAE_v31_XADES = 'http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf'; //Id de política de FacturaE
//Hash politicas
/**
* Resumen de la politica de la politica por defecto para firmas
* @constant
*/
var RESUMEN_POLITICA_DEFECTO = 'G7roucf600+f03r/o0bAOQ6WAs0=';
/**
* Algoritmo del resumen de la politica de la politica por defecto para firmas
* @constant
*/
var ALGORITMO_RESUMEN_POLITICA_DEFECTO = '1.3.14.3.2.26'
/**
* Resumen de la politica de la AGE en su v1.8 para firmas CAdES o PAdES
* @constant
*/
var RESUMEN_SHA1_POLITICA_AGE_v18_CADES = '7SxX3erFuH31TvAw9LZ70N7p1vA=';
/**
* Resumen de la politica de la AGE en su v1.8 para firmas XADES
* @constant
*/
var RESUMEN_SHA1_POLITICA_AGE_v18_XADES = 'VYICYpNOjso9g1mBiXDVxNORpKk=';
/**
* Resumen de la politica de la AGE en su v1.9 para firmas CAdES o PAdES
* @constant
*/
var RESUMEN_SHA1_POLITICA_AGE_v19_CADES = 'G7roucf600+f03r/o0bAOQ6WAs0=';
/**
* Resumen de la politica de la AGE en su v1.9 para firmas XADES
* @constant
*/
var RESUMEN_SHA1_POLITICA_AGE_v19_XADES = 'G7roucf600+f03r/o0bAOQ6WAs0=';
/**
* Resumen de la politica de FacturaE en su v3.0 para firmas XAdES
* @constant
*/
var RESUMEN_SHA1_POLITICA_FACTURAE_v30 = 'HQvPemjDslVpcNmaJPpbHzhdZ50=';
/**
* Resumen de la politica de FacturaE en su v3.1 para firmas XAdES
* @constant
*/
var RESUMEN_SHA1_POLITICA_FACTURAE_v31 = 'Ohixl6upD6av8N7pEvDABhEL6hM=';
//URIs de las politicas
/**
* URI de la politica de la politica por defecto para firmas
* @constant
*/
var URI_POLITICA_DEFECTO = 'https://sede.060.gob.es/politica_de_firma_anexo_1.pdf';
/**
* URI de la politica de firma de la AGE en su v1.8 en formato PDF
* @constant
*/
var URI_POLITICA_AGE_v18_PDF = 'http://administracionelectronica.gob.es/es/ctt/politicafirma/politica_firma_AGE_v1_8.pdf';
/**
* URI de la politica de firma de la AGE en su v1.8 en formato XML
* @constant
*/
var URI_POLITICA_AGE_v18_XML = 'http://administracionelectronica.gob.es/es/ctt/politicafirma/politica_firma_AGE_v1_8.xml';
/**
* URI de la politica de firma de la AGE en su v1.9 en formato PDF
* @constant
*/
var URI_POLITICA_AGE_v19_PDF = 'https://sede.060.gob.es/politica_de_firma_anexo_1.pdf';
/**
* URI de la politica de firma de la AGE en su v1.9 en formato XML
* @constant
*/
var URI_POLITICA_AGE_v19_XML = 'https://sede.060.gob.es/politica_de_firma_anexo_1.pdf';
/**
* URI de la politica de firma de FacturaE en su v3.0 en formato PDF
* @constant
*/
var URI_POLITICA_FACTURAE_v30_PDF = 'http://www.facturae.es/politica%20de%20firma%20formato%20facturae/politica%20de%20firma%20formato%20facturae%20v3_0.pdf';
/**
* URI de la politica de firma de FacturaE en su v3.1 en formato PDF
* @constant
*/
var URI_POLITICA_FACTURAE_v31_PDF = 'http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf';
//Descripcion politica
/**
* Descripcion de la politica de la politica por defecto para firmas
* @constant
*/
var DESCRIPCION_POLITICA_DEFECTO = 'PolÃtica de firma electrónica para la Administración General del Estado (v1.9)';
/**
* Descripcion de la politica de firma de la AGE en su v1.8
* @constant
*/
var DESCRIPCION_POLITICA_AGE_v18 = 'Política de firma electrónica para la Administración General del Estado (v1.8)';
/**
* Descripcion de la politica de firma de la AGE en su v1.9
* @constant
*/
var DESCRIPCION_POLITICA_AGE_v19 = 'Política de firma electrónica para la Administración General del Estado (v1.9)';
/**
* Descripcion de la politica de firma de FacturaE en su v3.0 en formato PDF
* @constant
*/
var DESCRIPCION_POLITICA_FACTURAE_v30 = 'Facturación electrónica con formato Facturae (v3.0)';
/**
* Descripcion de la politica de firma de FacturaE en su v3.1 en formato PDF
* @constant
*/
var DESCRIPCION_POLITICA_FACTURAE_v31 = 'Facturación electrónica con formato Facturae (v3.1)';
// ************** MIME TYPE ******************
/**
* Mime Type del documento original
* @constant
*/
var MIME_TYPE_DEFECTO = 'application/pdf';
/**
* Mime Type del formato PDF
* @constant
*/
var MIME_TYPE_PDF = 'application/pdf';
/**
* Crea los parametros de firma en cliente Con los siguientes parametros por defecto:
*
* - No incluye los datos originales en la firma (Detached)
* - Formato por defecto (CAdES)
* - Firma sencilla (no multiple)
* - No usa resumen del documento original
* - Con la politica de la AGE
* - OID del formato de los datos originales = PKCS #7 signed data
* - MimeType del formato de los datos originales: PDF
* - No es firma en bloque (firma en bloque deprecada)
* - No almacena en fichero (interaccion con sistema de ficheros deprecada)
*
* @class Representa los parametros de firma en cliente
* @constructor
*/
var ParametroFirmaCliente = function () {
this.bAlmacenaEnFichero = false;
this.bFirmaBloque = false;
this.bDatosIncluidos = DATOS_INCLUIDOS_DEFECTO;
this.iFormato = FORMATO_DEFECTO;
this.sAlgoritmoFirma = ALGORITMO_RESUMEN_DEFECTO;
this.iTipoFMultiple = TIPO_FMULTIPLE_DEFECTO;
this.bUsaResumen = false;
this.sPoliticaFirma = POLITICA_AGE;
/*this.sIDPoliticaFirma = OID_POLITICA_DEFECTO;
this.sResumenPolitica = RESUMEN_POLITICA_DEFECTO;
this.sAlgResumenPolitica = ALGORITMO_RESUMEN_POLITICA_DEFECTO;
this.sURIPolitica = URI_POLITICA_DEFECTO;
this.sDescripcionPolitica = DESCRIPCION_POLITICA_DEFECTO;*/
this.sOIDFormatoDatosOriginales = '1.2.840.113549.1.7.1';
this.sMimeTypeFormatoDatosOriginales = MIME_TYPE_DEFECTO;
this.iXMLTipoEnvoltorio = ENVOLTORIO_DEFECTO;
this.bUsaManifest = false;
this.fCallbackHandlerExito = null;
this.fCallbackHandlerError = null;
//Configuracion por defecto para PAdES
this.sFirmaVisible = 'want';
this.sUsrConfigAparienciaFirma = 'custom';
this.sPaginas = 'all';
//30x10x10x30 --> 3*x + 80 = 600; x = 170
this.iEsquinaAbajoIzquierdaX = 30;
this.iEsquinaAbajoIzquierdaY = 50;
this.iEsquinaArribaDerechaX = this.iEsquinaAbajoIzquierdaX + 170;
this.iEsquinaArribaDerechaY = this.iEsquinaAbajoIzquierdaY + 80;
this.sNombreFirmante='Documento firmado electronicamente por: $$SUBJECTCN$$';
this.iFuenteTextoFirma = 1; //Helvetica
this.iEstiloTextoFirma = 2; //Cursiva
}
/**
* @deprecated
* Establece la posicion del certificado seleccionado dentro de la combo de certificados. No tiene sentido para la firma con el Cliente MCF
* @param {int} iPosicionCombo Posicion del certificado seleccionado en la combo.
*/
ParametroFirmaCliente.prototype.setPosicionCombo = function(iPosicionCombo) {
this.iPosicionCombo = iPosicionCombo;
};
/**
* Establece el algoritmo de firma que se utilizara
* @param {int} sAlgoritmoFirma Algoritmo de firma. Valor por defecto: ALGORITMO_RESUMEN_DEFECTO
*/
ParametroFirmaCliente.prototype.setAlgoritmoFirma = function(sAlgoritmoFirma) {
this.sAlgoritmoFirma = sAlgoritmoFirma;
};
/**
* Indica si el documento firmado debe almacenarse en un fichero mediante una llamada al sistema
* @param {boolean} bAlmacenaEnFichero Indica si el documento firmado debe almacenarse en un fichero mediante una llamada al sistema
* @deprecated
*/
ParametroFirmaCliente.prototype.setAlmacenaEnFichero = function(bAlmacenaEnFichero) {
this.bAlmacenaEnFichero = bAlmacenaEnFichero;
};
/**
* Datos que deben ser firmados en formato Base64 (si no es XAdES). Si este parametro es 'null' se le preguntara al usuario
* mediante un dialogo que fichero quiere firmar (dependiendo de entorno -SO y Navegador-)
* @param {String} sDatosAFirmar Datos que deben ser firmados en formato Base64 (si no es XAdES) o XML (si es XAdES). Si este parametro es 'null'
* se le preguntara al usuario mediante un dialogo que fichero quiere firmar.
*/
ParametroFirmaCliente.prototype.setDatosAFirmar = function(sDatosAFirmar) {
this.sDatosAFirmar = sDatosAFirmar;
};
/**
* Elemento de tipo input en el que se quieren guardar los datos firmados. Si este parametro es 'null' no se guardara
* en ningun sitio
* @param {HTML Elem} oDatosFirmados Elemento de tipo input en el que se quieren guardar los datos firmados. Si este parametro es 'null' no se guardara
* en ningun sitio
*/
ParametroFirmaCliente.prototype.setDatosFirmados = function(oDatosFirmados) {
//Cambio la posicion de la segunda firma
this.iEsquinaAbajoIzquierdaX = 210; //30 (margen) + 170 (firma1) + 10 (margen interior);
this.iEsquinaArribaDerechaX = this.iEsquinaAbajoIzquierdaX + 170;
this.oDatosFirmados = oDatosFirmados;
};
/**
* Formulario que debe someterse tras la firma del documento. Si este parametro es 'null' no se realizara ningun
* submit.
* @param {HTML Elem} oFormSubmit Formulario que debe someterse tras la firma del documento. Si este parametro es 'null' no se realizara ningun
* submit.
*/
ParametroFirmaCliente.prototype.setFormSubmit = function(oFormSubmit) {
this.oFormSubmit = oFormSubmit;
};
/**
* Boton que se "pulsará" tras la firma del documento. Si este parametro es 'null' no se realizara ninguna acción.
* @param {HTML Elem} oClickButtonOnSuccess Boton que se "pulsará" tras la firma del documento. Si este parametro es 'null' no se realizara ninguna acción.
*/
ParametroFirmaCliente.prototype.setClickButtonOnSuccess = function(oClickButtonOnSuccess) {
this.oClickButtonOnSuccess = oClickButtonOnSuccess;
};
/**
* Indica (en combinacion con sDatosAFirmar o sResumenDatosAFirmar distinto de null) si debe considerarse que los datos a firmar son varios
* documentos (separados por el caracter ','). Los documentos firmados tambien se devolveran separados por ',' tanto en el valor que devuelve la
* funcion como en el campo indicado por el parametro oDatosFirmados de haberse especificado
* @param {boolean} bFirmaBloque Indica (en combinacion con sDatosAFirmar o sResumenDatosAFirmar distinto de null) si debe considerarse que los
* datos a firmar son varios documentos (separados por el caracter ','). Los documentos firmados tambien se devolveran separados por ',' tanto
* en el valor que devuelve la funcion como en el campo indicado por el parametro oDatosFirmados de haberse especificado
* @deprecated
*/
ParametroFirmaCliente.prototype.setFirmaBloque = function(bFirmaBloque) {
this.bFirmaBloque = bFirmaBloque;
};
/**
* Indica si los datos que se han firmado deben guardarse junto a la firma o por separado (solo si formato de firma
* es CADES).
* @param {boolean} bDatosIncluidos Indica si los datos que se han firmado deben guardarse junto a la firma o por separado (solo si formato de firma
* es CADES). Posibles valores:
* - DATOS_INCLUIDOS_DEFECTO - Valor de inclusion por defecto (datos incluidos)
* - DATOS_INCLUIDOS_SI - Datos incluidos dentro del documento firmado (attached)
* - DATOS_INCLUIDOS_NO - Datos no incluidos dentro del documento firmado (detached)
*/
ParametroFirmaCliente.prototype.setDatosIncluidos = function(bDatosIncluidos) {
this.bDatosIncluidos = bDatosIncluidos;
};
/**
* Formato de la firma.
* @param {int} iFormato Formato de la firma. Posibles valores
* - FORMATO_DEFECTO - Valor de inclusion por defecto (CAdES)
* - FORMATO_CADES - CAdES (CMS Advanced Electronic Signature)
* - FORMATO_XADES - XAdES (XML Advanced Electronic Signature)
* - FORMATO_PADES - PAdES (PDF Advanced Electronic Signature)
*/
ParametroFirmaCliente.prototype.setFormato = function(iFormato) {
this.iFormato = iFormato;
};
/**
* En el caso de que se eligiera el formato de firma XAdES, indica la forma de la firma.
* @param {int} iXMLTipoEnvoltorio En el caso de que se eligiera el formato de firma XAdES, indica la forma de la firma. Posibles valores:
* - ENVOLTORIO_DEFECTO - Forma de la firma XAdES por defecto (Enveloped)
* - ENVOLTORIO_ATTACHED_ENVELOPED - Adjunta 'Enveloped'
* - ENVOLTORIO_ATTACHED_ENVELOPING - Adjunta 'Enveloping'
*/
ParametroFirmaCliente.prototype.setXMLTipoEnvoltorio = function(iXMLTipoEnvoltorio) {
this.iXMLTipoEnvoltorio = iXMLTipoEnvoltorio;
};
/**
* Indica que la firma XAdES generada sera de tipo Manifest. Si se establece el valor a 'true' será necesario indicar la(s) URI(s) -arrManifestURI-,
* la(s) huella(s) digital(es) (hash) de los datos firmados -arrManifestHash- y el(los) mimeType(s) de los datos firmados -arrManifestMimeType-
* @param {boolean} bUsaManifest Indica que la firma generada sera de tipo Manifest
*/
ParametroFirmaCliente.prototype.setUsaManifest = function(bUsaManifest) {
this.bUsaManifest = bUsaManifest;
};
/**
* Indica las URIs que se desean firmar mediante XAdES Manifest
* @param {String[]} arrManifestURI URIs que se desean firmar mediante XAdES Manifest
*/
ParametroFirmaCliente.prototype.setManifestURI = function(arrManifestURI) {
this.arrManifestURI = arrManifestURI;
};
/**
* Indica los resumenes de los contenidos de las URIs que se desean firmar mediante XAdES Manifest calculados con el algoritmo
* indicado en sAlgoritmoFirma
* @param {String[]} arrManifestHash Resumenes de los contenidos de las URIs que se desean firmar mediante XAdES Manifest
*/
ParametroFirmaCliente.prototype.setManifestHash = function(arrManifestHash) {
this.arrManifestHash = arrManifestHash;
};
/**
* Indica los mimeType de los contenidos de las URIs que se desean firmar mediante XAdES Manifest
* @param {String[]} arrManifestMimeType MimeType de los contenidos de las URIs que se desean firmar mediante XAdES Manifest
*/
ParametroFirmaCliente.prototype.setManifestMimeType = function(arrManifestMimeType) {
this.arrManifestMimeType = arrManifestMimeType;
};
/**
* Identificador del elemento XML a firmar (solo para XAdES)
* @param {String} sXMLElementoAFirmar Identificador del elemento XML a firmar (solo para XAdES)
*/
ParametroFirmaCliente.prototype.setXMLElementoAFirmar = function(sXMLElementoAFirmar) {
this.sXMLElementoAFirmar = sXMLElementoAFirmar;
};
/**
* XPath del nodo padre a firmar (solo para XAdES)
* @param {String} sXMLNodoPadre XPath del nodo padre a firmar (solo para XAdES)
*/
ParametroFirmaCliente.prototype.setXMLNodoPadre = function(sXMLNodoPadre) {
this.sXMLNodoPadre = sXMLNodoPadre;
};
/**
* Tipo de firma multiple secuencial o paralela.
* @param {int} iTipoFMultiple Tipo de firma simple, o multiple (paralela). Posibles valores:
* - TIPO_FMULTIPLE_NO - Firma con un solo firmante (por defecto)
* - TIPO_FMULTIPLE_PARALELA - La firma incluida esta al mismo nivel que la(s) anterior(es)
*/
ParametroFirmaCliente.prototype.setTipoFMultiple = function(iTipoFMultiple) {
this.iTipoFMultiple = iTipoFMultiple;
};
/**
* Datos del documento original necesarios en el caso de firma detached paralela. Deben estar en formato Base64.
* @param {String} sDocOriginal Datos del documento original necesarios en el caso de firma detached paralela. Deben estar en formato Base64.
* @deprecated Con la integracion AutoScript ya no es necesario este parametro para la firma multiple
*/
ParametroFirmaCliente.prototype.setDocOriginal = function(sDocOriginal) {
this.sDocOriginal = sDocOriginal;
};
/**
* Abscisa de la esquina inferior izquierda donde se quiere que aparezca la imagen o el texto de la firma (solo para PAdES)
* @param {int} iEsquinaAbajoIzquierdaX Abscisa de la esquina inferior izquierda donde se quiere que aparezca la firma
*/
ParametroFirmaCliente.prototype.setEsquinaAbajoIzquierdaX = function(iEsquinaAbajoIzquierdaX) {
this.iEsquinaAbajoIzquierdaX = iEsquinaAbajoIzquierdaX;
};
/**
* Ordenada de la esquina inferior izquierda donde se quiere que aparezca la imagen o el texto de la firma (solo para PAdES)
* @param {int} iEsquinaAbajoIzquierdaY Ordenada de la esquina inferior izquierda donde se quiere que aparezca la firma
*/
ParametroFirmaCliente.prototype.setEsquinaAbajoIzquierdaY = function(iEsquinaAbajoIzquierdaY) {
this.iEsquinaAbajoIzquierdaY = iEsquinaAbajoIzquierdaY;
};
/**
* Abscisa de la esquina superior derecha donde se quiere que aparezca la imagen o el texto de la firma (solo para PAdES)
* @param {int} iEsquinaArribaDerechaX Abscisa de la esquina superior derecha donde se quiere que aparezca la firma
*/
ParametroFirmaCliente.prototype.setEsquinaArribaDerechaX = function(iEsquinaArribaDerechaX) {
this.iEsquinaArribaDerechaX = iEsquinaArribaDerechaX;
};
/**
* Ordenada de la esquina superior derecha donde se quiere que aparezca la imagen o el texto de la firma (solo para PAdES)
* @param {int} iEsquinaArribaDerechaY Ordenada de la esquina superior derecha donde se quiere que aparezca la firma
*/
ParametroFirmaCliente.prototype.setEsquinaArribaDerechaY = function(iEsquinaArribaDerechaY) {
this.iEsquinaArribaDerechaY =iEsquinaArribaDerechaY;
};
/**
* Paginas en la que se incluye la imagen o el texto de la firma (solo para PAdES)
* @param {String} sPaginas Pagina en la que se incluye la firma. Posibles valores:
* - all: la firma visible aparezca en todas las páginas del documento
* - append: la firma visible aparezce en una nueva página en blanco añadida al final del documento
* - Página o listado de páginas: enumeracion de las páginas donde debe aparecer la firma. Separadas por comas
* y permitiendo rangos de páginas. Los valores negativos contabilizan desde el final del documento.
* Por ejemplo: 3-6, 8, -2, -1: Indica que se estampará en las páginas desde la 3 a la 6 y también en la 8,
* la penúltima y la última.
*/
ParametroFirmaCliente.prototype.setPaginas = function(sPaginas) {
this.sPaginas = sPaginas;
};
/**
* Literal que debe aparecer en la visualizacion de la firma (solo para PAdES)
* @param {String} sNombreFirmante Nombre del firmante. Se puede indicar un texto fijo o que extraiga información del
* certificado firmante mediante patrones:
* - $$SUBJECTCN$$ Nombre común (CN, Common Name) los identificadores se procesarán para ocultar una parte.
* - $$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 siguiendo el esquema definido para la clase SimpleDateFormat
* - $$GIVENNAME$$ Nombre declarado del titular del certificado.
* - $$SURNAME$$ Apellidos declarados del titular del certificado.
* - $$ORGANIZATION$$ Organización declarada del titular en el certificado
*/
ParametroFirmaCliente.prototype.setNombreFirmante = function(sNombreFirmante) {
this.sNombreFirmante = sNombreFirmante;
};
/**
* Fuente del texto de la firma (solo para PAdES)
* @param {int} iFuenteTextoFirma Tipo de letra a usar en el texto de la firma visible. Posibles valores:
* - 0: El texto de la firma visible se mostrará con fuente Courier. Este es el valor por defecto.
* - 1: El texto de la firma visible se mostrará con fuente Helvética.
* - 2: El texto de la firma visible se mostrará con fuente Times Roman.
* - 3: El texto de la firma visible se mostrará con fuente Symbol.
*/
ParametroFirmaCliente.prototype.setFuenteTextoFirma = function(iFuenteTextoFirma) {
this.iFuenteTextoFirma = iFuenteTextoFirma;
};
/**
* Tamanio de la fuente del texto de la firma (solo para PAdES)
* @param {int} iTamanioTextoFirma Tamanio de la fuente de la firma
*/
ParametroFirmaCliente.prototype.setTamanioTextoFirma = function(iTamanioTextoFirma) {
this.iTamanioTextoFirma = iTamanioTextoFirma;
};
/**
* Estilo del tipo de letra a usar en el texto de la firma visible (solo para PAdES).
* @param {int} iEstiloTextoFirma Estilo del tipo de letra a usar en el texto de la firma visible. Es posible
* combinar estilos sumando los estilos (5 -> negrita y subrayado):
* - 0: Texto de la firma visible sin estilo. Valor por defecto.
* - 1: Texto de la firma visible en negrita.
* - 2: Texto de la firma visible en cursiva.
* - 4: Texto de la firma visible subrayado.
* - 8: Texto de la firma visible tachado.
*/
ParametroFirmaCliente.prototype.setEstiloTextoFirma = function(iEstiloTextoFirma) {
this.iEstiloTextoFirma = iEstiloTextoFirma;
};
/**
* Color de letra a usar en el texto de la firma visible (solo para PAdES).
* @param {String} sColorTextoFirma Color de letra a usar en el texto de la firma visible. Posibles valores:
* - black (defecto)
* - white
* - gray
* - lightGray
* - darkGray
* - red
* - pink
*/
ParametroFirmaCliente.prototype.setColorTextoFirma = function(sColorTextoFirma) {
this.sColorTextoFirma = sColorTextoFirma;
};
/**
* Imagen de fondo de la firma (solo para PAdES).
* @param {String} sImagen Imagen de fondo de la firma. La imagen se deforma para adaptarse a las dimensiones
del recuadro marcado, debe estar en formato jpeg y codificado en Base64
*/
ParametroFirmaCliente.prototype.setImagen = function(sImagen) {
this.sImagen = sImagen;
};
/**
* Número de grados que rotar el texto y la imagen del campo de firma en sentido horario (solo para PAdES)
* @param {int} iRotacionFirma Número de grados que rotar el texto y la imagen del campo de firma en sentido
* horario. Posibles valores:
* - 0: No rota el campo de firma. Este es el valor por defecto.
* - 90: Rota 90 grados en sentido horario el campo de firma.
* - 180: Rota 180 grados en sentido horario el campo de firma.
* - 270: Rota 270 grados en sentido horario el campo de firma.
*/
ParametroFirmaCliente.prototype.setRotacionFirma = function(iRotacionFirma) {
this.iRotacionFirma = iRotacionFirma;
};
/**
* Permite configurar si se desea que el usuario seleccione el área de una firma visible PDF y si es obligatorio
* o no el realizar una firma visible. (solo para PAdES)
* @param {String} sFirmaVisible Indicador de si el usuario debe seleccionar el área de firma. Posibles valores:
* - default: Se realizará firma visible PDF si se han proporcionado los parámetros con el área
* y la página de firma. Este es el valor por defecto.
* - want: El usuario debe seleccionar el área de firma visible. En caso de cancelar el proceso:
*
- Si la petición también incluye los parámetros de área de firma visible (posición y página),
* se usarán dichos parámetros y se continuará con el proceso de firma.
* - Si la petición no incluye los parámetros de área de firma visible, se cancelará el proceso
* de firma.
* - optional: El usuario podrá elegir si desea incluir o no el área de firma visible. En caso de cancelar
* el proceso:
*
- Si la petición también incluye los parámetros de área de firma visible (posición y página),
* se usarán dichos parámetros y se continuará con el proceso de firma.
* - Si la petición no incluye los parámetros de área de firma visible, se realizará una firma no
* visible.
*/
ParametroFirmaCliente.prototype.setFirmaVisible = function(sFirmaVisible) {
this.sFirmaVisible = sFirmaVisible;
};
/**
* Permite configurar que sea el usuario el que seleccione el aspecto de una firma visible PDF. Esta propiedad sólo tiene
* efecto cuando también se indica el parámetro visibleSignature y siempre que el usuario termine seleccionado el área de
* firma. (solo para PAdES)
* @param {String} sUsrConfigAparienciaFirma Indicador de si el usuario es el que selecciona el aspecto de una firma
* visible PDF. Posibles valores:
* - default: Se aplicará el aspecto por defecto para la firma visible PDF o, si se proporcionaron
* los parámetros de aspecto, el aspecto configurado. Este es el valor por defecto.
* - custom: El usuario puede elegir el aspecto de la firma visible. En caso de cancelar el proceso, se
* usará el aspecto por defecto.
*/
ParametroFirmaCliente.prototype.setUsrConfigAparienciaFirma = function(sUsrConfigAparienciaFirma) {
this.sUsrConfigAparienciaFirma = sUsrConfigAparienciaFirma;
};
/**
* Indica que para realizar la firma se usara el resumen del documento. Este solo puede ser true si se usa
* el formato de firma CAdES, si la firma no incluye los datos (DATOS_INCLUIDOS_NO) y si TIPO_FMULTIPLE_NO.
* En caso de usar el resumen para calcular la firma el campo sResumenDatosAFirmar debe estar cumplimentado y se ignorara
* el campo sDatosAFirmar
* @param {boolean} bUsaResumen Indica que para realizar la firma se usara el resumen del documento
*/
ParametroFirmaCliente.prototype.setUsaResumen = function(bUsaResumen) {
this.bUsaResumen = bUsaResumen;
};
/**
* Resumen del documento que se quieren firmar. (deprecado: Si bFirmaBloque == true, los resumenes de cada uno de los documentos a firmar estaran separados por ",")
* @param {String} sResumenDatosAFirmar Resumen del documento que se quieren firmar segun el algoritmo indicado en ALGORITMO_RESUMEN_DEFECTO en B64
*/
ParametroFirmaCliente.prototype.setResumenDatosAFirmar = function(sResumenDatosAFirmar) {
this.sResumenDatosAFirmar = sResumenDatosAFirmar;
};
/**
* Politica de firma. Este campo puede tomar los siguientes valores:
* - POLITICA_AGE
* - POLITICA_FACTURAE
* Será necesario poner a null este parámetro si se quiere especificar manualmente la política: sIDPoliticaFirma, sResumenPolitica, sAlgResumenPolitica, sURIPolitica
* @param {String} sPoliticaFirma Nombre de la politica de firma
*/
ParametroFirmaCliente.prototype.setPoliticaFirma = function(sPoliticaFirma) {
this.sPoliticaFirma = sPoliticaFirma;
};
/**
* Identificador de la politica de firma. En el caso de CAdES y PAdES sera el OID, en el caso de XAdES el campo 'SigPolicyId::Identifier'.
* Entre otros posibles valores, este campo puede tomar los siguientes valores:
* - OID_POLITICA_AGE_v18_CADES (para CAdES)
* - OID_POLITICA_AGE_v18_XADES (para XAdES)
* - OID_POLITICA_FACTURAE_v30_XADES (para XAdES)
* - OID_POLITICA_FACTURAE_v31_XADES (para XAdES)
* @param {String} sIDPoliticaFirma Identificador de la politica de firma
*/
ParametroFirmaCliente.prototype.setIDPoliticaFirma = function(sIDPoliticaFirma) {
this.sIDPoliticaFirma = sIDPoliticaFirma;
};
/**
* Resumen precalculado de la politica de firma en B64 segun el algoritmo indicado en sAlgResumenPolitica. Entre otros posibles valores,
* este campo puede tomar los siguientes valores:
* - RESUMEN_SHA1_POLITICA_AGE_v18_CADES (para formato de firma CAdES o PAdES)
* - RESUMEN_SHA1_POLITICA_AGE_v18_XADES (para formato de firma XAdES)
* - RESUMEN_SHA1_POLITICA_FACTURAE_v30
* - RESUMEN_SHA1_POLITICA_FACTURAE_v31
* @param {String} sResumenPolitica Resumen precalculado de la politica de firma en B64
*/
ParametroFirmaCliente.prototype.setResumenPolitica = function(sResumenPolitica) {
this.sResumenPolitica = sResumenPolitica;
};
/**
* Algoritmo usado para calcular el resumen de la politica del campo sResumenPolitica. Posibles valores:
* - ALGORITMO_RESUMEN_SHA_1
* - ALGORITMO_RESUMEN_SHA_256
* - ALGORITMO_RESUMEN_SHA_384
* - ALGORITMO_RESUMEN_SHA_512
* @param {String} sAlgResumenPolitica Algoritmo usado para calcular el resumen de la politica
*/
ParametroFirmaCliente.prototype.setAlgResumenPolitica = function(sAlgResumenPolitica) {
this.sAlgResumenPolitica = sAlgResumenPolitica;
};
/**
* URI donde esta publicada la politica. Entre otros, este campo puede tomar los siguientes valores:
* - URI_POLITICA_AGE_v18_PDF (PDF)
* - URI_POLITICA_AGE_v18_XML (XML)
* - URI_POLITICA_FACTURAE_v30_PDF (PDF)
* - URI_POLITICA_FACTURAE_v31_PDF (PDF)
* @param {String} sURIPolitica URI donde esta publicada la politica
*/
ParametroFirmaCliente.prototype.setURIPolitica = function(sURIPolitica) {
this.sURIPolitica = sURIPolitica;
};
/**
* Descripcion de la politica de firma. Entre otros, este campo puede tomar los siguientes valores:
* - DESCRIPCION_POLITICA_AGE_v18
* - DESCRIPCION_POLITICA_FACTURAE_v30
* - DESCRIPCION_POLITICA_FACTURAE_v31
* @param {String} sDescripcionPolitica URI donde esta publicada la politica
*/
ParametroFirmaCliente.prototype.setDescripcionPolitica = function(sDescripcionPolitica) {
this.sDescripcionPolitica = sDescripcionPolitica;
};
/**
* OID del formato de los datos originales. Entre otros, este campo puede tomar los siguientes valores:
* - urn:oid:1.2.840.10003.5.109.10 (en XAdES para indicar que es XML)
* - 1.2.840.113549.1.7.1 (en CAdES y PAdES para indicar que es 'PKCS #7 signed data')
* @param {String} sOIDFormatoDatosOriginales OID del formato de los datos originales
*/
ParametroFirmaCliente.prototype.setOIDFormatoDatosOriginales = function(sOIDFormatoDatosOriginales) {
this.sOIDFormatoDatosOriginales = sOIDFormatoDatosOriginales;
};
/**
* MimeType del formato de los datos originales. Entre otros, este campo puede tomar los siguientes valores:
* - text/xml (en XAdES para indicar que es XML)
* - application/pdf (en CAdES y PAdES para indicar que es PDF)
* @param {String} sMimeTypeFormatoDatosOriginales MimeType del formato de los datos originales
*/
ParametroFirmaCliente.prototype.setMimeTypeFormatoDatosOriginales = function(sMimeTypeFormatoDatosOriginales) {
this.sMimeTypeFormatoDatosOriginales = sMimeTypeFormatoDatosOriginales;
};
/**
* Indica el rol del firmante
* @param {String} sRolFirmante Rol del firmante
*/
ParametroFirmaCliente.prototype.setRolFirmante = function(sRolFirmante) {
this.sRolFirmante = sRolFirmante;
};
/**
* Establece el método que se llamará en caso de que la firma sea realizada con éxito
* @param {function} fCallbackHandlerExito Método que se llamará en caso de que la firma sea realizada con éxito
*/
ParametroFirmaCliente.prototype.setCallbackHandlerExito = function(fCallbackHandlerExito) {
this.fCallbackHandlerExito = fCallbackHandlerExito;
};
/**
* Establece el método que se llamará en caso de que se produzca un error realizando la firma
* @param {function} fCallbackHandlerError Método que se llamará en caso de que se produzca un error realizando la firma
*/
ParametroFirmaCliente.prototype.setCallbackHandlerError = function(fCallbackHandlerError) {
this.fCallbackHandlerError = fCallbackHandlerError;
};