session_keys 0.1.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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +1 -0
- data/.coco.yml +7 -0
- data/.gitignore +9 -0
- data/.rubocop.yml +1245 -0
- data/.ruby-version +1 -0
- data/.travis.yml +7 -0
- data/.yardopts +1 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +21 -0
- data/README.md +145 -0
- data/Rakefile +13 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/certs/gem-public_cert_grempe.pem +21 -0
- data/lib/session_keys.rb +188 -0
- data/lib/session_keys/version.rb +3 -0
- data/session_keys.gemspec +68 -0
- metadata +229 -0
- metadata.gz.sig +3 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'session_keys/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'session_keys'
|
8
|
+
spec.version = SessionKeys::VERSION
|
9
|
+
spec.authors = ['Glenn Rempe']
|
10
|
+
spec.email = ['glenn@rempe.us']
|
11
|
+
|
12
|
+
spec.required_ruby_version = '>= 2.1.0'
|
13
|
+
|
14
|
+
cert = File.expand_path('~/.gem-certs/gem-private_key_grempe.pem')
|
15
|
+
if cert && File.exist?(cert)
|
16
|
+
spec.signing_key = cert
|
17
|
+
spec.cert_chain = ['certs/gem-public_cert_grempe.pem']
|
18
|
+
end
|
19
|
+
|
20
|
+
spec.summary = <<-EOF
|
21
|
+
SessionKeys generates a deterministic user ID and NaCl encryption/signing
|
22
|
+
keypairs from an identifier, such as a username or email address, a
|
23
|
+
password, and a strength value.
|
24
|
+
EOF
|
25
|
+
|
26
|
+
spec.description = <<-EOF
|
27
|
+
SessionKeys is a cryptographic tool for the deterministic generation of
|
28
|
+
NaCl compatible [Curve25519](https://cr.yp.to/ecdh.html) encryption and
|
29
|
+
[Ed25519](http://ed25519.cr.yp.to) digital signature keys.
|
30
|
+
|
31
|
+
The strength of the system lies in the fact that the keypairs are derived from
|
32
|
+
passing an identifier, such as a username or email address, and a high-entropy
|
33
|
+
passphrase through the `SHA256` hash and the `scrypt` key derivation
|
34
|
+
functions. This means that no private key material need ever be stored to disk.
|
35
|
+
The generated keys are deterministic; for any given ID, password, and
|
36
|
+
strength combination the same keys will always be returned.
|
37
|
+
|
38
|
+
The generated ID is passed through `SHA256` and `scrypt` and is derived from
|
39
|
+
only the ID parameter your provide and a common salt.
|
40
|
+
|
41
|
+
The password is also passed through `SHA256` and `scrypt` and NaCl encryption
|
42
|
+
and signing keypairs are derived from the combination of the stretched ID,
|
43
|
+
your password, and a common salt.
|
44
|
+
EOF
|
45
|
+
|
46
|
+
spec.homepage = 'https://github.com/grempe/session-keys-rb'
|
47
|
+
spec.license = 'MIT'
|
48
|
+
|
49
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
50
|
+
spec.bindir = 'exe'
|
51
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
52
|
+
spec.require_paths = ['lib']
|
53
|
+
|
54
|
+
# FIXME : uncomment when @bascule publishes new rbnacl release
|
55
|
+
# and remove from Gemfile.
|
56
|
+
# https://github.com/cryptosphere/rbnacl/pull/135
|
57
|
+
# spec.add_dependency 'rbnacl', '~> 3.3.0'
|
58
|
+
spec.add_dependency 'rbnacl-libsodium', '~> 1.0'
|
59
|
+
spec.add_dependency 'zxcvbn-ruby', '~> 0.1'
|
60
|
+
|
61
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
62
|
+
spec.add_development_dependency 'rake', '~> 11.0'
|
63
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
64
|
+
spec.add_development_dependency 'pry', '~> 0.10'
|
65
|
+
spec.add_development_dependency 'coveralls', '~> 0.8'
|
66
|
+
spec.add_development_dependency 'coco', '~> 0.14'
|
67
|
+
spec.add_development_dependency 'wwtd', '~> 1.3'
|
68
|
+
end
|
metadata
ADDED
@@ -0,0 +1,229 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: session_keys
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Glenn Rempe
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDYDCCAkigAwIBAgIBATANBgkqhkiG9w0BAQUFADA7MQ4wDAYDVQQDDAVnbGVu
|
14
|
+
bjEVMBMGCgmSJomT8ixkARkWBXJlbXBlMRIwEAYKCZImiZPyLGQBGRYCdXMwHhcN
|
15
|
+
MTYwNDExMDI0NTU0WhcNMTcwNDExMDI0NTU0WjA7MQ4wDAYDVQQDDAVnbGVubjEV
|
16
|
+
MBMGCgmSJomT8ixkARkWBXJlbXBlMRIwEAYKCZImiZPyLGQBGRYCdXMwggEiMA0G
|
17
|
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZqTH5Jf+D/W2B4BIiL49CpHa86rK/
|
18
|
+
oT+v3xZwuEE92lJea+ygn3IAsidVTW47AKE6Lt3UqUkGQGKxsqH/Dhir08BqjLlD
|
19
|
+
gBUozGZpM3B6uWZnD6QXLbOmZeGVDnwB/QDfzaawN1i3smlYxYT+KNLjl80aN3we
|
20
|
+
/cHAWG7JG47AF/S91mYcg1WgZnDgZt9+RyVR1AsfYbM+SidOSoXEOHPCbuUxLKJb
|
21
|
+
gj5ieCFhm5GNWEugvgiX/ruas+VHV0fF3fzjYlU2fZPTuQyB4UD5FWX4UqdsBf3w
|
22
|
+
jB94TDBsJ3FVGPbggEhLGKd8pbQmBIOqXolGaqhs7dnuf5imu5mAXHC1AgMBAAGj
|
23
|
+
bzBtMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRfxEyosUbKjfFa
|
24
|
+
j+gae2CcT3aFCTAZBgNVHREEEjAQgQ5nbGVubkByZW1wZS51czAZBgNVHRIEEjAQ
|
25
|
+
gQ5nbGVubkByZW1wZS51czANBgkqhkiG9w0BAQUFAAOCAQEAzgK20+MNOknR9Kx6
|
26
|
+
RisI3DsioCADjGldxY+INrwoTfPDVmNm4GdTYC+V+/BvxJw1RqHjEbuXSg0iibQC
|
27
|
+
4vN+th0Km7dnas/td1i+EKfGencfyQyecIaG9l3kbCkCWnldRtZ+BS5EfP2ML2u8
|
28
|
+
fyCtze/Piovu8IwXL1W5kGZMnvzLmWxdqI3VPUou40n8F+EiMMLgd53kpzjtNOau
|
29
|
+
4W+mqVGOwlEGVSgI5+0SIsD8pvc62PlPWTv0kn1bcufKKCZmoVmpfbe3j4JpBInq
|
30
|
+
zieXiXZSAojfFx9g91fKdIrlPbInHU/BaCxXSLBwvOM0drE+c2ue9X8gB55XAhzX
|
31
|
+
37oBiw==
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
date: 2016-05-01 00:00:00.000000000 Z
|
34
|
+
dependencies:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rbnacl-libsodium
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.0'
|
42
|
+
type: :runtime
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.0'
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: zxcvbn-ruby
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0.1'
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.1'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: bundler
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.12'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '1.12'
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: rake
|
79
|
+
requirement: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '11.0'
|
84
|
+
type: :development
|
85
|
+
prerelease: false
|
86
|
+
version_requirements: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '11.0'
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: minitest
|
93
|
+
requirement: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '5.0'
|
98
|
+
type: :development
|
99
|
+
prerelease: false
|
100
|
+
version_requirements: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '5.0'
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
name: pry
|
107
|
+
requirement: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0.10'
|
112
|
+
type: :development
|
113
|
+
prerelease: false
|
114
|
+
version_requirements: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0.10'
|
119
|
+
- !ruby/object:Gem::Dependency
|
120
|
+
name: coveralls
|
121
|
+
requirement: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0.8'
|
126
|
+
type: :development
|
127
|
+
prerelease: false
|
128
|
+
version_requirements: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0.8'
|
133
|
+
- !ruby/object:Gem::Dependency
|
134
|
+
name: coco
|
135
|
+
requirement: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0.14'
|
140
|
+
type: :development
|
141
|
+
prerelease: false
|
142
|
+
version_requirements: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - "~>"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0.14'
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
name: wwtd
|
149
|
+
requirement: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '1.3'
|
154
|
+
type: :development
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - "~>"
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '1.3'
|
161
|
+
description: |2
|
162
|
+
SessionKeys is a cryptographic tool for the deterministic generation of
|
163
|
+
NaCl compatible [Curve25519](https://cr.yp.to/ecdh.html) encryption and
|
164
|
+
[Ed25519](http://ed25519.cr.yp.to) digital signature keys.
|
165
|
+
|
166
|
+
The strength of the system lies in the fact that the keypairs are derived from
|
167
|
+
passing an identifier, such as a username or email address, and a high-entropy
|
168
|
+
passphrase through the `SHA256` hash and the `scrypt` key derivation
|
169
|
+
functions. This means that no private key material need ever be stored to disk.
|
170
|
+
The generated keys are deterministic; for any given ID, password, and
|
171
|
+
strength combination the same keys will always be returned.
|
172
|
+
|
173
|
+
The generated ID is passed through `SHA256` and `scrypt` and is derived from
|
174
|
+
only the ID parameter your provide and a common salt.
|
175
|
+
|
176
|
+
The password is also passed through `SHA256` and `scrypt` and NaCl encryption
|
177
|
+
and signing keypairs are derived from the combination of the stretched ID,
|
178
|
+
your password, and a common salt.
|
179
|
+
email:
|
180
|
+
- glenn@rempe.us
|
181
|
+
executables: []
|
182
|
+
extensions: []
|
183
|
+
extra_rdoc_files: []
|
184
|
+
files:
|
185
|
+
- ".coco.yml"
|
186
|
+
- ".gitignore"
|
187
|
+
- ".rubocop.yml"
|
188
|
+
- ".ruby-version"
|
189
|
+
- ".travis.yml"
|
190
|
+
- ".yardopts"
|
191
|
+
- CODE_OF_CONDUCT.md
|
192
|
+
- Gemfile
|
193
|
+
- LICENSE.txt
|
194
|
+
- README.md
|
195
|
+
- Rakefile
|
196
|
+
- bin/console
|
197
|
+
- bin/setup
|
198
|
+
- certs/gem-public_cert_grempe.pem
|
199
|
+
- lib/session_keys.rb
|
200
|
+
- lib/session_keys/version.rb
|
201
|
+
- session_keys.gemspec
|
202
|
+
homepage: https://github.com/grempe/session-keys-rb
|
203
|
+
licenses:
|
204
|
+
- MIT
|
205
|
+
metadata: {}
|
206
|
+
post_install_message:
|
207
|
+
rdoc_options: []
|
208
|
+
require_paths:
|
209
|
+
- lib
|
210
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: 2.1.0
|
215
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
|
+
requirements:
|
217
|
+
- - ">="
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: '0'
|
220
|
+
requirements: []
|
221
|
+
rubyforge_project:
|
222
|
+
rubygems_version: 2.5.1
|
223
|
+
signing_key:
|
224
|
+
specification_version: 4
|
225
|
+
summary: SessionKeys generates a deterministic user ID and NaCl encryption/signing
|
226
|
+
keypairs from an identifier, such as a username or email address, a password, and
|
227
|
+
a strength value.
|
228
|
+
test_files: []
|
229
|
+
has_rdoc:
|
metadata.gz.sig
ADDED