Module: PQCrypto::Seal::Binary

Defined in:
lib/pq_crypto/seal/binary.rb

Defined Under Namespace

Classes: Reader

Constant Summary collapse

INTEGER_TYPES =
{
  u8: [1, "C", 0xff],
  u16: [2, "n", 0xffff],
  u32: [4, "N", 0xffff_ffff],
  u64: [8, "Q>", 0xffff_ffff_ffff_ffff]
}.freeze

Class Method Summary collapse

Class Method Details

.ensure_available!(bytes, offset, length) ⇒ Object

Raises:



48
49
50
51
52
53
# File 'lib/pq_crypto/seal/binary.rb', line 48

def ensure_available!(bytes, offset, length)
  offset, length = Integer(offset), Integer(length)

  raise FormatError, "invalid offset" if offset.negative? || length.negative?
  raise FormatError, "truncated envelope" if offset > bytes.bytesize || length > bytes.bytesize - offset
end

.integer!(value, max) ⇒ Object

Raises:

  • (RangeError)


55
56
57
58
59
60
# File 'lib/pq_crypto/seal/binary.rb', line 55

def integer!(value, max)
  number = Integer(value)
  raise RangeError, "integer is out of range" if number.negative? || number > max

  number
end

.read_bytes(bytes, offset, length) ⇒ Object



44
45
46
# File 'lib/pq_crypto/seal/binary.rb', line 44

def read_bytes(bytes, offset, length)
  read_with(bytes, offset) { |reader| reader.bytes(length) }
end