
Hi all, first of all, my two cents from quickly glancing at the provided MD5 code. Basically all of this was already mentioned by my foreposters and Kevin himself. * The library should definitely be made header-only, and during my quick inspection I did not discover anything that would stand in the way of that. * The library should be extended into a more general framework into which other MD algorithms can easily be integrated. * The implementation should be endian invariant to make cross platform digest checks feasible. The last observation sparked the idea of introducing a simple abstraction layer I call octet iterators. As I envision them, these, in their most basic form, would be iterators that allow iterating over the octets of builtin types in a defined byte order (e.g. network byte order). In a second step, more high level constructs could be introduced, of which two come to my mind naturally: 1. Easy composition operations to allow iterating over the octets of user-defined types. 2. Adapters of other iterator types to make it possible to easily iterate over the octets of a std::list<anything>, for example. Such a library would not only come in handy for the problem at hand, but also for other libraries that have to deal with low level aspects, such as the binary iostreams library discussed recently. I'd greatly appreciate any feedback on this topic, and if it should turn out to be of general use to the boost community, I would be happy to give it a shot. Regards, Kimon