sha256_seal 0.1.3 → 0.1.4

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: fe08fdd230f937e58fbd4448b7e241f5687cd43fb2f9d8b7f67cb7734c02cc12
4
- data.tar.gz: d4c1b22c1d1337b351dcd670072d424feaa67d910b6e80c525da31cf5fa31149
3
+ metadata.gz: 64db1f61edfc475755906217a51b68ae2fb6cc73b222464c57a5a8c2225d7ca5
4
+ data.tar.gz: cb01c03364b3e87db6e8f8765c820bf97a56e52007313a8ca03d3843cf91bb93
5
5
  SHA512:
6
- metadata.gz: 4268d5e1ee0612166bdc36552cc146dc5b4e921c0ae5c53c0ff7d5176ac5429bdfc79ea16d8850f66eca35dce59875e57e9a3a1aa9a97fb5567b9ec46d1a665b
7
- data.tar.gz: af917520858852378c7bfa2799f88df5266051056df5d881ab7c0d6d7a399adb1b6d5ee4e932b52b1466628fa441d0529a8e9111450ef1a3f6905f1d5b2fd627
6
+ metadata.gz: ff9b8f59a96112330fd803d01f3cffb360aaf9cc3adcc30fa0f03a8a13db849bfc4a5b10c19648e78baa2a22141fabd645b3d100730afb6fc615e0589abbdb83
7
+ data.tar.gz: 7439cb713a0696d19e129980d5269aa9d1af7a03b02b372888e57191b78ae78d5ea26337decf2561a1b4fff61f27cd3732e419362f59415c40c602eecff3fe26
@@ -0,0 +1,8 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /tmp/
8
+ .DS_Store
@@ -0,0 +1,6 @@
1
+ Metrics/LineLength:
2
+ Max: 176
3
+
4
+ Metrics/BlockLength:
5
+ Exclude:
6
+ - 'fix/**/*'
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.4.1
5
+ before_install: gem install bundler -v 1.16.0.pre.2
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}.rb" }
6
+
7
+ gemspec
@@ -0,0 +1,60 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ sha256_seal (0.1.4)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ ast (2.4.0)
10
+ aw (0.1.1)
11
+ defi (1.1.3)
12
+ docile (1.3.1)
13
+ fix (0.17.1)
14
+ aw (~> 0.1.1)
15
+ defi (~> 1.1.3)
16
+ spectus (~> 3.0.6)
17
+ jaro_winkler (1.5.1)
18
+ json (2.1.0)
19
+ matchi (1.0.2)
20
+ parallel (1.12.1)
21
+ parser (2.5.1.2)
22
+ ast (~> 2.4.0)
23
+ powerpack (0.1.2)
24
+ rainbow (3.0.0)
25
+ rake (12.3.1)
26
+ rubocop (0.58.2)
27
+ jaro_winkler (~> 1.5.1)
28
+ parallel (~> 1.10)
29
+ parser (>= 2.5, != 2.5.1.1)
30
+ powerpack (~> 0.1)
31
+ rainbow (>= 2.2.2, < 4.0)
32
+ ruby-progressbar (~> 1.7)
33
+ unicode-display_width (~> 1.0, >= 1.0.1)
34
+ ruby-progressbar (1.10.0)
35
+ simplecov (0.16.1)
36
+ docile (~> 1.1)
37
+ json (>= 1.8, < 3)
38
+ simplecov-html (~> 0.10.0)
39
+ simplecov-html (0.10.2)
40
+ spectus (3.0.6)
41
+ aw (~> 0.1.1)
42
+ defi (~> 1.1.1)
43
+ matchi (~> 1.0.2)
44
+ unicode-display_width (1.4.0)
45
+ yard (0.9.16)
46
+
47
+ PLATFORMS
48
+ ruby
49
+
50
+ DEPENDENCIES
51
+ bundler (~> 1.16)
52
+ fix (~> 0.17)
53
+ rake (~> 12.3)
54
+ rubocop (~> 0.58)
55
+ sha256_seal!
56
+ simplecov (~> 0.16)
57
+ yard (~> 0.9)
58
+
59
+ BUNDLED WITH
60
+ 1.16.1
@@ -0,0 +1,47 @@
1
+ # Sha256Seal
2
+
3
+ ## Installation
4
+
5
+ Add this line to your application's Gemfile:
6
+
7
+ ```ruby
8
+ gem 'sha256_seal'
9
+ ```
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install sha256_seal
18
+
19
+ ## Usage
20
+
21
+ Sign values and verify signatures of values.
22
+
23
+ ## Example
24
+
25
+ In the context of a Web application, CSRF tokens could be embedded in URLs.
26
+
27
+ ```ruby
28
+ secret = 'secret'
29
+
30
+ value = '/~bob/.__SIGNATURE_HERE__/documents/'
31
+ field = '__SIGNATURE_HERE__'
32
+
33
+ builder = Sha256Seal::Builder.new(value, secret, field)
34
+ builder.signed_value # => "/~bob/.8aa1d38b5c16d077d5ac1360c8a6f0248419ff5a3e6dca28a3233894ddcdf3c4/documents/"
35
+ builder.signed_value? # => false
36
+
37
+ value = '/~bob/.8aa1d38b5c16d077d5ac1360c8a6f0248419ff5a3e6dca28a3233894ddcdf3c4/documents/'
38
+ field = '8aa1d38b5c16d077d5ac1360c8a6f0248419ff5a3e6dca28a3233894ddcdf3c4'
39
+
40
+ builder = Sha256Seal::Builder.new(value, secret, field)
41
+ builder.signed_value # => "/~bob/.8aa1d38b5c16d077d5ac1360c8a6f0248419ff5a3e6dca28a3233894ddcdf3c4/documents/"
42
+ builder.signed_value? # => true
43
+ ```
44
+
45
+ ## Contributing
46
+
47
+ Bug reports and pull requests are welcome on GitHub at https://github.com/cyril/sha256_seal.rb.
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
+ require 'rubocop/rake_task'
6
+
7
+ RuboCop::RakeTask.new
8
+
9
+ Rake::TestTask.new do |t|
10
+ t.verbose = true
11
+ t.warning = true
12
+ t.pattern = File.join('fix', '**', '*_fix.rb')
13
+ end
14
+
15
+ namespace :test do
16
+ task :coverage do
17
+ ENV['COVERAGE'] = 'true'
18
+ Rake::Task['test'].invoke
19
+ end
20
+ end
21
+
22
+ task default: %i[test]
@@ -0,0 +1 @@
1
+ 0.1.4
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'sha256_seal'
6
+
7
+ require 'irb'
8
+ IRB.start(__FILE__)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+ IFS=$'\n\t'
5
+ set -vx
6
+
7
+ bundle install
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'digest/sha2'
4
+
5
+ # Namespace for the Sha256Seal library.
6
+ module Sha256Seal
7
+ # Main class for the Sha256Seal library.
8
+ class Builder
9
+ attr_reader :value, :secret, :field
10
+
11
+ def initialize(value, secret, field)
12
+ @value = value.to_s
13
+ @secret = secret.to_s
14
+ @field = field.to_s
15
+
16
+ i = @value.scan(@field).length
17
+
18
+ raise ArgumentError, "#{i} #{@field.inspect} occurrences instead of 1." unless i.equal?(1)
19
+ end
20
+
21
+ def signed_value
22
+ value.gsub(field, signature)
23
+ end
24
+
25
+ def signed_value?
26
+ signature.eql?(field)
27
+ end
28
+
29
+ private
30
+
31
+ def signature
32
+ Digest::SHA256.hexdigest(salt_value)
33
+ end
34
+
35
+ def salt_value
36
+ value.gsub(field, secret)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = 'sha256_seal'
5
+ spec.version = File.read('VERSION.semver').chomp
6
+ spec.authors = ['Cyril Kato']
7
+ spec.email = ['contact@cyril.email']
8
+
9
+ spec.summary = 'Seal device with SHA-256 hash function.'
10
+ spec.description = 'Seal device with SHA-256 hash function, for Ruby.'
11
+ spec.homepage = 'https://github.com/cyril/sha256_seal.rb'
12
+ spec.license = 'MIT'
13
+
14
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
15
+ f.match(%r{^(fix)/})
16
+ end
17
+ spec.bindir = 'exe'
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.16'
22
+ spec.add_development_dependency 'fix', '~> 0.17'
23
+ spec.add_development_dependency 'rake', '~> 12.3'
24
+ spec.add_development_dependency 'rubocop', '~> 0.58'
25
+ spec.add_development_dependency 'simplecov', '~> 0.16'
26
+ spec.add_development_dependency 'yard', '~> 0.9'
27
+ end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sha256_seal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Kato
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
11
  date: 2018-08-25 00:00:00.000000000 Z
12
12
  dependencies:
@@ -100,7 +100,19 @@ email:
100
100
  executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
- files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".rubocop.yml"
106
+ - ".travis.yml"
107
+ - Gemfile
108
+ - Gemfile.lock
109
+ - README.md
110
+ - Rakefile
111
+ - VERSION.semver
112
+ - bin/console
113
+ - bin/setup
114
+ - lib/sha256_seal.rb
115
+ - sha256_seal.gemspec
104
116
  homepage: https://github.com/cyril/sha256_seal.rb
105
117
  licenses:
106
118
  - MIT