Module: ECDSA::Format::IntegerOctetString

Defined in:
lib/ecdsa/format/integer_octet_string.rb

Class Method Summary collapse

Class Method Details

.decode(string) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/ecdsa/format/integer_octet_string.rb', line 19

def self.decode(string)
  integer = 0
  string.each_byte do |b|
    integer = (integer << 8) + b.ord
  end
  integer
end

.encode(integer, length) ⇒ Object

Parameters:

  • integer (Integer)

    The integer to encode

  • length (Integer)

    The number of bytes desired in the output string.

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
# File 'lib/ecdsa/format/integer_octet_string.rb', line 10

def self.encode(integer, length)
  raise ArgumentError, 'Integer to encode is negative.' if integer < 0
  raise ArgumentError, 'Integer to encode is too large.' if integer >= (1 << (8 * length))

  length.pred.downto(0).map do |i|
    (integer >> (8 * i)) & 0xFF
  end.pack('C*')
end