コード例 #1
0
        /// <summary> 
        /// Lee el Certificado desde el archivo abriendolo con la password
        /// </summary> 
        /// <returns>Un objeto certificado X509</returns> 
        /// <remarks></remarks> 
        public X509Certificate2 ObtenerCertificadoDesdeArchivo()
        {
            Entidades.Configuracion_Certificado objEntidadesConf_Certificado = new Entidades.Configuracion_Certificado();
            Logica.Configuracion_Certificado objLogicaConf_Certificado = new Logica.Configuracion_Certificado();
            SecureString passwordCertificadoPFX;

            objEntidadesConf_Certificado = objLogicaConf_Certificado.TraerConfiguracion();
            passwordCertificadoPFX = ConvertirPasswordSecureString(objEntidadesConf_Certificado.PasswordPFX);

            //Se instancia un objeto Certificado
            X509Certificate2 objCertificado = new X509Certificate2();
            
            try
            {
                //Se importa al objeto certificado el archivo leido abriendolo con la password
                objCertificado.Import(Microsoft.VisualBasic.FileIO.FileSystem.ReadAllBytes(objEntidadesConf_Certificado.ArchivoCertificadoPFX), passwordCertificadoPFX, X509KeyStorageFlags.PersistKeySet);
                //Retorno certificado
                return objCertificado;
            }
            catch (Exception excepcionAlImportarCertificado)
            {
                throw new Exception("ERROR: Procedimiento: ObtenerCertificadoDesdeArchivo.  Ruta del archivo=" + objEntidadesConf_Certificado.ArchivoCertificadoPFX + ". Excepcion=" + excepcionAlImportarCertificado.Message + " " + excepcionAlImportarCertificado.StackTrace);
            }
        }
コード例 #2
0
        /// <summary>
        /// Carga del Form
        /// Busca en la Base si ya hay una configuración cargada
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmConfiguracionCertificado_Load(object sender, EventArgs e)
        {
            Logica.Configuracion_Certificado objLogicaConfiguracionCertificado = new Logica.Configuracion_Certificado();
            
            openArchCertificadoPFX.Title = "Elegir Certificado";
            openArchCertificadoPFX.Filter = "Archivo de Certificado (*.pfx)|*.pfx";
            openArchCertificadoPFX.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.Personal);

            objEntidadesConfiguracionCertificado = objLogicaConfiguracionCertificado.TraerConfiguracion();

            if (objEntidadesConfiguracionCertificado.Cuit != 0)
            {
                txtCuit.Text = objEntidadesConfiguracionCertificado.Cuit.ToString();
                txtArchCertificadoPFX.Text = objEntidadesConfiguracionCertificado.ArchivoCertificadoPFX;
                txtPFXPassword.Text = objEntidadesConfiguracionCertificado.PasswordPFX;
                
                if(objEntidadesConfiguracionCertificado.TipoAprobacion == 'P')
                {
                    rbServidorProduccion.Checked = true;
                }
            }


        }
コード例 #3
0
        /// <summary>
        /// Guarda la configuración en la B.D.
        /// La Agrega si es la primera vez o la actualiza si ya existe
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGuardarConf_Click(object sender, EventArgs e)
        {
            
            if (txtCuit.Text != "0" || txtArchCertificadoPFX.Text != "")
            {
                Logica.Configuracion_Certificado objLogicaConfiguracionCertificado = new Logica.Configuracion_Certificado();
                Entidades.Configuracion_Certificado objEntidadesConfiguracionCertificadoForm = new Entidades.Configuracion_Certificado();

                objEntidadesConfiguracionCertificadoForm.Cuit = Convert.ToInt64(txtCuit.Text);
                objEntidadesConfiguracionCertificadoForm.ArchivoCertificadoPFX = txtArchCertificadoPFX.Text;
                objEntidadesConfiguracionCertificadoForm.PasswordPFX = txtPFXPassword.Text;
                if (rbServidorProduccion.Checked == true)
                {
                    objEntidadesConfiguracionCertificadoForm.TipoAprobacion = 'P';
                }
                else
                {
                    objEntidadesConfiguracionCertificadoForm.TipoAprobacion = 'H';
                }

                if (objEntidadesConfiguracionCertificado.Cuit == 0) //No habia nada guardado previamente en la B.D.
                {
                    objLogicaConfiguracionCertificado.Agregar(objEntidadesConfiguracionCertificadoForm);
                    MessageBox.Show("Configuración Guardada");
                }
                else
                {
                    objLogicaConfiguracionCertificado.Modificar(objEntidadesConfiguracionCertificadoForm);
                    MessageBox.Show("Configuración Actualizada");
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Pide un Nuevo Ticket de Acceso con las configuraciones cargadas
        /// </summary>
        /// <returns></returns>
        private bool pedirNuevoTicketAcc()
        {
            bool respuesta = false;
            lblPedirNuevoTicketAccRTA.ForeColor = Color.Black;
            lblPedirNuevoTicketAccRTA.Text = "Procesando...";
            lblPedirNuevoTicketAccRTA.Refresh();

            /*Pide la configuración desde la B.D.*/
            Entidades.Configuracion_Certificado objEntidadesConfiguracionCertificado = new Entidades.Configuracion_Certificado();
            Logica.Configuracion_Certificado objLogicaConfiguracionCertificado = new Logica.Configuracion_Certificado();
            objEntidadesConfiguracionCertificado = objLogicaConfiguracionCertificado.TraerConfiguracion();

            /*Creo un Certificado a partir de la configuración que recuperé desde la B.D.*/
            Entidades.CertificadosX509 objEntidadesCertificado = new Entidades.CertificadosX509();
            const string DEFAULT_SERVICIO = "wsfe";
            const string SERVIDOR_WSAA_PRODUCCION = "https://wsaa.afip.gov.ar/ws/services/LoginCms?WSDL";
            const string SERVIDOR_WSAA_HOMOLOGACION = "https://wsaahomo.afip.gov.ar/ws/services/LoginCms?WSDL";

            objEntidadesCertificado.IdServicioNegocio = DEFAULT_SERVICIO;

            if (objEntidadesConfiguracionCertificado.TipoAprobacion == 'P')
            {
                objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_PRODUCCION;                        
            }
            else
            {
                objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_HOMOLOGACION;
            }

            /*Pido en el WebService un Nuevo Ticket de Acceso*/
            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
            Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();
            Logica.Tickets objTicketRespuesta = new Logica.Tickets();

            objEntidadesTicket_Acceso = objTicketRespuesta.Gestionar_TA(objEntidadesCertificado);
            objEntidadesTicket_Acceso.Cuit = objEntidadesConfiguracionCertificado.Cuit;
            objEntidadesTicket_Acceso.TipoAprobacion = objEntidadesConfiguracionCertificado.TipoAprobacion;

            if (objEntidadesTicket_Acceso.Sign != null)
            {
                Logica.Tickets_Acceso objTicketsAcceso = new Logica.Tickets_Acceso();
                //Guarda el ticket en la B.D.
                objTicketsAcceso.Agregar(objEntidadesTicket_Acceso);
                lblPedirNuevoTicketAccRTA.ForeColor = Color.Green;
                lblPedirNuevoTicketAccRTA.Text = "OK";
                lblPedirNuevoTicketAccRTA.Refresh();
                respuesta = true;
            }
            else
            {
                lblPedirNuevoTicketAccRTA.ForeColor = Color.Red;
                lblPedirNuevoTicketAccRTA.Text = "ERROR";
                lblPedirNuevoTicketAccRTA.Refresh();
            }

            return respuesta;
        }