]> git.ipfire.org Git - thirdparty/cups.git/blob - scripting/java/src/com/easysw/cups/IPPMD5.java
Load cups into easysw/current.
[thirdparty/cups.git] / scripting / java / src / com / easysw / cups / IPPMD5.java
1 package com.easysw.cups;
2
3 /**
4 * @version 1.00 06-NOV-2002
5 * @author Easy Software Products
6 *
7 * Internet Printing Protocol definitions for the Common UNIX Printing
8 * System (CUPS).
9 *
10 * Copyright 1997-2002 by Easy Software Products.
11 *
12 * These coded instructions, statements, and computer programs are the
13 * property of Easy Software Products and are protected by Federal
14 * copyright law. Distribution and use rights are outlined in the file
15 * "LICENSE.txt" which should have been included with this file. If this
16 * file is missing or damaged please contact Easy Software Products
17 * at:
18 *
19 * Attn: CUPS Licensing Information
20 * Easy Software Products
21 * 44141 Airport View Drive, Suite 204
22 * Hollywood, Maryland 20636-3111 USA
23 *
24 * Voice: (301) 373-9603
25 * EMail: cups-info@cups.org
26 * WWW: http://www.cups.org
27 */
28
29 /**
30 * Digest MD5 password routines.
31 *
32 * @author TDB
33 * @version 1.0
34 * @since JDK1.3
35 */
36 import java.security.*;
37
38 public class IPPMD5
39 {
40 public MessageDigest md = null;
41 static private IPPMD5 md5 = null;
42 private static final char[] hexChars = {'0','1','2','3','4','5','6','7',
43 '8','9','a','b','c','d','e','f'};
44
45 /**
46 * Constructor is private so you must use the getInstance method
47 */
48 private IPPMD5() throws NoSuchAlgorithmException
49 {
50 md = MessageDigest.getInstance("MD5");
51 }
52
53
54 /**
55 * This returns the singleton instance
56 */
57 public static IPPMD5 getInstance() throws NoSuchAlgorithmException
58 {
59
60 if (md5 == null)
61 {
62 md5 = new IPPMD5();
63 }
64 return (md5);
65 }
66
67
68 public String hashData(byte[] dataToHash)
69 {
70 return(hexStringFromBytes((calculateHash(dataToHash))));
71 }
72
73
74 private byte[] calculateHash(byte[] dataToHash)
75 {
76 md.update(dataToHash, 0, dataToHash.length);
77 return(md.digest());
78 }
79
80
81 public String hexStringFromBytes(byte[] b)
82 {
83 String hex = "";
84 int msb;
85 int lsb = 0;
86 int i;
87
88 // MSB maps to idx 0
89 for (i = 0; i < b.length; i++)
90 {
91 msb = ((int)b[i] & 0x000000FF) / 16;
92 lsb = ((int)b[i] & 0x000000FF) % 16;
93 // System.out.println("I: " + i + " B: " + b[i] + " MSB: " +
94 // msb + " LSB: " + lsb );
95 hex = hex + hexChars[msb] + hexChars[lsb];
96 }
97 return(hex);
98 }
99
100
101
102
103
104 public String MD5Digest( String user, String passwd, String realm,
105 String method, String resource, String nonce )
106 {
107 String tmp;
108 String A1, A2;
109 String auth_string = "";
110
111 try
112 {
113 tmp = user + ":" + realm + ":" + passwd;
114 md = MessageDigest.getInstance("MD5");
115 A1 = hexStringFromBytes(md.digest(tmp.getBytes()));
116
117 tmp = method + ":" + resource;
118 md = MessageDigest.getInstance("MD5");
119 A2 = hexStringFromBytes(md.digest(tmp.getBytes()));
120
121 tmp = A1 + ":" + nonce + ":" + A2;
122 md = MessageDigest.getInstance("MD5");
123 auth_string = hexStringFromBytes(md.digest(tmp.getBytes()));
124 return(auth_string);
125 }
126 catch (NoSuchAlgorithmException e)
127 {
128 }
129 return("");
130
131 }
132
133
134 }