sha256_seal 0.1.6 → 0.1.7
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 +4 -4
- data/LICENSE.md +2 -2
- data/README.md +38 -24
- metadata +27 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e95ae1ddb44ca61aa91a68db10a46619021f07736d431c1826b36f6eafd0eb36
|
4
|
+
data.tar.gz: fb423e6d812bd333615dbec1e5c4ef3bd84532a900901a6571750acf99b09179
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02d9426b1b2dd0bf32319f4ecd42fe70989810f62e01d11aaeb5f316b3d237b9bd08ab6d27d256c5465d0f06e28a57cd4dafc7cb154bd1cd4057123cad8746d2
|
7
|
+
data.tar.gz: e52c05f43c203a29365514aab321508cff5c2b0ad55387a0f9f0fbe3dfeeded50fd30b6da1831e8252bd752caeaf852b6bd4c20bd53710da6d7726525ec45a70
|
data/LICENSE.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
The MIT License
|
1
|
+
# The MIT License
|
2
2
|
|
3
|
-
Copyright (c) 2017-
|
3
|
+
Copyright (c) 2017-2022 Cyril Kato
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
# Sha256 Seal 🔏
|
2
2
|
|
3
|
-
A
|
3
|
+
A small library allowing to sign documents, and to check their integrity.
|
4
|
+
|
5
|
+
## Status
|
6
|
+
|
7
|
+
[](https://github.com/cyril/sha256_seal.rb/tags)
|
8
|
+
[](https://rubydoc.info/github/cyril/sha256_seal.rb/main)
|
9
|
+
[](https://github.com/cyril/sha256_seal.rb/actions?query=workflow%3Aruby+branch%3Amain)
|
10
|
+
[](https://github.com/cyril/sha256_seal.rb/actions?query=workflow%3Arubocop+branch%3Amain)
|
11
|
+
[](https://github.com/cyril/sha256_seal.rb/raw/main/LICENSE.md)
|
4
12
|
|
5
13
|
## Installation
|
6
14
|
|
@@ -12,15 +20,19 @@ gem "sha256_seal"
|
|
12
20
|
|
13
21
|
And then execute:
|
14
22
|
|
15
|
-
|
23
|
+
```sh
|
24
|
+
bundle install
|
25
|
+
```
|
16
26
|
|
17
27
|
Or install it yourself as:
|
18
28
|
|
19
|
-
|
29
|
+
```sh
|
30
|
+
gem install sha256_seal
|
31
|
+
```
|
20
32
|
|
21
33
|
## Usage
|
22
34
|
|
23
|
-
Sign
|
35
|
+
Sign information and verify their signature.
|
24
36
|
|
25
37
|
## Example
|
26
38
|
|
@@ -75,48 +87,50 @@ Controller:
|
|
75
87
|
```ruby
|
76
88
|
# app/controllers/verified_requests/base_controller.rb
|
77
89
|
module VerifiedRequests
|
78
|
-
class BaseController < ApplicationController
|
79
|
-
# @see https://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html#method-i-verified_request-3F
|
80
|
-
def verified_request?
|
81
|
-
secret = ENV.fetch("CSRF_SECRET_KEY")
|
82
|
-
document_string = request.original_url.force_encoding("utf-8")
|
83
|
-
signature_field = request.path_parameters.fetch(:csrf)
|
84
|
-
|
85
|
-
builder = Sha256Seal::Builder.new(document_string, secret, signature_field)
|
86
|
-
builder.signed_value? || Rails.env.test?
|
87
|
-
end
|
88
|
-
|
90
|
+
class BaseController < ::ApplicationController
|
89
91
|
def signed_url(route_method, **options)
|
90
92
|
url_route_method = "#{route_method}_url".to_sym
|
91
93
|
incorrect_csrf = "__CSRF_SECRET_KEY__"
|
92
94
|
url_route_string = public_send(url_route_method, csrf: incorrect_csrf, **options)
|
93
95
|
|
94
|
-
replace_incorrect_csrf_by_correct_csrf(url_route_string, incorrect_csrf:
|
96
|
+
replace_incorrect_csrf_by_correct_csrf(url_route_string, incorrect_csrf:)
|
95
97
|
end
|
96
98
|
helper_method :signed_url
|
97
99
|
|
100
|
+
private
|
101
|
+
|
98
102
|
def replace_incorrect_csrf_by_correct_csrf(value, incorrect_csrf:)
|
99
|
-
secret = ENV.fetch("CSRF_SECRET_KEY")
|
103
|
+
secret = ::ENV.fetch("CSRF_SECRET_KEY")
|
100
104
|
field = incorrect_csrf
|
101
|
-
builder = Sha256Seal::Builder.new(value, secret, field)
|
105
|
+
builder = ::Sha256Seal::Builder.new(value, secret, field)
|
102
106
|
value = builder.signed_value
|
103
107
|
field = builder.send(:signature)
|
104
|
-
builder = Sha256Seal::Builder.new(value, secret, field)
|
105
108
|
|
109
|
+
builder = ::Sha256Seal::Builder.new(value, secret, field)
|
106
110
|
builder.signed_value
|
107
111
|
end
|
112
|
+
|
113
|
+
# @see https://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html#method-i-verified_request-3F
|
114
|
+
# @see https://github.com/rails/rails/blob/8015c2c2cf5c8718449677570f372ceb01318a32/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L333-L341
|
115
|
+
def verified_request?
|
116
|
+
secret = ::ENV.fetch("CSRF_SECRET_KEY")
|
117
|
+
document_string = request.original_url.force_encoding("utf-8")
|
118
|
+
signature_field = request.path_parameters.fetch(:csrf)
|
119
|
+
|
120
|
+
builder = ::Sha256Seal::Builder.new(document_string, secret, signature_field)
|
121
|
+
builder.signed_value? || ::Rails.env.test?
|
122
|
+
end
|
108
123
|
end
|
109
124
|
end
|
110
125
|
```
|
111
126
|
|
112
127
|
View:
|
113
128
|
|
114
|
-
```
|
129
|
+
```ruby
|
115
130
|
# app/views/verified_requests/accounts/show.html.erb
|
116
131
|
|
117
|
-
|
118
|
-
|
119
|
-
%>
|
132
|
+
signed_url(:verified_request_account, id: "bob", admin: true)
|
133
|
+
# => "http://0.0.0.0:5000/.405d7c8f14389c9ae7f1d97ff66699093bf2d89d13b4f4280a35d62f9e616259/accounts/bob?admin=true"
|
120
134
|
```
|
121
135
|
|
122
136
|
## Versioning
|
@@ -125,4 +139,4 @@ __Sha256Seal__ uses [Semantic Versioning 2.0.0](https://semver.org/)
|
|
125
139
|
|
126
140
|
## License
|
127
141
|
|
128
|
-
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
142
|
+
The [gem](https://rubygems.org/gems/sha256_seal) is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sha256_seal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril Kato
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -25,21 +25,35 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: r_spec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop-gitlab-security
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - ">="
|
@@ -162,8 +176,9 @@ files:
|
|
162
176
|
homepage: https://github.com/cyril/sha256_seal.rb
|
163
177
|
licenses:
|
164
178
|
- MIT
|
165
|
-
metadata:
|
166
|
-
|
179
|
+
metadata:
|
180
|
+
rubygems_mfa_required: 'true'
|
181
|
+
post_install_message:
|
167
182
|
rdoc_options: []
|
168
183
|
require_paths:
|
169
184
|
- lib
|
@@ -171,15 +186,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
171
186
|
requirements:
|
172
187
|
- - ">="
|
173
188
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
189
|
+
version: 3.1.2
|
175
190
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
191
|
requirements:
|
177
192
|
- - ">="
|
178
193
|
- !ruby/object:Gem::Version
|
179
194
|
version: '0'
|
180
195
|
requirements: []
|
181
|
-
rubygems_version: 3.
|
182
|
-
signing_key:
|
196
|
+
rubygems_version: 3.3.7
|
197
|
+
signing_key:
|
183
198
|
specification_version: 4
|
184
199
|
summary: Seal device with SHA-256 hash function.
|
185
200
|
test_files: []
|