DIGEST-MD5 README -- Notes on the implementation
Copyright (C) 2004 Simon Josefsson
See the end for copying conditions.
This directory hold an implementation of DIGEST-MD5.
This module is written in portable C89. It may be used as a stand-alone implementation, outside of the framework that GNU SASL provide. It needs two external symbols, gc_md5 and gc_hmac_md5, which should be easy to re-implement, if you are not using libgc.
The files CLIENT.C and SERVER.C contain the glue between GNU SASL and the stand-alone implementation. Currently it is the best (only) example on how to use the module.
For updates to the project, see <http://www.gnu.org/software/gsasl/>.
Random notes follow.
- I initialled wanted to use abnf2perl from <http://www.cs.columbia.edu/sip/syntax/abnfperl/> to build a Flex/Yacc grammar for DIGEST-MD5, instead of parser.c. However, the perl script did not seem to handle several required construct, and did not generally seem finished. Secondly, the Yacc generated code was difficult to read, and hence difficult to review. I still wish to explore this way, because the current parser is too permissive, but don't have time now.
- It intentionally do not implement sub-sequent authentication. If you believe that saving one round-trip in some, for most users uncommon situations, make up for the added code complexity, hire me to implement the missing pieces.
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.
