Class: Digest::CRC

Inherits:
Class
  • Object
show all
Includes:
Instance
Defined in:
lib/digest/crc.rb

Direct Known Subclasses

CRC1, CRC16, CRC24, CRC32, CRC5, CRC64, CRC8

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

Instance Method Summary collapse

Constructor Details

#initializeCRC

Initializes the CRC checksum.


46
47
48
# File 'lib/digest/crc.rb', line 46

def initialize
  @crc = self.class.const_get(:INIT_CRC)
end

Class Method Details

.checksum(data) ⇒ Integer

Calculates the CRC checksum.

Parameters:

  • data (String)

    The given data.

Returns:

  • (Integer)

    The CRC checksum.


26
27
28
29
30
31
# File 'lib/digest/crc.rb', line 26

def self.checksum(data)
  crc = self.new
  crc << data

  return crc.checksum
end

.pack(crc) ⇒ String

Packs the given CRC checksum.

Returns:

  • (String)

    The packed CRC checksum.


39
40
41
# File 'lib/digest/crc.rb', line 39

def self.pack(crc)
  ''
end

Instance Method Details

#<<(data) ⇒ Object

See Also:

  • Digest::CRC.{{#update}

81
82
83
84
# File 'lib/digest/crc.rb', line 81

def <<(data)
  update(data)
  return self
end

#block_length1

The input block length.

Returns:

  • (1)

55
56
57
# File 'lib/digest/crc.rb', line 55

def block_length
  1
end

#checksumInteger

The resulting CRC checksum.

Returns:

  • (Integer)

    The resulting CRC checksum.


102
103
104
# File 'lib/digest/crc.rb', line 102

def checksum
  @crc ^ self.class.const_get(:XOR_MASK)
end

#digest_lengthInteger

The length of the digest.

Returns:

  • (Integer)

    The length in bytes.


65
66
67
# File 'lib/digest/crc.rb', line 65

def digest_length
  (self.class.const_get(:WIDTH) / 8.0).ceil
end

#finishObject

Finishes the CRC checksum calculation.

See Also:

  • {pack}

111
112
113
# File 'lib/digest/crc.rb', line 111

def finish
  self.class.pack(checksum)
end

#resetInteger

Resets the CRC checksum.

Returns:

  • (Integer)

    The default value of the CRC checksum.


92
93
94
# File 'lib/digest/crc.rb', line 92

def reset
  @crc = self.class.const_get(:INIT_CRC)
end

#update(data) ⇒ Object

Updates the CRC checksum with the given data.

Parameters:

  • data (String)

    The data to update the CRC checksum with.


75
76
# File 'lib/digest/crc.rb', line 75

def update(data)
end