1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.server.kerberos.shared.crypto.checksum;
21
22
23 import java.security.GeneralSecurityException;
24
25 import javax.crypto.Mac;
26 import javax.crypto.SecretKey;
27 import javax.crypto.spec.SecretKeySpec;
28
29 import org.apache.directory.server.kerberos.shared.crypto.encryption.KeyUsage;
30 import org.apache.directory.shared.kerberos.crypto.checksum.ChecksumType;
31
32
33
34
35
36 class HmacMd5Checksum implements ChecksumEngine
37 {
38 public ChecksumType checksumType()
39 {
40 return ChecksumType.HMAC_MD5;
41 }
42
43
44 public byte[] calculateChecksum( byte[] data, byte[] key, KeyUsage usage )
45 {
46 try
47 {
48 SecretKey sk = new SecretKeySpec( key, "ARCFOUR" );
49
50 Mac mac = Mac.getInstance( "HmacMD5" );
51 mac.init( sk );
52
53 return mac.doFinal( data );
54 }
55 catch ( GeneralSecurityException nsae )
56 {
57 nsae.printStackTrace();
58 return null;
59 }
60 }
61 }