Ejemplo n.º 1
0
 internal void PreparaBuzones(int longitud_paquete)
 {
     bytes_paquete = longitud_paquete;
     bytes_mensaje = bytes_cabecera + bytes_paquete + bytes_autentica;
     //
     if (conexion.BuzonMensaje.Longitud == 0)
     {
         conexion.BuzonMensaje.Reserva(bytes_mensaje);
         ConstruyeBuzones();
         return;
     }
     if (conexion.BuzonMensaje.Longitud < bytes_mensaje)
     {
         AnulaBuzones();
         Buzon nuevo = new Buzon();
         nuevo.Reserva(bytes_mensaje);
         //if (conexion.paquete_entrada ||
         //             conexion.paquete_salida    ) {
         Buzon.CopiaDatos(conexion.BuzonMensaje, nuevo, conexion.BuzonMensaje.Longitud);
         //}
         conexion.BuzonMensaje.TrasponBuzon(nuevo);
         ConstruyeBuzones();
         return;
     }
     ReestableceBuzones();
 }
Ejemplo n.º 2
0
        private static void Imprime(ContadorCTR CTR)
        {
            Console.Write("    ");
            Buzon contador = new Buzon();

            contador.Reserva(ContadorCTR.BytesContador);
            CTR.AsignaContador(contador);
            for (int i = 0; i < ContadorCTR.BytesContador; ++i)
            {
                Console.Write("{0:X2}", contador [i]);
            }
            Console.WriteLine();
        }
Ejemplo n.º 3
0
        internal Buzon GeneraSecreto()
        {
            Buzon secreto = new Buzon();

            secreto.Reserva(Seguridad.longitud_secreto);
            DatosAleatorios aleatorio = new DatosAleatorios();

            try {
                aleatorio.Inicia();
                aleatorio.Genera(secreto);
            } finally {
                aleatorio.Termina();
            }
            return(secreto);
        }
Ejemplo n.º 4
0
        private void Prepara(Tipologia tipologia)
        {
            bytes_clave     = 0;
            bytes_numero    = 0;
            bytes_protocolo = 0;
            if (tipologia == Tipologia.Secreto)
            {
                bytes_clave = Seguridad.longitud_secreto;
            }
            if (tipologia == Tipologia.Inicio || tipologia == Tipologia.Billete)
            {
                bytes_numero = bytes_billete;
            }
            if (tipologia == Tipologia.Inicio)
            {
                bytes_protocolo = Seguridad.protocolo.Longitud;
            }
            bytes_datos   = bytes_clave + bytes_numero + bytes_protocolo;
            bytes_mensaje = bytes_cabecera + bytes_datos + bytes_autentica;
            //
            buzon_mensaje   = new Buzon();
            buzon_clave     = new Buzon();
            buzon_numero    = new Buzon();
            buzon_protocolo = new Buzon();
            //
            int inicio_clave     = bytes_cabecera;
            int inicio_numero    = inicio_clave + bytes_clave;
            int inicio_protocolo = inicio_numero + bytes_numero;

            //
            buzon_mensaje.Reserva(bytes_mensaje);
            PreparaCabecera(buzon_mensaje);
            if (bytes_clave != 0)
            {
                buzon_mensaje.ConstruyePorcion(inicio_clave, bytes_clave, buzon_clave);
            }
            if (bytes_numero != 0)
            {
                buzon_mensaje.ConstruyePorcion(inicio_numero, bytes_numero, buzon_numero);
            }
            if (bytes_protocolo != 0)
            {
                buzon_mensaje.ConstruyePorcion(inicio_protocolo, bytes_protocolo, buzon_protocolo);
            }
            PreparaGrupos(buzon_mensaje, bytes_datos);
        }
Ejemplo n.º 5
0
 // prepara los buzones
 private void Prepara()
 {
     bytes_protocolo = Seguridad.protocolo.Longitud;
     bytes_texto     = bytes_secreto + bytes_protocolo;
     //
     buzon_texto     = new Buzon();
     buzon_secreto   = new Buzon();
     buzon_protocolo = new Buzon();
     //
     buzon_texto.Reserva(bytes_texto);
     buzon_texto.ConstruyePorcion(0, bytes_secreto, buzon_secreto);
     buzon_texto.ConstruyePorcion(bytes_secreto, bytes_protocolo, buzon_protocolo);
     //
     buzon_mensaje = new Buzon();
     buzon_cifrado = new Buzon();
     //
     buzon_mensaje.Reserva(bytes_mensaje);
     PreparaCabecera(buzon_mensaje);
     buzon_mensaje.ConstruyePorcion(bytes_cabecera, bytes_cifrado, buzon_cifrado);
 }
Ejemplo n.º 6
0
        internal long GeneraBillete(long previo)
        {
            Buzon buzon = new Buzon();

            buzon.Reserva(sizeof(long));
            DatosAleatorios aleatorio = new DatosAleatorios();

            try {
                aleatorio.Inicia();
                while (true)
                {
                    aleatorio.Genera(buzon);
                    long billete = buzon.TomaLong(0);
                    if (billete != previo)
                    {
                        return(billete);
                    }
                }
            } finally {
                aleatorio.Termina();
            }
        }
Ejemplo n.º 7
0
        private void EstableceSecreto(Buzon secreto, bool encripta, bool cliente, string funcion)
        {
            Buzon mensaje = new Buzon();

            mensaje.ReservaYCopia(funcion);
            Buzon clave = new Buzon();

            clave.Reserva(Seguridad.longitud_secreto);
            //
            CalculoHMAC calculo_HMAC = new CalculoHMAC();

            try {
                calculo_HMAC.Inicia(secreto);
                calculo_HMAC.Calcula(mensaje, clave);
            } finally {
                calculo_HMAC.Termina();
            }
            //
            if (encripta)
            {
                if (cliente)
                {
                    if (de_cliente)
                    {
                        cifrado_AES_local.Inicia(clave);
                    }
                    if (de_servicio)
                    {
                        cifrado_AES_remoto.Inicia(clave);
                    }
                }
                else
                {
                    if (de_cliente)
                    {
                        cifrado_AES_remoto.Inicia(clave);
                    }
                    if (de_servicio)
                    {
                        cifrado_AES_local.Inicia(clave);
                    }
                }
            }
            else
            {
                if (cliente)
                {
                    if (de_cliente)
                    {
                        calculo_HMAC_local.Inicia(clave);
                    }
                    if (de_servicio)
                    {
                        calculo_HMAC_remoto.Inicia(clave);
                    }
                }
                else
                {
                    if (de_cliente)
                    {
                        calculo_HMAC_remoto.Inicia(clave);
                    }
                    if (de_servicio)
                    {
                        calculo_HMAC_local.Inicia(clave);
                    }
                }
            }
        }
Ejemplo n.º 8
0
 private void PreparaPrivados()
 {
     buzon_verifica.Reserva(bytes_autentica);
     buzon_contador.Reserva(ContadorCTR.BytesContador);
 }