1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.ldap.model.constants;
21
22
23
24
25
26
27
28 public enum LdapSecurityConstants
29 {
30
31 HASH_METHOD_SHA("SHA", "SHA", "sha"),
32
33
34 HASH_METHOD_SSHA("SSHA", "SHA", "ssha"),
35
36
37 HASH_METHOD_SHA256("SHA-256", "SHA-256", "sha256"),
38
39
40 HASH_METHOD_SSHA256("SSHA-256", "SHA-256", "ssha256"),
41
42
43 HASH_METHOD_SHA384("SHA-384", "SHA-384", "sha384"),
44
45
46 HASH_METHOD_SSHA384("SSHA-384", "SHA-384", "ssha384"),
47
48
49 HASH_METHOD_SHA512("SHA-512", "SHA-512", "sha512"),
50
51
52 HASH_METHOD_SSHA512("SSHA-512", "SHA-512", "ssha512"),
53
54
55 HASH_METHOD_MD5("MD5", "MD5", "md5"),
56
57
58 HASH_METHOD_SMD5("SMD5", "MD5", "smd5"),
59
60
61 HASH_METHOD_CRYPT("CRYPT", "CRYPT", "crypt"),
62
63
64 HASH_METHOD_CRYPT_MD5("CRYPT-MD5", "MD5", "crypt", "$1$"),
65
66
67 HASH_METHOD_CRYPT_SHA256("CRYPT-SHA-256", "SHA-256", "crypt", "$5$"),
68
69
70 HASH_METHOD_CRYPT_SHA512("CRYPT-SHA-512", "SHA-512", "crypt", "$6$"),
71
72
73 HASH_METHOD_CRYPT_BCRYPT("CRYPT-BCRYPT", "BCRYPT", "crypt", "$2a$"),
74
75
76 HASH_METHOD_PKCS5S2("PKCS5S2", "PBKDF2WithHmacSHA1", "PKCS5S2");
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 private String name;
94
95
96 private String algorithm;
97
98
99 private String prefix;
100
101
102 private String subPrefix;
103
104
105
106
107
108
109
110
111
112 LdapSecurityConstants( String name, String algorithm, String prefix )
113 {
114 this( name, algorithm, prefix, "" );
115 }
116
117
118
119
120
121
122
123
124
125 LdapSecurityConstants( String name, String algorithm, String prefix, String subPrefix )
126 {
127 this.name = name;
128 this.algorithm = algorithm;
129 this.prefix = prefix;
130 this.subPrefix = subPrefix;
131 }
132
133
134
135
136
137 public String getName()
138 {
139 return name;
140 }
141
142
143
144
145
146 public String getAlgorithm()
147 {
148 return algorithm;
149 }
150
151
152
153
154
155 public String getPrefix()
156 {
157 return prefix;
158 }
159
160
161
162
163
164 public String getSubPrefix()
165 {
166 return subPrefix;
167 }
168
169
170
171
172
173
174
175
176 public static LdapSecurityConstants getAlgorithm( String algorithm )
177 {
178 if ( matches( algorithm, HASH_METHOD_SHA ) )
179 {
180 return HASH_METHOD_SHA;
181 }
182
183 if ( matches( algorithm, HASH_METHOD_SSHA ) )
184 {
185 return HASH_METHOD_SSHA;
186 }
187 if ( matches( algorithm, HASH_METHOD_MD5 ) )
188 {
189 return HASH_METHOD_MD5;
190 }
191
192 if ( matches( algorithm, HASH_METHOD_SMD5 ) )
193 {
194 return HASH_METHOD_SMD5;
195 }
196
197 if ( matches( algorithm, HASH_METHOD_CRYPT ) )
198 {
199 return HASH_METHOD_CRYPT;
200 }
201
202 if ( matches( algorithm, HASH_METHOD_CRYPT_MD5 ) )
203 {
204 return HASH_METHOD_CRYPT_MD5;
205 }
206
207 if ( matches( algorithm, HASH_METHOD_CRYPT_SHA256 ) )
208 {
209 return HASH_METHOD_CRYPT_SHA256;
210 }
211
212 if ( matches( algorithm, HASH_METHOD_CRYPT_SHA512 ) )
213 {
214 return HASH_METHOD_CRYPT_SHA512;
215 }
216
217 if ( matches( algorithm, HASH_METHOD_CRYPT_BCRYPT ) )
218 {
219 return HASH_METHOD_CRYPT_BCRYPT;
220 }
221
222 if ( matches( algorithm, HASH_METHOD_SHA256 ) )
223 {
224 return HASH_METHOD_SHA256;
225 }
226
227 if ( matches( algorithm, HASH_METHOD_SSHA256 ) )
228 {
229 return HASH_METHOD_SSHA256;
230 }
231
232 if ( matches( algorithm, HASH_METHOD_SHA384 ) )
233 {
234 return HASH_METHOD_SHA384;
235 }
236
237 if ( matches( algorithm, HASH_METHOD_SSHA384 ) )
238 {
239 return HASH_METHOD_SSHA384;
240 }
241
242 if ( matches( algorithm, HASH_METHOD_SHA512 ) )
243 {
244 return HASH_METHOD_SHA512;
245 }
246
247 if ( matches( algorithm, HASH_METHOD_SSHA512 ) )
248 {
249 return HASH_METHOD_SSHA512;
250 }
251
252 if ( matches( algorithm, HASH_METHOD_PKCS5S2 ) )
253 {
254 return HASH_METHOD_PKCS5S2;
255 }
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279 return null;
280 }
281
282
283 private static boolean matches( String algorithm, LdapSecurityConstants constant )
284 {
285 return constant.name.equalsIgnoreCase( algorithm )
286 || ( constant.prefix + constant.subPrefix ).equalsIgnoreCase( algorithm );
287 }
288
289 }