コード例 #1
0
ファイル: HttpLoadProcess.cs プロジェクト: wolfrpp/fire
        /// <summary>Carga datos para ser posteriormente firmados.</summary>
        /// <param name="appId">Identificador de la aplicación.</param>
        /// <param name="subjectId">Identificador del titular de la clave de firma.</param>
        /// <param name="op">Tipo de operación a realizar: firma, cofirma o contrafirma</param>
        /// <param name="ft">Formato de la operación.</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="certB64">Certificado de usuario para realizar la firma.</param>
        /// <param name="dataB64">Datos a firmar.</param>
        /// <param name="confB64">Configuración a indicar al servicio remoto (dependiente de la implementación).</param>
        /// <returns>Resultado de la carga.</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 LoadResult loadData(
            String appId,
            String subjectId,
            String op,
            String ft,
            String algth,
            String propB64,
            String certB64,
            String dataB64,
            String confB64)
        {
            if (string.IsNullOrEmpty(subjectId))
            {
                throw new ArgumentException(
                          "El identificador del 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(certB64))
            {
                throw new ArgumentException(
                          "El certificado del firmante no puede ser nulo"
                          );
            }
            if (string.IsNullOrEmpty(dataB64))
            {
                throw new ArgumentException(
                          "Los datos a firmar no pueden ser nulos"
                          );
            }

            string url           = ConfigManager.getUrlLoadService();
            string urlParameters = URL_PARAMETERS
                                   .Replace(TAG_NAME_APP_ID, appId)
                                   .Replace(TAG_NAME_SUBJECT_ID, subjectId)
                                   .Replace(TAG_NAME_OPERATION, op)
                                   .Replace(TAG_NAME_FORMAT, ft)
                                   .Replace(TAG_NAME_ALGORITHM, algth)
                                   .Replace(TAG_NAME_EXTRA_PARAM, propB64 != null ? propB64.Replace('+', '-').Replace('/', '_') : "")
                                   .Replace(TAG_NAME_CERT, certB64.Replace('+', '-').Replace('/', '_'))
                                   .Replace(TAG_NAME_DATA, dataB64.Replace('+', '-').Replace('/', '_'))
                                   .Replace(TAG_NAME_CLAVEFIRMA_CONFIG, confB64 != null ? confB64.Replace('+', '-').Replace('/', '_') : "");

            string responseJSON = getResponseToPostPetition(url, urlParameters);

            return(new LoadResult(responseJSON));
        }
コード例 #2
0
ファイル: FireApi.cs プロジェクト: mmosoll/fire
        /// <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)));
        }
コード例 #3
0
ファイル: FireApi.cs プロジェクト: mmosoll/fire
        /// <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)));
        }
コード例 #4
0
ファイル: FireApi.cs プロジェクト: mmosoll/fire
        /// <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);
        }
コード例 #5
0
ファイル: FireApi.cs プロジェクト: vanecpaez/fire
        /// <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.getErrorCode() != null || result.getResult() != 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.setResult(bytes);

            return(result);
        }