]>
git.ipfire.org Git - thirdparty/cups.git/blob - cups/md5passwd.c
2 * MD5 password support for CUPS (deprecated).
4 * Copyright 2007-2017 by Apple Inc.
5 * Copyright 1997-2005 by Easy Software Products.
7 * Licensed under Apache License v2.0. See the file "LICENSE" for more information.
11 * Include necessary headers...
14 #include <cups/cups.h>
15 #include "http-private.h"
16 #include "string-private.h"
20 * 'httpMD5()' - Compute the MD5 sum of the username:group:password.
25 char * /* O - MD5 sum */
26 httpMD5(const char *username
, /* I - User name */
27 const char *realm
, /* I - Realm name */
28 const char *passwd
, /* I - Password string */
29 char md5
[33]) /* O - MD5 string */
31 unsigned char sum
[16]; /* Sum data */
32 char line
[256]; /* Line to sum */
36 * Compute the MD5 sum of the user name, group name, and password.
39 snprintf(line
, sizeof(line
), "%s:%s:%s", username
, realm
, passwd
);
40 cupsHashData("md5", (unsigned char *)line
, strlen(line
), sum
, sizeof(sum
));
46 return ((char *)cupsHashString(sum
, sizeof(sum
), md5
, 33));
51 * 'httpMD5Final()' - Combine the MD5 sum of the username, group, and password
52 * with the server-supplied nonce value, method, and
58 char * /* O - New sum */
59 httpMD5Final(const char *nonce
, /* I - Server nonce value */
60 const char *method
, /* I - METHOD (GET, POST, etc.) */
61 const char *resource
, /* I - Resource path */
62 char md5
[33]) /* IO - MD5 sum */
64 unsigned char sum
[16]; /* Sum data */
65 char line
[1024]; /* Line of data */
66 char a2
[33]; /* Hash of method and resource */
70 * First compute the MD5 sum of the method and resource...
73 snprintf(line
, sizeof(line
), "%s:%s", method
, resource
);
74 cupsHashData("md5", (unsigned char *)line
, strlen(line
), sum
, sizeof(sum
));
75 cupsHashString(sum
, sizeof(sum
), a2
, sizeof(a2
));
78 * Then combine A1 (MD5 of username, realm, and password) with the nonce
79 * and A2 (method + resource) values to get the final MD5 sum for the
83 snprintf(line
, sizeof(line
), "%s:%s:%s", md5
, nonce
, a2
);
84 cupsHashData("md5", (unsigned char *)line
, strlen(line
), sum
, sizeof(sum
));
86 return ((char *)cupsHashString(sum
, sizeof(sum
), md5
, 33));
91 * 'httpMD5String()' - Convert an MD5 sum to a character string.
96 char * /* O - MD5 sum in hex */
97 httpMD5String(const unsigned char *sum
, /* I - MD5 sum data */
99 /* O - MD5 sum in hex */
101 return ((char *)cupsHashString(sum
, 16, md5
, 33));