40 lines
804 B
Java
40 lines
804 B
Java
package net.lax1dude.eaglercraft.sp;
|
|
|
|
import java.util.zip.Checksum;
|
|
|
|
public class CRC32 implements Checksum {
|
|
private com.jcraft.jzlib.CRC32 impl = new com.jcraft.jzlib.CRC32();
|
|
long tbytes;
|
|
|
|
@Override
|
|
public long getValue() {
|
|
return impl.getValue();
|
|
}
|
|
|
|
@Override
|
|
public void reset() {
|
|
impl.reset();
|
|
tbytes = 0;
|
|
}
|
|
|
|
@Override
|
|
public void update(int val) {
|
|
impl.update(new byte[] { (byte) val }, 0, 1);
|
|
}
|
|
|
|
public void update(byte[] buf) {
|
|
update(buf, 0, buf.length);
|
|
}
|
|
|
|
@Override
|
|
public void update(byte[] buf, int off, int nbytes) {
|
|
// avoid int overflow, check null buf
|
|
if (off <= buf.length && nbytes >= 0 && off >= 0 && buf.length - off >= nbytes) {
|
|
impl.update(buf, off, nbytes);
|
|
tbytes += nbytes;
|
|
} else {
|
|
throw new ArrayIndexOutOfBoundsException();
|
|
}
|
|
}
|
|
}
|