Пример #1
0
        // recibe el mensaje (en el cliente)
        internal void Recibe()
        {
            conexion.RecibeSocket(buzon_mensaje, 0, buzon_mensaje.Longitud);
            //
            seguridad.ImprimeRecibe(
                buzon_billete, buzon_indice, buzon_longitud,
                "RSA ( S1 | protocolo )");
            //
            // se valida el mensaje
            if (buzon_billete.TomaInt(0) != 0 ||
                buzon_indice.TomaInt(0) != 0 ||
                buzon_longitud.TomaInt(0) != buzon_mensaje.Longitud)
            {
                throw new ErrorConexion("Violación del protocolo de seguridad.");
            }
            //
            CifradoRSA cifrado_RSA = new CifradoRSA();

            try {
                cifrado_RSA.IniciaPrivada(seguridad.seguridad_servidor.clave_privada);
                cifrado_RSA.DescifraPrivada(buzon_cifrado, buzon_texto);
            } finally {
                cifrado_RSA.Termina();
            }
            //
            if (!Buzon.DatosIguales(this.buzon_protocolo, Seguridad.protocolo))
            {
                throw new ErrorConexion("Protocolo de seguridad inconsistente.");
            }
            //
            seguridad.EstableceSecreto(this.buzon_secreto);
        }
Пример #2
0
        // envia el mensaje (desde el servicio)
        internal void Envia()
        {
            buzon_billete.PonLong(0, 0);
            buzon_indice.PonInt(0, 0);
            buzon_longitud.PonInt(0, buzon_mensaje.Longitud);
            //
            Buzon secreto = seguridad.GeneraSecreto();

            //
            Buzon.CopiaDatos(secreto, this.buzon_secreto);
            Buzon.CopiaDatos(Seguridad.protocolo, this.buzon_protocolo);
            //
            CifradoRSA cifrado_RSA = new CifradoRSA();

            try {
                cifrado_RSA.IniciaPublica(seguridad.clave_publica);
                cifrado_RSA.CifraPublica(buzon_texto, buzon_cifrado);
            } finally {
                cifrado_RSA.Termina();
            }
            //
            conexion.EnviaSocket(buzon_mensaje, buzon_mensaje.Longitud);
            //
            seguridad.ImprimeEnvia(
                buzon_billete, buzon_indice, buzon_longitud,
                "RSA ( S1 | protocolo )");
            //
            seguridad.EstableceSecreto(secreto);
        }