O'Reilly logo

Writing Apache Modules with Perl and C by Lincoln Stein, Doug MacEachern

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

11.6. Message Digest Algorithm Functions

Apache includes a version of the MD5 Message Digest algorithm distributed as freeware by RSA Data Security Inc. These routines provide the functionality of the Perl MD5 module used in Chapters Chapter 5 through Chapter 7. In fact, both the Apache and Perl MD5 implementations are derived from the same source code.

Although MD5 was originally incorporated into Apache to support Digest Authentication, you can use it for whatever purpose you desire. As we've seen in earlier chapters, MD5 turns out to be handy anywhere you need to quickly check the authenticity of a file or message.

You will find all the data types and routines described in this section in header file ap_md5.h.

void ap_MD5Init (AP_MD5_CTX *context)

To compute an MD5 checksum, you will initialize the algorithm with ap_MD5Init(), add one or more rounds of data to it with ap_MD5Update(), and retrieve the checksum with ap_MD5Final(). A "context" record, the AP_MD5_CTX struct, keeps track of the state of the algorithm throughout this process.

ap_MD5Init() takes a new, uninitialized context variable and initializes it so that the algorithm is ready to use. You do not have to worry about what's in the context struct. You can create it on the stack or allocate it from a resource pool:

AP_MD5_CTX context;
ap_MD5Init(&context);

void ap_MD5Update (AP_MD5_CTX *context, const unsigned char *input, unsigned int inputLen)

Once the context is initialized, call ap_MD5Update() as many ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required