Module: PqcRails::BlobPacking

Defined in:
lib/pqc_rails/blob_packing.rb

Overview

2つのバイト列を [4byte長][本体][4byte長][本体] で1本のバイト列にまとめる、その逆を行う。 HybridKemの鍵/ciphertextパック(古典+PQ)と、KeyManagerの鍵シリアライズ(公開鍵+秘密鍵)で 同じ処理が必要になるため共通化している。

Class Method Summary collapse

Class Method Details

.pack(first, second) ⇒ Object



10
11
12
# File 'lib/pqc_rails/blob_packing.rb', line 10

def pack(first, second)
  [first.bytesize].pack("N") + first + [second.bytesize].pack("N") + second
end

.unpack(blob) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/pqc_rails/blob_packing.rb', line 14

def unpack(blob)
  first_length = blob[0, 4].unpack1("N")
  first = blob[4, first_length]

  second_offset = 4 + first_length
  second_length = blob[second_offset, 4].unpack1("N")
  second = blob[(second_offset + 4), second_length]

  [first, second]
end