(Steve - just an update on our progress.) Windows SSH Meeting Notes Monday, February 16th, 1998 (Tim, Doug, Mike) Thursday, February 19th, 1998 (Professor Yee, Doug, and Tim) Monday, February 23rd, 1998 (Professor Yee, Doug, Mike, and Tim) Project Archives/News at: http://www.massconfusion.com/ssh/ 3 Week countdown! :) ==================== - Doug and I are edging out way closer to an interactive vt100 session mode with full window capability. Hopefully by this weekend if we work our butts off we'll get it all together. All of our free time at this stage is going into the project. As of last Thursday our total source code was 1000 lines. As of today it sits at 4300 lines! Perhaps its that MFC bloat... Notes: ====== - I've been extensively travelling for job interviews the past two weeks, so I'm going to lump these three meetings together into one set of meeting notes. - Last week was seemingly "Miss the professor" week as we unfortunately ditched Professor Yee twice in one week (our profuse apologies!), but we did manage to meet up with him briefly last Thursday. Gave him our working exectuable and source code on the off chance he felt like poking around. - Well in the last set of meeting notes I set a alpha goal by this time - it seems that we're not too far off schedule. If things go well, we'll have a fairly interactive session going by the end of this weekend. :) Things are looking well! - The CS Department at UCSD evidently has been the target of some malicious packet sniffers. As a result the cse-software group has been forcing everyone to use SSH to connect. I let them know that we were working on a freeware Windows version. Steve Hopper (the NT/95 support person) has agreed to do some beta testing for us once we reach that stage. - Professor Yee urged us to store user options in the registry rather than an .ini file so that computers with mutiple people on them could maintain user specific options. - I'm putting these notes on the web for the rest of the quarter. - I've also started a document that describes a sample session between the client and server. IMHO, it supplements the RFC and explains things that the RFC glosses over. - Professor Yee described the PKCS#1 standard to me that clarified a few lines in the RFC that had mystified me for 8 prior to the meeting. One of those days... Progress Report =============== 980226 Thursday - Two weeks have passed and we're rapidly nearing a usable client. At this stage I am doing the first set of encrypted data exchanges succesfully (after figuring out that whole Session Key thing). - Doug has gotten a grasp on the VT100 stuff and he has some preliminary interaction going on with that. And not only that he has given us an additional bonus of Telnet! :) This was on our feature wish list to be able to switch between Telnet and SSH but we didn't think it would be feasible in our time frame. Doug coded in the telnet negotiation to get the vt100 stuff. Bonus! - All the various GUI windows and dialog boxes have been merged in courtesy of Mike. - Finished up the Socket Class so that network connectivity is encapsulated within a class. - Windows are functional and display full text sessions. 980212 Thursday - Excellent progress to report as Doug and I have been on fire. - I finally broke down and bought the O'Reilly and Associates book "termcap and terminfo" after the documentation this is publicly available on the web regarding terminals proved to be inadequate. After an hour of reading I now have a pretty clear understanding on how terminals work and how to go about doing the VT100 emulation. - I've also created an abstract secure shell class that cracks the binary packet that is used in secure shell and also packet creation functions. Also started using cryptlib to provide some of the cryptographic functions that are needed. - Doug has gotten a grasp on how Winsockets are used in MFC via the CSocket abstraction class. Personally I felt it was convuluted and unfortunately the poor documentation that comes with Visual C++ didn't help. Regardless Doug has started writing the various functions that we will be using to stream data coming in and out. - Mike is starting to merge his GUI code involving the various dialog option boxes into the main source tree. Code merges haven't been too painful as Doug and I have been merging our code fairly often - and we're also working in different files. Regardless CVS rocks! :) Highly reccomended. 980202 Sunday - Mike has various dialog boxes, menus, and toolbar ready to go and merged into the source. - CVS is finally implemented. A brief demo on how source will be controlled and also stressed the importance of modularity. The first code merge will happen next week during the meeting (the best time to do them we decided). - The Teraterm source has been a god send and Doug has been using it as a basis on how to organize his portion of the project (networking/ssh). - Doug and I worked out briefly how our two parts will interact. Though this will most likely change as we explore and code further. 980130 - Discussed various strategies in splitting the project up into three blocks that could be worked by each individual. Convinced Mike that it would be a bad idea to have a Dialog Box based app. Here's how we finally split it up: - Core SSH/Network - Doug. As Doug is the most familiar with MFC he gets to tackle this portion. As Professor Yee suggested earlier in the quarter, we'll be abstracting out the SSH stuff into a non-os specific portion that could be used on other platforms. - Document / View - Me. We'll be using the MFC "Document/View" architecture which defines specific classes - "Document" is where data should be stored and the "View" class does all the "drawing". As such, the "View" class will also do the various vt100/tty terminal emulation. - Dialog Boxes / GUI - Mike. As Mike is not pursuing the 199 he did get a easy but crucial portion. He'll be designing all the various Menus, Toolbars, Status Bars, and Dialog Boxes. I'm sure he'll finish this fairly quickly though to then he can work on something else. - Two threads will be used. One for mainly the networking stuff and the other for everything else. - Originally it was on the wish list for the product to double also as a telnet app if a SSH connection was unavailable; after looking through the Telnet spec we're deciding against this at present time. - Source control will partially be done through CVS. Tim's computer will be used as a server for the master source repository. CVS's inability to handle binary files prevents it's use for the whole project. - At present we have a bare bones project file. As we have code to add to the master source repository we do so and check it in. Brainstormed and added a series of global variables < 980130 -Examine the three crypto libraries Cryto++, Cryptlib, and RSARef. Found that latest version of Cryptlib is buggy as its in beta. - Decision to use Hungarian Notation. - Read through RFC. --------