mssmt 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e99668bb044c1670cee5d94e301f8113321c04ce9ac06b697fcfa8eabf1668f9
4
- data.tar.gz: 7928cf9abd46c85c505dc770c2cbcce33e82ce98c2f7f772872792366bcd6eaa
3
+ metadata.gz: d07e68431e9d8539727c514f6bbe42006709b980214d6fdeaca0cb6fb0613d5d
4
+ data.tar.gz: 76da8e23b8b45119ab20fc875657688dd26dd2b24a8dc82f7704162c6ae61a24
5
5
  SHA512:
6
- metadata.gz: 1b0b1648a73caed3a29c764c688b8077dea1beaa65da3772429470fc1ca1eab352b11128538e0e3b4daa2e8c578452360a562a08bd69bebe3bebadd228070f74
7
- data.tar.gz: 653ad3b9270105b25a9dfea42414918cc0640cdc9359a7c9c01c712ee503f6689d81ee74796510099c3827fae53209fd2a7325392a36541f64b39447482d6e30
6
+ metadata.gz: 3dc973a5f83f8399af0b617a34db243464d15878e27fe1b748ba576622c7a7d7e28e5ac736efef4d0e4a4e53231525aad6a8d4e99d3b1b6f732948dc72a8dc3c
7
+ data.tar.gz: 482b24550810aa7c070b0b51845088094d17d4afca4a1ae60677c58be3fecf89eaf88651b3795eca268a05f08b7d265602ee6fb6c699a06a1bf80d8bb450c659
@@ -5,6 +5,10 @@ module MSSMT
5
5
  class BranchNode
6
6
  attr_reader :left, :right, :node_hash, :sum
7
7
 
8
+ # Constructor
9
+ # @param [MSSMT::LeafNode|MSSMT::BranchNode] left
10
+ # @param [MSSMT::LeafNode|MSSMT::BranchNode] right
11
+ # @raise [MSSMT::OverflowError]
8
12
  def initialize(left, right)
9
13
  if !left.is_a?(BranchNode) && !left.is_a?(LeafNode)
10
14
  raise ArgumentError, "left must be a branch or leaf node"
@@ -16,8 +20,10 @@ module MSSMT
16
20
  @left = left
17
21
  @right = right
18
22
  @sum = left.sum + right.sum
19
- warn("sum:#{@sum} cause overflow.") if @sum > 0xffffffffffffffff # TODO
20
- @sum = (@sum & 0xffffffffffffffff)
23
+ if @sum > Tree::MAX_SUM_VALUE
24
+ raise OverflowError, "sum: #{sum} is overflow"
25
+ end
26
+
21
27
  @node_hash =
22
28
  Digest::SHA256.digest(
23
29
  "#{left.node_hash}#{right.node_hash}#{[@sum].pack("Q>")}"
@@ -6,11 +6,14 @@ module MSSMT
6
6
  attr_reader :node_hash, :sum
7
7
 
8
8
  # Constructor
9
- # @param [String] node_hash node hash with binary fomat.
9
+ # @param [String] node_hash node hash with binary format.
10
10
  # @param [Integer] sum
11
+ # @raise [MSSMT::OverflowError]
11
12
  def initialize(node_hash, sum)
12
13
  @node_hash = node_hash
13
- warn("sum: #{sum} cause overflow.") if sum > 0xffffffffffffffff # TODO
14
+ if sum > Tree::MAX_SUM_VALUE
15
+ raise OverflowError, "sum: #{sum} is overflow"
16
+ end
14
17
  @sum = sum
15
18
  end
16
19
 
@@ -8,10 +8,13 @@ module MSSMT
8
8
  # Constructor
9
9
  # @param [String] value node value with binary format.
10
10
  # @param [Integer] sum integer value associated with the value
11
+ # @raise [MSSMT::OverflowError]
11
12
  def initialize(value, sum)
12
13
  @value = value
13
- warn("sum: #{sum} cause overflow.") if sum > 0xffffffffffffffff # TODO
14
- @sum = sum & 0xffffffffffffffff
14
+ if sum > Tree::MAX_SUM_VALUE
15
+ raise OverflowError, "sum: #{sum} is overflow"
16
+ end
17
+ @sum = sum
15
18
  end
16
19
 
17
20
  # Generate empty leaf node.
data/lib/mssmt/tree.rb CHANGED
@@ -9,6 +9,8 @@ module MSSMT
9
9
  MAX_LEVEL = HASH_SIZE * 8
10
10
  # Index of the last bit for MS-SMT keys
11
11
  LAST_BIT_INDEX = MAX_LEVEL - 1
12
+ # Maximum sum value
13
+ MAX_SUM_VALUE = 0xffffffffffffffff
12
14
 
13
15
  attr_reader :store
14
16
 
data/lib/mssmt/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MSSMT
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/mssmt.rb CHANGED
@@ -8,6 +8,10 @@ module MSSMT
8
8
  class Error < StandardError
9
9
  end
10
10
 
11
+ # Error when sum overflows
12
+ class OverflowError < Error
13
+ end
14
+
11
15
  autoload :Store, "mssmt/store"
12
16
  autoload :LeafNode, "mssmt/leaf_node"
13
17
  autoload :BranchNode, "mssmt/branch_node"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mssmt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - azuchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-29 00:00:00.000000000 Z
11
+ date: 2022-10-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby implementation of Merkle Sum Sparse Merkle Tree
14
14
  email: