diff options
Diffstat (limited to 'pg/src/main/java/org/spongycastle/bcpg/CRC24.java')
-rw-r--r-- | pg/src/main/java/org/spongycastle/bcpg/CRC24.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/pg/src/main/java/org/spongycastle/bcpg/CRC24.java b/pg/src/main/java/org/spongycastle/bcpg/CRC24.java new file mode 100644 index 00000000..b9db421d --- /dev/null +++ b/pg/src/main/java/org/spongycastle/bcpg/CRC24.java @@ -0,0 +1,37 @@ +package org.spongycastle.bcpg; + +public class CRC24 +{ + private static final int CRC24_INIT = 0x0b704ce; + private static final int CRC24_POLY = 0x1864cfb; + + private int crc = CRC24_INIT; + + public CRC24() + { + } + + public void update( + int b) + { + crc ^= b << 16; + for (int i = 0; i < 8; i++) + { + crc <<= 1; + if ((crc & 0x1000000) != 0) + { + crc ^= CRC24_POLY; + } + } + } + + public int getValue() + { + return crc; + } + + public void reset() + { + crc = CRC24_INIT; + } +} |