Class: Digest::CRC
Overview
Base class for all CRC algorithms.
Constant Summary collapse
- INIT_CRC =
The initial value of the CRC checksum
0x00
- XOR_MASK =
The XOR mask to apply to the resulting CRC checksum
0x00
- WIDTH =
The bit width of the CRC checksum
0
Class Method Summary collapse
-
.checksum(data) ⇒ Integer
Calculates the CRC checksum.
-
.pack(crc) ⇒ String
Packs the given CRC checksum.
Instance Method Summary collapse
- #<<(data) ⇒ Object
-
#block_length ⇒ 1
The input block length.
-
#checksum ⇒ Integer
The resulting CRC checksum.
-
#digest_length ⇒ Integer
The length of the digest.
-
#finish ⇒ Object
Finishes the CRC checksum calculation.
-
#initialize ⇒ CRC
constructor
Initializes the CRC checksum.
-
#reset ⇒ Integer
Resets the CRC checksum.
-
#update(data) ⇒ Object
Updates the CRC checksum with the given data.
Constructor Details
#initialize ⇒ CRC
Initializes the CRC checksum.
49 50 51 |
# File 'lib/digest/crc.rb', line 49 def initialize @crc = self.class.const_get(:INIT_CRC) end |
Class Method Details
.checksum(data) ⇒ Integer
Calculates the CRC checksum.
29 30 31 32 33 34 |
# File 'lib/digest/crc.rb', line 29 def self.checksum(data) crc = self.new crc << data return crc.checksum end |
.pack(crc) ⇒ String
Packs the given CRC checksum.
42 43 44 |
# File 'lib/digest/crc.rb', line 42 def self.pack(crc) '' end |
Instance Method Details
#<<(data) ⇒ Object
84 85 86 87 |
# File 'lib/digest/crc.rb', line 84 def <<(data) update(data) return self end |
#block_length ⇒ 1
The input block length.
58 59 60 |
# File 'lib/digest/crc.rb', line 58 def block_length 1 end |
#checksum ⇒ Integer
The resulting CRC checksum.
105 106 107 |
# File 'lib/digest/crc.rb', line 105 def checksum @crc ^ self.class.const_get(:XOR_MASK) end |
#digest_length ⇒ Integer
The length of the digest.
68 69 70 |
# File 'lib/digest/crc.rb', line 68 def digest_length (self.class.const_get(:WIDTH) / 8.0).ceil end |
#finish ⇒ Object
Finishes the CRC checksum calculation.
114 115 116 |
# File 'lib/digest/crc.rb', line 114 def finish self.class.pack(checksum) end |
#reset ⇒ Integer
Resets the CRC checksum.
95 96 97 |
# File 'lib/digest/crc.rb', line 95 def reset @crc = self.class.const_get(:INIT_CRC) end |
#update(data) ⇒ Object
Updates the CRC checksum with the given data.
78 79 |
# File 'lib/digest/crc.rb', line 78 def update(data) end |