예제 #1
0
        /// <summary>
        /// Recupera la firma de los datos haciendo uso del servicio de red de firma en la nube.
        /// </summary>
        /// <param name="transactionId">Identificador de la transacción.</param>
        /// <param name="subjectId">Identificador del usuario propietario de los certificados de firma.</param>
        /// <returns>Firma realizada en servidor.</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="InvalidTransactionException">Cuando se intenta operar sobre una transaccion inexistente o ya caducada.</exception>
        /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception>
        public FireBatchResult recoverBatchResult(
            string transactionId,
            string subjectId)
        {
            if (String.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException(
                          "El id de la transaccion no puede ser nulo"
                          );
            }
            if (String.IsNullOrEmpty(subjectId))
            {
                throw new ArgumentException(
                          "El identificador del titular no puede ser nulo"
                          );
            }

            string url           = this.config.getFireService();
            string urlParameters = URL_PARAMETERS_RECOVER_BATCH_RESULT
                                   .Replace(APP_ID, this.appId)
                                   .Replace(TRANSACTION, transactionId)
                                   .Replace(SUBJECTID, subjectId)
                                   .Replace(OP, OP_CODE_RECOVER_BATCH); // El tipo de operacion solicitada es RECOVER_BATCH

            //  realizamos la peticion post al servicio y recibimos los datos de la peticion
            byte[]          bytes        = getResponseToPostPetition(url, urlParameters, this.config.getConfig());
            FireBatchResult documentList = deserializedBatchResult(System.Text.Encoding.UTF8.GetString(bytes));

            // Mostramos los datos obtenidos
            return(documentList);
        }
예제 #2
0
        /// <summary>
        ///  Obtiene el resultado de la firma del lote a partir del objeto con la respuesta del
        ///  servicio que devolvió dicho resultado.
        /// </summary>
        /// <param name="json">Objeto con el JSON de respuesta serializado.</param>
        /// <returns>Objeto con el resultado de la firma del lote.</returns>
        internal static FireBatchResult Parse(BatchResultJson json)
        {
            FireBatchResult result = new FireBatchResult();

            result.prov = json.prov;
            if (json.cert != null)
            {
                result.cert = new X509Certificate(System.Convert.FromBase64String(json.cert));
            }
            result.batch = new List <FireSingleResult>();
            foreach (var singleBatch in json.batch)
            {
                FireSingleResult singleSignature = new FireSingleResult();
                singleSignature.id = singleBatch.id;
                singleSignature.ok = singleBatch.ok;
                singleSignature.dt = singleBatch.dt;
                if (singleBatch.grace != null)
                {
                    // Transformamos los milisegundos Java a una fecha .Net
                    DateTime graceDate = new DateTime(new DateTime(1970, 1, 1).Ticks + singleBatch.grace.Date * 10000);
                    singleSignature.gracePeriod = new GracePeriod(singleBatch.grace.Id, graceDate);
                }
                result.batch.Add(singleSignature);
            }
            return(result);
        }
예제 #3
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));
        }