h 1.0.1 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.rvmrc +1 -0
- data/{LICENSE → ISC-LICENSE} +0 -0
- data/{README.textile → README.rdoc} +8 -20
- data/Rakefile +10 -0
- data/VERSION.yml +4 -0
- data/h.gemspec +11 -8
- data/lib/h.rb +5 -4
- data/test/h_test.rb +25 -0
- data/test/test_helper.rb +2 -0
- metadata +19 -16
- data/lib/h/version.rb +0 -3
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm ruby-1.9.2@h
|
data/{LICENSE → ISC-LICENSE}
RENAMED
File without changes
|
@@ -1,21 +1,19 @@
|
|
1
|
-
|
1
|
+
= H
|
2
2
|
|
3
|
-
|
3
|
+
== Overview
|
4
4
|
|
5
5
|
Very small cryptographic tool that generates on-the-fly custom message digests,
|
6
6
|
according to some parameters.
|
7
7
|
|
8
|
-
|
8
|
+
== Why?
|
9
9
|
|
10
10
|
Because I prefer to put makeup on passwords rather than yield them to Manager™.
|
11
11
|
|
12
|
-
|
12
|
+
== Installation
|
13
13
|
|
14
|
-
<pre>
|
15
14
|
gem install h
|
16
|
-
</pre>
|
17
15
|
|
18
|
-
|
16
|
+
== Configuration
|
19
17
|
|
20
18
|
H reads its configuration from the YAML <tt>~/.h</tt> file at initialization.
|
21
19
|
This file, which should be readable by its owner only, has four parameters:
|
@@ -25,55 +23,45 @@ This file, which should be readable by its owner only, has four parameters:
|
|
25
23
|
* Encryption: A cryptographic hash function in Ruby's Digest module.
|
26
24
|
* Static key: Provides salted messages through concatenation.
|
27
25
|
|
28
|
-
|
26
|
+
== Examples
|
29
27
|
|
30
28
|
Generate a digest from the system:
|
31
29
|
|
32
|
-
<pre>
|
33
30
|
$ h secret
|
34
31
|
t3dpe24xie3y74t
|
35
|
-
</pre>
|
36
32
|
|
37
33
|
Because no configuration has been detected, this default file was created:
|
38
34
|
|
39
|
-
<pre>
|
40
35
|
$ cat ~/.h
|
41
36
|
---
|
42
37
|
max_length: 15
|
43
38
|
radix: 36
|
44
39
|
encryption: SHA1
|
45
40
|
static_key: foobar
|
46
|
-
</pre>
|
47
41
|
|
48
42
|
Same operation, from Ruby:
|
49
43
|
|
50
|
-
<pre>
|
51
44
|
irb(main):001:0> require "h"
|
52
45
|
true
|
53
46
|
irb(main):002:0> H::Generator.new.input "secret"
|
54
47
|
"t3dpe24xie3y74t"
|
55
|
-
</pre>
|
56
48
|
|
57
49
|
To prevent your log display the message as a string, do not specify it at first.
|
58
50
|
|
59
|
-
<pre>
|
60
51
|
$ h
|
61
52
|
Message: ******
|
62
53
|
t3dpe24xie3y74t
|
63
|
-
</pre>
|
64
54
|
|
65
55
|
Example with the SHA2 cryptographic hash instead of SHA1, and a custom key:
|
66
56
|
|
67
|
-
<pre>
|
68
57
|
$ echo "{max_length: 15, radix: 36, encryption: SHA2, static_key: sun}" > ~/.h
|
69
58
|
$ h secret
|
70
59
|
5gumh4smv1iit23
|
71
|
-
</pre>
|
72
60
|
|
73
61
|
And now a useless test, with conventional parameters. You can Google the result.
|
74
62
|
|
75
|
-
<pre>
|
76
63
|
$ echo "{max_length: 40, radix: 16, encryption: SHA1, static_key: ''}" > ~/.h
|
77
64
|
$ h "The quick brown fox jumps over the lazy dog"
|
78
65
|
2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
|
79
|
-
|
66
|
+
|
67
|
+
Copyright (c) 2011 Cyril Wack, released under the ISC license
|
data/Rakefile
CHANGED
data/VERSION.yml
ADDED
data/h.gemspec
CHANGED
@@ -1,21 +1,24 @@
|
|
1
|
-
#
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "h/version"
|
1
|
+
# encoding: utf-8
|
4
2
|
|
5
3
|
Gem::Specification.new do |s|
|
6
4
|
s.name = "h"
|
7
|
-
s.version =
|
5
|
+
s.version = Psych.load_file("VERSION.yml").values.join('.')
|
8
6
|
s.platform = Gem::Platform::RUBY
|
9
7
|
s.authors = ["Cyril Wack"]
|
10
8
|
s.email = ["cyril@gosu.fr"]
|
11
9
|
s.homepage = "http://github.com/cyril/h"
|
12
10
|
s.summary = %q{Custom hash generator}
|
13
|
-
s.description = %q{
|
11
|
+
s.description = %q{A quick tool for those who prefer to put makeup on passwords rather than yield them to Manager™}
|
14
12
|
|
15
|
-
s.
|
13
|
+
s.required_ruby_version = '>= 1.9.2'
|
16
14
|
|
17
|
-
s.
|
18
|
-
|
15
|
+
s.rubyforge_project = 'h'
|
16
|
+
|
17
|
+
s.bindir = 'bin'
|
18
|
+
s.executables = ['h']
|
19
|
+
|
20
|
+
s.add_dependency 'highline'
|
21
|
+
s.add_dependency 'psych'
|
19
22
|
|
20
23
|
s.files = `git ls-files`.split("\n")
|
21
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/lib/h.rb
CHANGED
@@ -6,19 +6,20 @@ module H
|
|
6
6
|
class Generator
|
7
7
|
CONF_PATH = File.join(File.expand_path('~'), '.h')
|
8
8
|
|
9
|
-
def initialize
|
9
|
+
def initialize(options = {})
|
10
10
|
unless File.exists?(CONF_PATH)
|
11
11
|
File.open(CONF_PATH, 'w') do |f|
|
12
12
|
Psych.dump({ 'encryption' => 'SHA1',
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
'static_key' => 'foobar',
|
14
|
+
'max_length' => 15,
|
15
|
+
'radix' => 36 }, f)
|
16
16
|
end
|
17
17
|
|
18
18
|
File.chmod(0600, CONF_PATH)
|
19
19
|
end
|
20
20
|
|
21
21
|
@params = Psych.load_file(CONF_PATH)
|
22
|
+
@params.update(options)
|
22
23
|
@params.freeze
|
23
24
|
end
|
24
25
|
|
data/test/h_test.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class HTest < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@h = H::Generator.new({ 'encryption' => 'SHA1',
|
6
|
+
'static_key' => 'foobar',
|
7
|
+
'max_length' => 15,
|
8
|
+
'radix' => 36 })
|
9
|
+
@my_h = H::Generator.new({ 'encryption' => 'SHA2',
|
10
|
+
'static_key' => 'sun',
|
11
|
+
'max_length' => 15,
|
12
|
+
'radix' => 36 })
|
13
|
+
@sha1 = H::Generator.new({ 'encryption' => 'SHA1',
|
14
|
+
'static_key' => '',
|
15
|
+
'max_length' => 40,
|
16
|
+
'radix' => 16 })
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_h
|
20
|
+
assert_equal @h.input('secret'), 't3dpe24xie3y74t'
|
21
|
+
assert_equal @my_h.input('secret'), '5gumh4smv1iit23'
|
22
|
+
assert_equal @sha1.input('The quick brown fox jumps over the lazy dog'),
|
23
|
+
'2fd4e1c67a2d28fced849ee1bb76e7391b93eb12'
|
24
|
+
end
|
25
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: h
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-04-
|
13
|
-
default_executable:
|
12
|
+
date: 2011-04-23 00:00:00.000000000Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: highline
|
17
|
-
requirement: &
|
16
|
+
requirement: &2153658560 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ! '>='
|
@@ -22,10 +21,10 @@ dependencies:
|
|
22
21
|
version: '0'
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153658560
|
26
25
|
- !ruby/object:Gem::Dependency
|
27
26
|
name: psych
|
28
|
-
requirement: &
|
27
|
+
requirement: &2153658100 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ! '>='
|
@@ -33,9 +32,9 @@ dependencies:
|
|
33
32
|
version: '0'
|
34
33
|
type: :runtime
|
35
34
|
prerelease: false
|
36
|
-
version_requirements: *
|
37
|
-
description:
|
38
|
-
to
|
35
|
+
version_requirements: *2153658100
|
36
|
+
description: A quick tool for those who prefer to put makeup on passwords rather than
|
37
|
+
yield them to Manager™
|
39
38
|
email:
|
40
39
|
- cyril@gosu.fr
|
41
40
|
executables:
|
@@ -44,15 +43,17 @@ extensions: []
|
|
44
43
|
extra_rdoc_files: []
|
45
44
|
files:
|
46
45
|
- .gitignore
|
46
|
+
- .rvmrc
|
47
47
|
- Gemfile
|
48
|
-
- LICENSE
|
49
|
-
- README.
|
48
|
+
- ISC-LICENSE
|
49
|
+
- README.rdoc
|
50
50
|
- Rakefile
|
51
|
+
- VERSION.yml
|
51
52
|
- bin/h
|
52
53
|
- h.gemspec
|
53
54
|
- lib/h.rb
|
54
|
-
-
|
55
|
-
|
55
|
+
- test/h_test.rb
|
56
|
+
- test/test_helper.rb
|
56
57
|
homepage: http://github.com/cyril/h
|
57
58
|
licenses: []
|
58
59
|
post_install_message:
|
@@ -64,7 +65,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
64
65
|
requirements:
|
65
66
|
- - ! '>='
|
66
67
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
68
|
+
version: 1.9.2
|
68
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
70
|
none: false
|
70
71
|
requirements:
|
@@ -73,8 +74,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
74
|
version: '0'
|
74
75
|
requirements: []
|
75
76
|
rubyforge_project: h
|
76
|
-
rubygems_version: 1.
|
77
|
+
rubygems_version: 1.7.2
|
77
78
|
signing_key:
|
78
79
|
specification_version: 3
|
79
80
|
summary: Custom hash generator
|
80
|
-
test_files:
|
81
|
+
test_files:
|
82
|
+
- test/h_test.rb
|
83
|
+
- test/test_helper.rb
|
data/lib/h/version.rb
DELETED