digest-sip_hash 0.0.4 → 0.0.5

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: a821cc359081b3b9c8184db677719fce137d35f3a190839b99dbe2e05b3bc9a8
4
- data.tar.gz: bc743f50abfe70fff01e3c7b9f438bfbb8e73e884928118a75dff76f72e1f314
3
+ metadata.gz: 18035bf6f7ce76a23b7fc1ab2fe34eb5d3b1278bc89208930f94da9b558408dc
4
+ data.tar.gz: d16db0e9d7effe9083c891e195577ac1c2972a95907cddb80e61695f5c59d9d5
5
5
  SHA512:
6
- metadata.gz: 4e0c910c3e8e2b0131ccaef872e39e39767563655ef66b3ed48336125a1d17d7881b19aad12b98f5515327f175e44a7c256b1df1cd231cf3a5b42a0a6068bc80
7
- data.tar.gz: 63743fce636a8dcd204f04d72edd1259f031d9b07e453d43783616c9341e7a0e16082598ddf5fff44d5bf0e92b0c53e162810a077a8b831d0ef69f8e3e9ac552
6
+ metadata.gz: d4ae174a68b2adc47bcc92fbe3885742cbc5e105637caf3b661e8ab07cd57a47160975b3704f257ee7c100682104a426ecf78e3846f2bae3b339a4a5ea283264
7
+ data.tar.gz: 81693f1ff47e17d7f6c68972d422f9a55e7ec47db15896b8e53378ea19173a0f8bf7c7831037bebdbbe10f7c78ad68f6b59563aa4ba11a53f9c8adaa818b0d23
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Digest::SipHash
2
2
 
3
- A pure Ruby implementation of SipHash 1-3 and 2-4. Arbitrary round counts are also supported. If rounds and key are not specified, the default is SipHash 1-3 with a key of sixteen null bytes.
3
+ A pure Ruby implementation of SipHash 1-3 and 2-4. Arbitrary round counts are also supported. If rounds and key are not specified, the default is SipHash 1-3 with a key of 16 null bytes.
4
4
 
5
5
  ## Installation
6
6
 
@@ -10,26 +10,65 @@ gem install digest-sip_hash
10
10
 
11
11
  ## Library Examples
12
12
 
13
- The default key is 16 null bytes. Use `SecureRandom.bytes 16` to generate a random key.
13
+ The default key is 16 null bytes.
14
14
 
15
15
  ```ruby
16
- Digest::SipHash.new.hexdigest ''
16
+ require 'digest/sip_hash'
17
+
18
+ Digest::SipHash.hexdigest ''
17
19
  #=> "d1fba762150c532c"
18
20
 
19
- Digest::SipHash.new(key: 16.times.map(&:chr).join).hexdigest ''
20
- #=> "abac0158050fc4dc"
21
+ Digest::SipHash13.hexdigest ''
22
+ #=> "d1fba762150c532c"
21
23
 
22
24
  Digest::SipHash.new(1, 3).hexdigest ''
23
25
  #=> "d1fba762150c532c"
24
26
 
25
- Digest::SipHash13.hexdigest ''
27
+ Digest::SipHash.new(key: 0.chr * 16).hexdigest ''
26
28
  #=> "d1fba762150c532c"
27
29
 
30
+ Digest::SipHash.new(key: 16.times.map(&:chr).join).hexdigest ''
31
+ #=> "abac0158050fc4dc"
32
+
28
33
  Digest::SipHash.new(2, 4).hexdigest ''
29
34
  #=> "1e924b9d737700d7"
30
35
 
31
36
  Digest::SipHash24.hexdigest ''
32
37
  #=> "1e924b9d737700d7"
38
+
39
+ Digest::SipHash.new(4, 8).hexdigest ''
40
+ #=> "23ec6dd806738af3"
41
+
42
+ Digest::SipHash.new(8, 16).hexdigest ''
43
+ #=> "c05e9233091eb559"
44
+ ```
45
+
46
+ Use `SecureRandom.bytes 16` to generate a random key.
47
+
48
+ ```ruby
49
+ require 'digest/sip_hash'
50
+ require 'securerandom'
51
+
52
+ secret = SecureRandom.bytes 16
53
+ #=> "\r\xCBv\xE7\xA2V\xB9X`NP4[0\x98\xFD"
54
+
55
+ digest = Digest::SipHash.new
56
+ #=> #<Digest::SipHash: d1fba762150c532c>
57
+
58
+ digest.hexdigest
59
+ #=> "d1fba762150c532c"
60
+
61
+ digest.key = secret
62
+ #=> "\r\xCBv\xE7\xA2V\xB9X`NP4[0\x98\xFD"
63
+
64
+ digest.hexdigest
65
+ #=> "dd854240c470edef"
66
+
67
+ digest << 'nom'
68
+ #<Digest::SipHash: 85b61bc79bb9e7c4>
69
+
70
+ digest.hexdigest
71
+ #=> "85b61bc79bb9e7c4"
33
72
  ```
34
73
 
35
74
  ## Command Line Examples
data/Rakefile CHANGED
@@ -5,3 +5,7 @@ task default: %w[test]
5
5
  task :test do
6
6
  ruby 'spec/runner.rb'
7
7
  end
8
+
9
+ task :bench do
10
+ ruby 'bench/runner.rb'
11
+ end
@@ -89,14 +89,14 @@ module Digest
89
89
 
90
90
  def compress
91
91
  @v0 = add @v0, @v1
92
- @v1 = rotate @v1, 13, xor: @v0
92
+ @v1 = rotate @v1, 13, @v0
93
93
  @v0 = rotate @v0, 32
94
94
  @v2 = add @v2, @v3
95
- @v3 = rotate @v3, 16, xor: @v2
95
+ @v3 = rotate @v3, 16, @v2
96
96
  @v0 = add @v0, @v3
97
- @v3 = rotate @v3, 21, xor: @v0
97
+ @v3 = rotate @v3, 21, @v0
98
98
  @v2 = add @v2, @v1
99
- @v1 = rotate @v1, 17, xor: @v2
99
+ @v1 = rotate @v1, 17, @v2
100
100
  @v2 = rotate @v2, 32
101
101
  end
102
102
 
@@ -104,7 +104,7 @@ module Digest
104
104
  a + b & MASK
105
105
  end
106
106
 
107
- def rotate n, by, xor: 0
107
+ def rotate n, by, xor = 0
108
108
  n << by & MASK | n >> 64 - by ^ xor
109
109
  end
110
110
  end
@@ -4,6 +4,6 @@ require 'digest'
4
4
 
5
5
  module Digest
6
6
  class SipHash < Digest::Class
7
- VERSION = '0.0.4'
7
+ VERSION = '0.0.5'
8
8
  end
9
9
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path '../../lib', __FILE__
3
+ lib = File.expand_path '../lib', __dir__
4
4
  $LOAD_PATH.prepend lib unless $LOAD_PATH.include? lib
5
5
 
6
6
  require 'digest/sip_hash'
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: digest-sip_hash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shannon Skipper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-30 00:00:00.000000000 Z
11
+ date: 2018-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
14
+ name: benchmark-ips
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '12'
19
+ version: '2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '12'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '12'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '12'
55
69
  description: An implementation of SipHash 1-3, 2-4, etc. in pure Ruby.
56
70
  email:
57
71
  - shannonskipper@gmail.com