Coverage Report

Created: 2025-06-24 07:01

/src/cups/cups/md5passwd.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * MD5 password support for CUPS (deprecated).
3
 *
4
 * Copyright 2007-2017 by Apple Inc.
5
 * Copyright 1997-2005 by Easy Software Products.
6
 *
7
 * These coded instructions, statements, and computer programs are the
8
 * property of Apple Inc. and are protected by Federal copyright
9
 * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
10
 * which should have been included with this file.  If this file is
11
 * missing or damaged, see the license at "http://www.cups.org/".
12
 *
13
 * This file is subject to the Apple OS-Developed Software exception.
14
 */
15
16
/*
17
 * Include necessary headers...
18
 */
19
20
#include <cups/cups.h>
21
#include "http-private.h"
22
#include "string-private.h"
23
24
25
/*
26
 * 'httpMD5()' - Compute the MD5 sum of the username:group:password.
27
 *
28
 * @deprecated@
29
 */
30
31
char *          /* O - MD5 sum */
32
httpMD5(const char *username,   /* I - User name */
33
        const char *realm,    /* I - Realm name */
34
        const char *passwd,   /* I - Password string */
35
  char       md5[33])   /* O - MD5 string */
36
0
{
37
0
  unsigned char   sum[16];  /* Sum data */
38
0
  char      line[256];  /* Line to sum */
39
40
41
 /*
42
  * Compute the MD5 sum of the user name, group name, and password.
43
  */
44
45
0
  snprintf(line, sizeof(line), "%s:%s:%s", username, realm, passwd);
46
0
  cupsHashData("md5", (unsigned char *)line, strlen(line), sum, sizeof(sum));
47
48
 /*
49
  * Return the sum...
50
  */
51
52
0
  return ((char *)cupsHashString(sum, sizeof(sum), md5, 33));
53
0
}
54
55
56
/*
57
 * 'httpMD5Final()' - Combine the MD5 sum of the username, group, and password
58
 *                    with the server-supplied nonce value, method, and
59
 *                    request-uri.
60
 *
61
 * @deprecated@
62
 */
63
64
char *          /* O - New sum */
65
httpMD5Final(const char *nonce,   /* I - Server nonce value */
66
             const char *method,  /* I - METHOD (GET, POST, etc.) */
67
       const char *resource,  /* I - Resource path */
68
             char       md5[33])  /* IO - MD5 sum */
69
0
{
70
0
  unsigned char   sum[16];  /* Sum data */
71
0
  char      line[1024]; /* Line of data */
72
0
  char      a2[33];   /* Hash of method and resource */
73
74
75
 /*
76
  * First compute the MD5 sum of the method and resource...
77
  */
78
79
0
  snprintf(line, sizeof(line), "%s:%s", method, resource);
80
0
  cupsHashData("md5", (unsigned char *)line, strlen(line), sum, sizeof(sum));
81
0
  cupsHashString(sum, sizeof(sum), a2, sizeof(a2));
82
83
 /*
84
  * Then combine A1 (MD5 of username, realm, and password) with the nonce
85
  * and A2 (method + resource) values to get the final MD5 sum for the
86
  * request...
87
  */
88
89
0
  snprintf(line, sizeof(line), "%s:%s:%s", md5, nonce, a2);
90
0
  cupsHashData("md5", (unsigned char *)line, strlen(line), sum, sizeof(sum));
91
92
0
  return ((char *)cupsHashString(sum, sizeof(sum), md5, 33));
93
0
}
94
95
96
/*
97
 * 'httpMD5String()' - Convert an MD5 sum to a character string.
98
 *
99
 * @deprecated@
100
 */
101
102
char *          /* O - MD5 sum in hex */
103
httpMD5String(const unsigned char *sum, /* I - MD5 sum data */
104
              char                md5[33])
105
          /* O - MD5 sum in hex */
106
0
{
107
0
  return ((char *)cupsHashString(sum, 16, md5, 33));
108
0
}