1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.handler.codec.http.websocketx;
17
18 import java.security.MessageDigest;
19 import java.security.NoSuchAlgorithmException;
20
21 import org.jboss.netty.buffer.ChannelBuffer;
22 import org.jboss.netty.buffer.ChannelBuffers;
23 import org.jboss.netty.handler.codec.base64.Base64;
24 import org.jboss.netty.util.CharsetUtil;
25
26
27
28
29 final class WebSocketUtil {
30
31
32
33
34 @Deprecated
35 static byte[] md5(byte[] bytes) {
36 try {
37 MessageDigest md = MessageDigest.getInstance("MD5");
38 return md.digest(bytes);
39 } catch (NoSuchAlgorithmException e) {
40 throw new InternalError("MD5 not supported on this platform");
41 }
42 }
43
44
45
46
47
48
49
50
51 static ChannelBuffer md5(ChannelBuffer buffer) {
52 try {
53 MessageDigest md = MessageDigest.getInstance("MD5");
54 if (buffer.hasArray()) {
55 int offset = buffer.arrayOffset() + buffer.readerIndex();
56 int length = buffer.readableBytes();
57 md.update(buffer.array(), offset, length);
58 } else {
59 md.update(buffer.toByteBuffer());
60 }
61 return ChannelBuffers.wrappedBuffer(md.digest());
62 } catch (NoSuchAlgorithmException e) {
63 throw new InternalError("MD5 not supported on this platform");
64 }
65 }
66
67
68
69
70 @Deprecated
71 static byte[] sha1(byte[] bytes) {
72 try {
73 MessageDigest md = MessageDigest.getInstance("SHA1");
74 return md.digest(bytes);
75 } catch (NoSuchAlgorithmException e) {
76 throw new InternalError("SHA-1 not supported on this platform");
77 }
78 }
79
80
81
82
83
84
85
86
87 static ChannelBuffer sha1(ChannelBuffer buffer) {
88 try {
89 MessageDigest md = MessageDigest.getInstance("SHA1");
90 if (buffer.hasArray()) {
91 int offset = buffer.arrayOffset() + buffer.readerIndex();
92 int length = buffer.readableBytes();
93 md.update(buffer.array(), offset, length);
94 } else {
95 md.update(buffer.toByteBuffer());
96 }
97 return ChannelBuffers.wrappedBuffer(md.digest());
98 } catch (NoSuchAlgorithmException e) {
99 throw new InternalError("SHA-1 not supported on this platform");
100 }
101 }
102
103
104
105
106 @Deprecated
107 static String base64(byte[] bytes) {
108 ChannelBuffer hashed = ChannelBuffers.wrappedBuffer(bytes);
109 return Base64.encode(hashed).toString(CharsetUtil.UTF_8);
110 }
111
112
113
114
115
116
117
118
119 static String base64(ChannelBuffer buffer) {
120 return Base64.encode(buffer).toString(CharsetUtil.UTF_8);
121 }
122
123
124
125
126
127
128
129
130 static byte[] randomBytes(int size) {
131 byte[] bytes = new byte[size];
132
133 for (int i = 0; i < size; i++) {
134 bytes[i] = (byte) randomNumber(0, 255);
135 }
136
137 return bytes;
138 }
139
140
141
142
143
144
145
146
147
148
149 static int randomNumber(int min, int max) {
150 return (int) (Math.random() * max + min);
151 }
152
153 private WebSocketUtil() {
154
155 }
156 }