mssmt 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: