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(); }
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(); }
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); }
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); }
// 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); }
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(); } }
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); } } } }
private void PreparaPrivados() { buzon_verifica.Reserva(bytes_autentica); buzon_contador.Reserva(ContadorCTR.BytesContador); }