예제 #1
0
 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");
 }
예제 #2
0
        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();
            }
        }