1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.directory.server.kerberos.shared.crypto.checksum;
22
23
24 import java.util.zip.CRC32;
25
26 import org.apache.directory.server.kerberos.shared.crypto.encryption.KeyUsage;
27 import org.apache.directory.shared.kerberos.crypto.checksum.ChecksumType;
28
29
30
31
32
33 class Crc32Checksum implements ChecksumEngine
34 {
35 public ChecksumType checksumType()
36 {
37 return ChecksumType.CRC32;
38 }
39
40
41 public byte[] calculateChecksum( byte[] data, byte[] key, KeyUsage usage )
42 {
43 CRC32 crc32 = new CRC32();
44 crc32.update( data );
45
46 return int2octet( ( int ) crc32.getValue() );
47 }
48
49
50 private byte[] int2octet( int value )
51 {
52 byte[] bytes = new byte[4];
53 int i, shift;
54
55 for ( i = 0, shift = 24; i < 4; i++, shift -= 8 )
56 {
57 bytes[i] = ( byte ) ( 0xFF & ( value >> shift ) );
58 }
59
60 return bytes;
61 }
62 }