Module: PathgraphEncoding

Defined in:
lib/pathgraph_encoding.rb,
lib/pathgraph_encoding/version.rb

Overview

Author:

  • Israel Buitron

Defined Under Namespace

Modules: PrivateKey, PublicKey

Constant Summary collapse

VERSION =

Pathgraph encoding library version

"0.0.3"
MIN_Q_N =

Minimum hypercube degree

4

Class Method Summary collapse

Class Method Details

.pack(k, m, set) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/pathgraph_encoding.rb', line 7

def self.pack(k, m, set)
  OpenSSL::ASN1::Sequence.new([
    OpenSSL::ASN1::Integer.new(k),
    OpenSSL::ASN1::Integer.new(m),
    OpenSSL::ASN1::Sequence.new(
      set.map { |path| 
        OpenSSL::ASN1::Sequence.new(
          path.map { |x| OpenSSL::ASN1::Integer.new(x) }
        )
      }
    )
  ]).to_der
end

.unpack(der) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/pathgraph_encoding.rb', line 21

def self.unpack(der)
  asn1 = OpenSSL::ASN1.decode(der)
  [
    OpenSSL::ASN1.decode(asn1.value[0]).value.to_i, # k
    OpenSSL::ASN1.decode(asn1.value[1]).value.to_i, # m
    OpenSSL::ASN1.decode(asn1.value[2]).value.map { |e| e.map { |d| d.value.to_i } }
  ]
end