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.
@@ -0,0 +1,3 @@
1
+ module SessionKeys
2
+ VERSION = '0.1.0'.freeze
3
+ end
@@ -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:
@@ -0,0 +1,3 @@
1
+ �Q^�Ő`�:�
2
+ �gcO����ب�g�f$���È��W˷[���e M���U��cOK��zZj��4ɺ��L�9�|m��85CgE�o�H%��0���~yl�"�I'�>̼���HjX�N�`�/T�D�ۤ��7/�o��Γ��%�H�kӕ���3I���ox��e̟2+��6[��5�q<N�>TW�$^0�;8U�dW�.����k[�E]��v��I��R����8�3B������߹A
3
+ ��Ÿk?