org.bouncycastle.bcpg.CRC24 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcpg-jdk14 Show documentation
Show all versions of bcpg-jdk14 Show documentation
The Bouncy Castle Java API for handling the OpenPGP protocol. This jar contains the OpenPGP API for JDK 1.4. The APIs can be used in conjunction with a JCE/JCA provider such as the one provided with the Bouncy Castle Cryptography APIs.
package org.bouncycastle.bcpg;
public class CRC24
{
protected static final int CRC24_INIT = 0x0b704ce;
protected static final int CRC24_POLY = 0x1864cfb;
protected int crc = CRC24_INIT;
/**
* Default, iterative CRC-24 implementation as described in RFC4880.
* This implementation mimics the use of a feedback shift register in software.
*
* @see
* RFC4880 §6.1. An Implementation of the CRC-24 in "C"
*/
public CRC24()
{
}
public void update(int b)
{
crc ^= b << 16;
for (int i = 0; i < 8; i++)
{
int carry = ((crc << 8) >> 31) & CRC24_POLY;
crc = (crc << 1) ^ carry;
}
}
public void update3(byte[] buf, int off)
{
update(buf[off + 0] & 0xFF);
update(buf[off + 1] & 0xFF);
update(buf[off + 2] & 0xFF);
}
public int getValue()
{
return crc & 0xFFFFFF;
}
public void reset()
{
crc = CRC24_INIT;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy