Ejemplo n.º 1
0
        /// <summary>
        /// Recupera la firma de un documento del proceso batch haciendo uso del servicio de red de firma en la nube.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <param name="docId">Identificador del documento seleccionado.</param>
        /// <returns>Firma del documento realizada en servidor.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static FireTransactionResult recoverBatchSign(
            String appId,
            String transactionId,
            String docId)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(docId))
            {
                throw new ArgumentException(
                          "El identificador del documento no puede ser nulo"
                          );
            }

            string url           = ConfigManager.getFireService();
            string urlParameters = URL_PARAMETERS_RECOVER_BATCH_SIGN
                                   .Replace(APP_ID, appId)
                                   .Replace(DOCID, docId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(OP, "10"); // El tipo de operacion solicitada es RECOVER_BATCH_SIGN (10)

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[] bytes = getResponseToPostPetition(url, urlParameters);
            // Mostramos los datos obtenidos
            return(new FireTransactionResult(bytes));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Realiza una firma por lotes.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <param name="stopOnError">Indicador de si debe detenerse al producirse un error en la firma.</param>
        /// <returns>URL de redirección.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static FireLoadResult signBatch(
            String appId,
            String transactionId,
            bool stopOnError)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }

            string url = ConfigManager.getFireService();

            string urlParameters = URL_PARAMETERS_SIGN_BATCH
                                   .Replace(APP_ID, appId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(OP, "7") // El tipo de operacion solicitada es SIGN_BATCH (7)
                                   .Replace(STOPONERROR, stopOnError.ToString());

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[] bytes = getResponseToPostPetition(url, urlParameters);
            // Mostramos los datos obtenidos
            return(new FireLoadResult(System.Text.Encoding.UTF8.GetString(bytes)));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Recupera el error tras la firma de los datos haciendo uso del servicio de red de firma en la nube.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <returns>Firma realizada en servidor.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static FireTransactionResult recoverError(
            String appId,
            String transactionId)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }

            string url           = ConfigManager.getFireService();
            string urlParameters = URL_PARAMETERS_RECOVER_SIGN
                                   .Replace(APP_ID, appId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(OP, "99"); // El tipo de operacion solicitada es RECOVER_ERROR (99)

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[] bytes = getResponseToPostPetition(url, urlParameters);

            // Devolvemos la respuesta
            try {
                return(new FireTransactionResult(bytes));
            }
            catch (Exception e)
            {
                throw new HttpOperationException("La respuesta del servicio no tiene un formato valido", e);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Recupera la firma de los datos haciendo uso del servicio de red de firma en la nube.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <param name="upgrade">Formato al que queremos mejorar la firma (puede ser null).</param>
        /// <returns>Firma realizada en servidor.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static FireTransactionResult recoverSign(
            String appId,
            String transactionId,
            String upgrade)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }

            string url           = ConfigManager.getFireService();
            string urlParameters = URL_PARAMETERS_RECOVER_SIGN
                                   .Replace(APP_ID, appId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(OP, "2"); // El tipo de operacion solicitada es RECOVER_SIGN (2)

            // Si se ha indicado un formato de upgrade, lo actualizamos; si no, lo eliminamos de la URL
            if (upgrade != null && upgrade != "")
            {
                urlParameters = urlParameters.Replace(UPGRADE, upgrade);
            }
            else
            {
                urlParameters = urlParameters.Replace("&upgrade=" + UPGRADE, ""); //$NON-NLS-1$ //$NON-NLS-2$
            }

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[] bytes = getResponseToPostPetition(url, urlParameters);
            // Mostramos los datos obtenidos
            return(new FireTransactionResult(bytes));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Construye el objeto de configuración cargando los valores desde el registro de Windows.
        /// </summary>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio del
        /// componente central en el registro de Windows.</exception>
        public FireConfig()
        {
            if (String.IsNullOrEmpty(ConfigManager.getFireService()))
            {
                throw new ConfigureException("No se ha configurado en registro la URL del servicio del componente central");
            }

            this.config = new Dictionary <string, string>();
            this.config.Add(KEY_FIRE_SERVICE, ConfigManager.getFireService());
            this.config.Add(KEY_ADMIT_ALL_CERTS, ConfigManager.getSSLAdmitAllCerts());
            this.config.Add(KEY_SSL_CLIENT_PKCS12, ConfigManager.getSSLClientPkcs12());
            this.config.Add(KEY_SSL_CLIENT_PASS, ConfigManager.getSSLClientPass());
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Construye el objeto de configuración cargando los valores proporcionados y, si no se han pasado, los
        /// valores del registro de Windows.
        /// </summary>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio del
        /// componente central ni en el diccionario proporcionado ni en el registro de Windows.</exception>
        public FireConfig(Dictionary <string, string> config)
        {
            if ((config == null || !config.ContainsKey(KEY_FIRE_SERVICE) || String.IsNullOrEmpty(config[KEY_FIRE_SERVICE])) &&
                String.IsNullOrEmpty(ConfigManager.getFireService()))
            {
                throw new ConfigureException("No se ha proporcionado ni configurado en registro la URL del servicio del componente central");
            }

            this.config = new Dictionary <string, string>();
            initConfigKey(this.config, KEY_FIRE_SERVICE, config, ConfigManager.getFireService());
            initConfigKey(this.config, KEY_ADMIT_ALL_CERTS, config, ConfigManager.getSSLAdmitAllCerts());
            initConfigKey(this.config, KEY_SSL_CLIENT_PKCS12, config, ConfigManager.getSSLClientPkcs12());
            initConfigKey(this.config, KEY_SSL_CLIENT_PASS, config, ConfigManager.getSSLClientPass());
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Incluye un documento en el batch para realizar una firma por lotes.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <param name="documentId">Identificador del documento a incluir.</param>
        /// <param name="documentB64">Documento en base 64.</param>
        /// <param name="confB64">Parámetros de la configuración de la firma.</param>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static void addDocumentToBatch(
            String appId,
            String transactionId,
            String documentId,
            String documentB64,
            String confB64)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(documentId))
            {
                throw new ArgumentException(
                          "El identificador del documento no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(documentB64))
            {
                throw new ArgumentException(
                          "El documento a incluir no puede ser nulo"
                          );
            }

            string url = ConfigManager.getFireService();

            string urlParameters = URL_PARAMETERS_ADD_DOCUMENT_BATCH
                                   .Replace(APP_ID, appId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(OP, "6") // El tipo de operacion solicitada es ADD_DOCUMENT_TO_BATCH (6)
                                   .Replace(DOCID, documentId)
                                   .Replace(DATA, documentB64.Replace('+', '-').Replace('/', '_'))
                                   .Replace(CONF, string.IsNullOrEmpty(confB64) ? "" : confB64.Replace('+', '-').Replace('/', '_'));

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            getResponseToPostPetition(url, urlParameters);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Recupera la firma de los datos haciendo uso del servicio de red de firma en la nube.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <returns>Firma realizada en servidor.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static FireBatchResult recoverBatchResult(
            String appId,
            String transactionId)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }

            string url           = ConfigManager.getFireService();
            string urlParameters = URL_PARAMETERS_RECOVER_BATCH_RESULT
                                   .Replace(APP_ID, appId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(OP, "8"); // El tipo de operacion solicitada es RECOVER_BATCH (8)

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[]          bytes       = getResponseToPostPetition(url, urlParameters);
            BatchResultJson batchResult = getJson(System.Text.Encoding.UTF8.GetString(bytes));

            return(FireBatchResult.Parse(batchResult));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Recupera el progreso del proceso de firma de los datos del proceso batch.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <returns>Progreso de la firma.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static float recoverBatchResultState(
            String appId,
            String transactionId)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }

            // La peticion de recuperacion del estado y del resultado es igual salvo por el ID de operacion
            string url           = ConfigManager.getFireService();
            string urlParameters = URL_PARAMETERS_RECOVER_BATCH_RESULT
                                   .Replace(APP_ID, appId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(OP, "9"); // El tipo de operacion solicitada es RECOVER_BATCH_STATE (9)

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[] bytes = getResponseToPostPetition(url, urlParameters);

            // Mostramos los datos obtenidos
            return(float.Parse(System.Text.Encoding.UTF8.GetString(bytes), System.Globalization.CultureInfo.InvariantCulture));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Firma unos datos haciendo uso del servicio de red de firma en la nube.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="subjectId">Identificador del firmante.</param>
        /// <param name="op">Tipo de operaciónn a realizar: "sign", "cosign" o "countersign".</param>
        /// <param name="ft">Formato de la operación: "XAdES", "PAdES", etc.</param>
        /// <param name="algth">Algoritmo de firma.</param>
        /// <param name="propB64">Propiedades extra a añadir a la firma (puede ser <code>null</code>).</param>
        /// <param name="dataB64"> Datos a firmar en base64.</param>
        /// <param name="confB64">Parámetros de la configuración de la firma.</param>
        /// <returns>Firma realizada en servidor.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static FireLoadResult sign(
            String appId,
            String subjectId,
            String op,
            String ft,
            String algth,
            String propB64,
            String dataB64,
            String confB64)
        {
            if (string.IsNullOrEmpty(subjectId))
            {
                throw new ArgumentException(
                          "El identificador del titular no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(op))
            {
                throw new ArgumentException(
                          "El tipo de operacion de firma a realizar no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(ft))
            {
                throw new ArgumentException(
                          "El formato de firma no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(algth))
            {
                throw new ArgumentException(
                          "El algoritmo de firma no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(dataB64))
            {
                throw new ArgumentException(
                          "Los datos a firmar no pueden ser nulos"
                          );
            }
            if (string.IsNullOrEmpty(confB64))
            {
                throw new ArgumentException(
                          "Los datos de configuracion no pueden ser nulos"
                          );
            }

            string url = ConfigManager.getFireService();

            string urlParameters = URL_PARAMETERS_SIGN
                                   .Replace(APP_ID, appId)
                                   .Replace(SUBJECTID, subjectId)
                                   .Replace(COP, op)
                                   .Replace(OP, "1") // El tipo de operacion solicitada es SIGN (1)
                                   .Replace(ALG, algth)
                                   .Replace(FORMAT, ft)
                                   .Replace(PROP, string.IsNullOrEmpty(propB64) ? "" : propB64.Replace('+', '-').Replace('/', '_'))
                                   .Replace(DATA, dataB64.Replace('+', '-').Replace('/', '_'))
                                   .Replace(CONF, confB64.Replace('+', '-').Replace('/', '_'));

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[] bytes = getResponseToPostPetition(url, urlParameters);
            // Mostramos los datos obtenidos
            return(new FireLoadResult(System.Text.Encoding.UTF8.GetString(bytes)));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Incluye en el batch un documento con una configuración de firma propia para realizar una firma por lotes.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <param name="documentId">Identificador del documento a incluir.</param>
        /// <param name="documentB64">Documento en base 64.</param>
        /// <param name="op">Tipo de operaciónn a realizar: "sign", "cosign" o "countersign".</param>
        /// <param name="ft">Formato de la operación: "XAdES", "PAdES", etc.</param>
        /// <param name="propB64">Propiedades extra a añadir a la firma (puede ser <code>null</code>).</param>
        /// <param name="upgrade"> Parámetros de actualización.</param>
        /// <param name="confB64">Parámetros de la configuración de la firma.</param>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static void addDocumentToBatch(
            String appId,
            String transactionId,
            String documentId,
            String documentB64,
            String op,
            String ft,
            String propB64,
            String upgrade,
            String confB64)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(documentId))
            {
                throw new ArgumentException(
                          "El identificador del documento no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(documentB64))
            {
                throw new ArgumentException(
                          "El documento a incluir no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(op))
            {
                throw new ArgumentException(
                          "El tipo de operacion de firma a realizar no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(ft))
            {
                throw new ArgumentException(
                          "El formato de firma no puede ser nulo"
                          );
            }
            string url = ConfigManager.getFireService();

            string urlParameters = URL_PARAMETERS_ADD_CUSTOM_DOCUMENT_BATCH
                                   .Replace(APP_ID, appId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(OP, "6") // El tipo de operacion solicitada es ADD_DOCUMENT_TO_BATCH (6)
                                   .Replace(DOCID, documentId)
                                   .Replace(DATA, documentB64.Replace('+', '-').Replace('/', '_'))
                                   .Replace(COP, op)
                                   .Replace(FORMAT, ft)
                                   .Replace(PROP, string.IsNullOrEmpty(propB64) ? "" : propB64.Replace('+', '-').Replace('/', '_'))
                                   .Replace(CONF, string.IsNullOrEmpty(confB64) ? "" : confB64.Replace('+', '-').Replace('/', '_'));

            // Si se ha indicado un formato de upgrade, lo actualizamos; si no, lo eliminamos de la URL
            if (string.IsNullOrEmpty(upgrade))
            {
                urlParameters = urlParameters.Replace("&upgrade=" + UPGRADE, "");
            }
            else
            {
                urlParameters = urlParameters.Replace(UPGRADE, upgrade);
            }

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            getResponseToPostPetition(url, urlParameters);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Crea un batch de documentos para posteriormente realizar la firma por lotes.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="subjectId">Identificador del firmante.</param>
        /// <param name="op">Tipo de operaciónn a realizar: "sign", "cosign" o "countersign".</param>
        /// <param name="ft">Formato de la operación: "XAdES", "PAdES", etc.</param>
        /// <param name="algth">Algoritmo de firma.</param>
        /// <param name="propB64">Propiedades extra a añadir a la firma (puede ser <code>null</code>).</param>
        /// <param name="upgrade"> Parámetros de actualización.</param>
        /// <param name="confB64">Parámetros de la configuración de la firma.</param>
        /// <returns>Referencia al proceso batch.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static FireTransactionIdResult createBatchProcess(
            String appId,
            String subjectId,
            String op,
            String ft,
            String algth,
            String propB64,
            String upgrade,
            String confB64)
        {
            if (string.IsNullOrEmpty(subjectId))
            {
                throw new ArgumentException(
                          "El id de usuario no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(op))
            {
                throw new ArgumentException(
                          "El tipo de operacion de firma a realizar no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(ft))
            {
                throw new ArgumentException(
                          "El formato de firma no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(algth))
            {
                throw new ArgumentException(
                          "El algoritmo de firma no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(confB64))
            {
                throw new ArgumentException(
                          "Los datos de configuracion no pueden ser nulos"
                          );
            }

            string url = ConfigManager.getFireService();

            string urlParameters = URL_PARAMETERS_CREATE_BATCH
                                   .Replace(APP_ID, appId)
                                   .Replace(SUBJECTID, subjectId)
                                   .Replace(COP, op)
                                   .Replace(OP, "5") // El tipo de operacion solicitada es CREATE_BATCH (5)
                                   .Replace(ALG, algth)
                                   .Replace(FORMAT, ft)
                                   .Replace(PROP, string.IsNullOrEmpty(propB64) ? "" : propB64.Replace('+', '-').Replace('/', '_'))
                                   .Replace(CONF, confB64.Replace('+', '-').Replace('/', '_'));

            // Si se ha indicado un formato de upgrade, lo actualizamos; si no, lo eliminamos de la URL
            if (string.IsNullOrEmpty(upgrade))
            {
                urlParameters = urlParameters.Replace("&upgrade=" + UPGRADE, "");
            }
            else
            {
                urlParameters = urlParameters.Replace(UPGRADE, upgrade);
            }

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[] bytes = getResponseToPostPetition(url, urlParameters);
            // Mostramos los datos obtenidos
            return(new FireTransactionIdResult(System.Text.Encoding.UTF8.GetString(bytes)));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Recupera la firma de los datos haciendo uso del servicio de red de firma en la nube.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <param name="upgrade">Formato al que queremos mejorar la firma (puede ser null).</param>
        /// <returns>Firma realizada en servidor.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception>
        public static FireTransactionResult recoverSign(
            String appId,
            String transactionId,
            String upgrade)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }

            string url           = ConfigManager.getFireService();
            string urlParameters = URL_PARAMETERS_RECOVER_SIGN
                                   .Replace(APP_ID, appId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(OP, "2"); // El tipo de operacion solicitada es RECOVER_SIGN (2)

            // Si se ha indicado un formato de upgrade, lo actualizamos; si no, lo eliminamos de la URL
            if (upgrade != null && upgrade != "")
            {
                urlParameters = urlParameters.Replace(UPGRADE, upgrade);
            }
            else
            {
                urlParameters = urlParameters.Replace("&upgrade=" + UPGRADE, ""); //$NON-NLS-1$ //$NON-NLS-2$
            }

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[] bytes = getResponseToPostPetition(url, urlParameters);

            // Identificamos los datos obtenidos
            FireTransactionResult result;

            try
            {
                result = new FireTransactionResult(bytes);
            }
            catch (Exception e)
            {
                throw new HttpOperationException("La respuesta del servicio no tiene un formato valido", e);
            }

            // Si el resultado es un error o si ya contiene la firma, lo devolvemos
            if (result.ErrorCode != null || result.Result != null)
            {
                return(result);
            }

            // Si no, hacemos una nueva llamada para recuperarla
            urlParameters = URL_PARAMETERS_RECOVER_SIGN_RESULT
                            .Replace(APP_ID, appId)
                            .Replace(TRANSACTION, transactionId)
                            .Replace(OP, "11"); // El tipo de operacion solicitada es RECOVER_SIGN_RESULT (11)

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            bytes         = getResponseToPostPetition(url, urlParameters);
            result.Result = bytes;

            return(result);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Recupera una firma enviada a generar anteriormente y para la que se solicitó esperar un periodo de gracia.
        /// </summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="docId">Identificador de documento recibido de la  usuario propietario de los certificados de firma.</param>
        /// <param name="upgrade">Formato al que solicitamos actualizar la firma. Si se indica, se comprobará que la
        /// firma devuelta esté en el formato indicado.</param>
        /// <param name="confB64">Properties codificado en base 64 con configuración adicional para la plataforma de
        /// actualización de firma. </param>
        /// <param name="allowPartial">Indica si se debe devolver la firma incluso si no se ha actualizado al formato
        /// solicitado.</param>
        /// <returns>Resultado con la firma recuperada o un nuevo periodo de gracia.</returns>
        /// <exception cref="ArgumentException">Cuando se proporciona nulo o vacío un parámetro obligatorio.</exception>
        /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception>
        /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error durante la operación.</exception>
        public static FireTransactionResult recoverAsyncSign(
            string appId,
            string docId,
            string upgrade,
            string confB64,
            bool allowPartial
            )
        {
            if (string.IsNullOrEmpty(docId))
            {
                throw new ArgumentException(
                          "El identificador del documento firmado no puede ser nulo"
                          );
            }

            string url           = ConfigManager.getFireService();
            string urlParameters = URL_PARAMETERS_RECOVER_ASYNC_SIGN
                                   .Replace(APP_ID, appId)
                                   .Replace(DOCID, docId)
                                   .Replace(OP, "70")
                                   .Replace(PARTIAL, allowPartial.ToString());

            // Establecemos el formato de update y la configuracion para el validador si se han establecido.
            // Si no, los eliminamos de la URL
            if (!string.IsNullOrEmpty(upgrade))
            {
                urlParameters = urlParameters.Replace(UPGRADE, upgrade);
            }
            else
            {
                urlParameters = urlParameters.Replace("&upgrade=" + UPGRADE, "");
            }
            if (!string.IsNullOrEmpty(confB64))
            {
                urlParameters = urlParameters.Replace(CONF, confB64.Replace('+', '-').Replace('/', '_'));
            }
            else
            {
                urlParameters = urlParameters.Replace("&config=" + CONF, "");
            }

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[] bytes = getResponseToPostPetition(url, urlParameters);

            // Identificamos los datos obtenidos
            FireTransactionResult result;

            try
            {
                result = new FireTransactionResult(bytes);
            }
            catch (Exception e)
            {
                throw new HttpOperationException("La respuesta del servicio no tiene un formato valido", e);
            }

            // Si el resultado es un error, se indica un periodo de gracia o si ya contiene la firma, lo devolvemos
            if (result.ErrorCode != null || result.GracePeriod != null || result.Result != null)
            {
                return(result);
            }

            // Si no, hacemos una nueva llamada para recuperarla
            urlParameters = URL_PARAMETERS_RECOVER_ASYNC_SIGN_RESULT
                            .Replace(APP_ID, appId)
                            .Replace(DOCID, docId)
                            .Replace(OP, "71"); // El tipo de operacion solicitada es RECOVER_ASYNC_SIGN_RESULT

            //  Realizamos la peticion al servicio y recibimos los datos de la peticion
            bytes         = getResponseToPostPetition(url, urlParameters);
            result.Result = bytes;

            return(result);
        }