This homework is due on Monday, December 11, 2000. Note: K2.3 denotes homework problem 3 from chapter 2 of the class text.
Retrieval works as follows:
HTTP/1.0 401 Unauthorized WWW-Authenticate: otp-md5 487 dog2where "487" is the sequence integer and "dog2" the seed. (In a real system, the syntax would be slightly more complicated, but this format is simpler to parse.)
GET file HTTP/1.0 Authorization: otp-md5 3503785b369cda8bYou might be able to use 64-bit integers directly to scanf() this value.
Your system consists of a very basic web client, a web server and a hash generator:
server port hashn(password) n seedFor example:
server 8080 hashn(password) n seed
The server does not have to maintain connections across requests. It simply retrieves files relative to the current directory. It does not have to set the Content-Type header.
client password url (without http://)For example,
client stalebeer dog2 rome.clic.columbia.edu:8080/example.txt
The client simply displays the response body to stdout, without attempting to render HTML or other content types. The server is expected to close the connection after delivering the document. The emphasis is on the authentication system, not replicating details of a web server or client, although it may be useful to be able to test your client against a real web server.
lamport password n seed(35 pts.)
You can convert PEM/base-64 encoded data, as returned, for example, by Jimmie Joe Bob's Pork Products and Certificate Authority using juju (already installed on Columbia CS systems). (10 pts.)
Last updated by Henning Schulzrinne