blob: 6460508ed97f0931f11e3589978a5888900327ec [file] [log] [blame]
#ifdef HAVE_CONFIG_H
#include <wsman_config.h>
#endif
#include <u/libu.h>
int main(int argc, char **argv)
{
static const char *const test[7] = {
"", /*d41d8cd98f00b204e9800998ecf8427e*/
"a", /*0cc175b9c0f1b6a831c399e269772661*/
"abc", /*900150983cd24fb0d6963f7d28e17f72*/
"message digest", /*f96b697d7cb7938d525a2f31aaf161d0*/
"abcdefghijklmnopqrstuvwxyz", /*c3fcd3d76192e4007dfb496cca67e13b*/
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
/*d174ab98d277d9f5a5611c2c9f419d9f*/
"12345678901234567890123456789012345678901234567890123456789012345678901234567890" /*57edf4a22be3c955ac49da2e2107b67a*/
};
int i;
for (i = 0; i < 7; ++i) {
md5_state_t state;
md5_byte_t digest[16];
int di;
md5_init(&state);
md5_append(&state, (const md5_byte_t *)test[i], strlen(test[i]));
md5_finish(&state, digest);
printf("MD5 (\"%s\") = ", test[i]);
for (di = 0; di < 16; ++di)
printf("%02x", digest[di]);
printf("\n");
}
md5_state_t ctx;
/* computer A1 */
md5_byte_t HA1[16];
md5_init (&ctx);
md5_append (&ctx, (const md5_byte_t *)"Mufasa", 6 );
md5_append (&ctx, (const md5_byte_t *)":", 1);
md5_append (&ctx, (const md5_byte_t *)"testrealm@host.com", 18);
md5_append (&ctx, (const md5_byte_t *)":", 1);
md5_append (&ctx, (const md5_byte_t *)"Circle Of Life", 14);
md5_finish(&ctx, HA1);
printf("HA2: %s\n", md52char(HA1));
/* compute A2 */
md5_byte_t HA2[16];
md5_init (&ctx);
md5_append (&ctx, (const md5_byte_t *)"GET", 3 );
md5_append (&ctx, (const md5_byte_t *)":", 1);
md5_append (&ctx, (const md5_byte_t *)"/dir/index.html", 15);
md5_finish(&ctx, HA2);
printf("HA2: %s\n", md52char(HA2));
/* compute Response */
md5_byte_t Response[16];
md5_init (&ctx);
md5_append (&ctx, (const md5_byte_t *)md52char(HA1), strlen(md52char(HA1)) );
md5_append (&ctx, (const md5_byte_t *)":", 1);
md5_append (&ctx, (const md5_byte_t *)"dcd98b7102dd2f0e8b11d0f600bfb0c093", 34);
md5_append (&ctx, (const md5_byte_t *)":", 1);
md5_append (&ctx, (const md5_byte_t *)"00000001", 8);
md5_append (&ctx, (const md5_byte_t *)":", 1);
md5_append (&ctx, (const md5_byte_t *)"0a4f113b", 8 );
md5_append (&ctx, (const md5_byte_t *)":", 1);
md5_append (&ctx, (const md5_byte_t *)"auth", 4);
md5_append (&ctx, (const md5_byte_t *)":", 1);
md5_append (&ctx, (const md5_byte_t *)md52char(HA2), strlen(md52char(HA2)) );
md5_finish(&ctx, Response);
printf("Response: %s\n", md52char(Response));
return 0;
}