internal void EstableceSecreto(Buzon secreto) { Depuracion.Asevera(Seguridad.longitud_secreto == CifradoAES.BytesClave); Depuracion.Asevera(CifradoAES.BytesClave == CalculoHMAC.BytesValor); // if (cifrado_AES_local != null) { cifrado_AES_local.Termina(); } cifrado_AES_local = new CifradoAES(); if (cifrado_AES_remoto != null) { cifrado_AES_remoto.Termina(); } cifrado_AES_remoto = new CifradoAES(); if (calculo_HMAC_local != null) { calculo_HMAC_local.Termina(); } calculo_HMAC_local = new CalculoHMAC(); if (calculo_HMAC_remoto != null) { calculo_HMAC_remoto.Termina(); } calculo_HMAC_remoto = new CalculoHMAC(); // EstableceSecreto(secreto, true, true, "clave_encripta_cliente"); EstableceSecreto(secreto, true, false, "clave_encripta_servicio"); EstableceSecreto(secreto, false, true, "clave_autentica_cliente"); EstableceSecreto(secreto, false, false, "clave_autentica_servicio"); }
private void Cifra_AES(CifradoAES cifra_AES, ContadorCTR cuenta_CTR) { int posicion = 0; int longitud = buzon_cifrado.Longitud; //// while (true) { cuenta_CTR.AsignaContador(buzon_contador); cifra_AES.Cifra(buzon_contador); // int resto; if (CifradoAES.BytesBloque <= longitud) { resto = CifradoAES.BytesBloque; } else { resto = longitud; } // for (int i = 0; i < resto; ++i) { buzon_cifrado [posicion] ^= buzon_contador [i]; posicion++; longitud--; } // if (longitud <= 0) { return; } // cuenta_CTR.IncrementaBloque(); } }