Example #1
0
        public static void ProcessRequest(ClientWebRequest equest)
        {
            lock(syncobj) {
            if(db == null) {
            db = new PubKeyDatabase("default",File.Open("OpenNetDB_client",FileMode.OpenOrCreate));

            }
            if(db.Length == 0) {
            db.AddPublicKey(db.GenPublicPrivateKey(2048));
            db.GetPublicKeyOnly(db[0]);
            }
            Uri url = new Uri("http:/"+equest.UnsanitizedRelativeURI.Replace("idw.local.ids","127.0.0.1"));
            if(!drivers.ContainsKey(url.Host)) {
            Console.WriteLine("Connecting to "+url.Host);
                HttpWebRequest request = HttpWebRequest.Create("http://"+url.Host+"/OpenNetProvider") as HttpWebRequest;
            request.AllowWriteStreamBuffering = false;
            Stream receiver = new TrashyStream(request.GetResponse().GetResponseStream());
            BinaryReader mreader = new BinaryReader(receiver);
            byte[] guid = mreader.ReadBytes(16);
            Console.WriteLine(BitConverter.ToString(guid));
            request = HttpWebRequest.Create("http://"+url.Host+"/OpenNetProvider") as HttpWebRequest;
            request.Method = "POST";
            request.ContentLength = 9999999999;
            request.AllowWriteStreamBuffering = false;
            Stream sender = new TrashyStream(request.GetRequestStream());
            BinaryWriter mwriter = new BinaryWriter(sender);
            mwriter.Write(guid);
            mwriter.Flush();
            byte[] theirpubkey = mreader.ReadBytes(mreader.ReadInt32());
            Stream dbStr = File.Open("keyDB.db", FileMode.OpenOrCreate);

            byte[] ourpublickey = db.GetPublicKeyOnly(db[0]);
            byte[] ourprivatekey = db[0];
            mwriter.Write(ourpublickey.Length);
            mwriter.Write(ourpublickey);
            mwriter.Flush();
            db.AddPublicKey(theirpubkey);
            Stream securedStream = new TrashyStream(db.CreateAuthenticatedStream(ourprivatekey, new DualStream(sender, receiver), 32));

            Console.WriteLine("Secure stream negotiated");

            driver = new OpenNetProtocolDriver(securedStream);
            drivers.Add(url.Host,driver);
                Console.WriteLine("Driver initialized");

            }
                mvent.Reset();
            currentRequest = equest;
                currentURL = url;
                driver = drivers[url.Host];
                drivers[url.Host].onConnectionEstablished += HandleonConnectionEstablished;

                drivers[url.Host].OpenStream();

                mvent.WaitOne();

            }
        }
Example #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Opening HTTP request");
            HttpWebRequest request = HttpWebRequest.Create("http://127.0.0.1/OpenNetProvider") as HttpWebRequest;
            request.AllowWriteStreamBuffering = false;
            Stream receiver = new TrashyStream(request.GetResponse().GetResponseStream());
            BinaryReader mreader = new BinaryReader(receiver);
            byte[] guid = mreader.ReadBytes(16);
            Console.WriteLine(BitConverter.ToString(guid));
            request = HttpWebRequest.Create("http://127.0.0.1/OpenNetProvider") as HttpWebRequest;
            request.Method = "POST";
            request.ContentLength = 9999999999;
            request.AllowWriteStreamBuffering = false;
            Stream sender = new TrashyStream(request.GetRequestStream());
            BinaryWriter mwriter = new BinaryWriter(sender);
            mwriter.Write(guid);
            mwriter.Flush();
            byte[] theirpubkey = mreader.ReadBytes(mreader.ReadInt32());
            Stream dbStr = File.Open("keyDB.db", FileMode.OpenOrCreate);
            Console.WriteLine("Enter system password");
            PubKeyDatabase db = new PubKeyDatabase(ReadPassword(), dbStr);
            if (db.Length == 0)
            {
                db.AddPublicKey(db.GenPublicPrivateKey(2048));
            }
            byte[] ourpublickey = db.GetPublicKeyOnly(db[0]);
            byte[] ourprivatekey = db[0];
            mwriter.Write(ourpublickey.Length);
            mwriter.Write(ourpublickey);
            mwriter.Flush();
            db.AddPublicKey(theirpubkey);
            Stream securedStream = new TrashyStream(db.CreateAuthenticatedStream(ourprivatekey, new DualStream(sender, receiver), 32));

            Console.WriteLine("Secure stream negotiated");

               driver  = new OpenNetProvider.OpenNetProtocolDriver(securedStream);
            Console.WriteLine("Driver initialized");
            driver.OpenStream();

            driver.onConnectionEstablished += new OpenNetProvider.OpenNetProtocolDriver.ConnectionEstablishedEventArgs(driver_onConnectionEstablished);
        }
Example #3
0
 public void onRequest(ClientWebRequest request)
 {
     if(request.Method == "GET") {
     //Initiate session
     ClientHttpResponse response = new ClientHttpResponse();
         response.ContentType = "text/html";
         response.len = 1024*1024*300;
         response.StatusCode = "200 OK";
         response.WriteHeader(request.stream);
         ClientSession session = new ClientSession();
         session.sessionID = Guid.NewGuid();
         TrashyStream garbage = new TrashyStream(request.stream);
         session.writer = garbage;
         BinaryWriter mwriter = new BinaryWriter(garbage);
         mwriter.Write(session.sessionID.ToByteArray());
         mwriter.Flush();
         lock(ClientSession.sessions) {
         ClientSession.sessions.Add(session.sessionID,session);
         }
         session.WaitHandle.WaitOne();
     }else {
         try {
     TrashyStream reader = new TrashyStream(request.stream);
         BinaryReader mreader = new BinaryReader(reader);
         ClientSession currentSession = ClientSession.sessions[new Guid(mreader.ReadBytes(16))];
         currentSession.reader = reader;
         BinaryWriter mwriter = new BinaryWriter(currentSession.writer);
         byte[] ourprivatekey = db[0];
         byte[] ourpubkey = db.GetPublicKeyOnly(ourprivatekey);
         mwriter.Write(ourpubkey.Length);
         mwriter.Write(ourpubkey);
         mwriter.Flush();
         byte[] theirpubkey = mreader.ReadBytes(mreader.ReadInt32());
         if(!db.IsKeyTrusted(theirpubkey)) {
         db.AddPublicKey(theirpubkey);
             db.Commit();
         }
         currentSession.securedStream = new TrashyStream(db.CreateAuthenticatedStream(ourprivatekey,new DualStream(currentSession.writer,currentSession.reader),32));
         Console.WriteLine("Secure stream negotiated");
         currentSession.pubKey = BitConverter.ToString(theirpubkey);
         OpenNetProtocolDriver driver = new OpenNetProtocolDriver(currentSession);
         }catch(Exception er) {
         Console.WriteLine(er);
         }
     }
 }