gibberish 1.1.0 → 1.2.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.
- data/CHANGELOG.mdown +4 -1
- data/README.markdown +12 -1
- data/lib/gibberish/digest.rb +48 -0
- data/lib/gibberish/hmac.rb +12 -1
- data/lib/gibberish/version.rb +1 -1
- data/spec/digest_spec.rb +8 -0
- data/spec/hmac_spec.rb +43 -0
- metadata +4 -4
data/CHANGELOG.mdown
CHANGED
data/README.markdown
CHANGED
@@ -59,11 +59,16 @@ Gibberish AES is fully compatible with default OpenSSL on the command line
|
|
59
59
|
|
60
60
|
## HMAC
|
61
61
|
|
62
|
-
Defaults to 128 bit digest
|
62
|
+
Defaults to 128 bit digest and SHA1
|
63
63
|
|
64
64
|
Gibberish::HMAC("key", "some data")
|
65
65
|
#=> 521677c580722c5c52fa15d978e8656341c4f3c5
|
66
66
|
|
67
|
+
Other digests can be used
|
68
|
+
|
69
|
+
Gibberish::HMAC("key", "some data", :digest => :sha256)
|
70
|
+
#=> 01add3f98ce4d49403d98362a046c6cca2c79d778426282c53e4f628f648c12b
|
71
|
+
|
67
72
|
[Find out more](http://mdp.github.com/gibberish/Gibberish/HMAC.html)
|
68
73
|
|
69
74
|
## Digests
|
@@ -74,9 +79,15 @@ Defaults to 128 bit digest
|
|
74
79
|
Gibberish::SHA1("somedata")
|
75
80
|
#=> efaa311ae448a7374c122061bfed952d940e9e37
|
76
81
|
|
82
|
+
Gibberish::SHA224("somedata")
|
83
|
+
#=> a39b86d838273f5ff4879c26f85e3cb333bb44d73b24f275bad1a6c6
|
84
|
+
|
77
85
|
Gibberish::SHA256("somedata")
|
78
86
|
#=> 87d149cb424c0387656f211d2589fb5b1e16229921309e98588419ccca8a7362
|
79
87
|
|
88
|
+
Gibberish::SHA384("somedata")
|
89
|
+
#=> b6800736973cc061e3efb66a34f8bda8fa946804c6cc4f26a6b9b3950211078801709d0d82707c569a07c8f63c804c87
|
90
|
+
|
80
91
|
Gibberish::SHA512("somedata")
|
81
92
|
#=> a053441b6de662599ecb14c580d6637dcb856a66b2a40a952d39df772e47e98ea22f9e105b31463c5cf2472feae7649464fe89d99ceb6b0bc398a6926926f416
|
82
93
|
|
data/lib/gibberish/digest.rb
CHANGED
@@ -5,20 +5,26 @@ module Gibberish
|
|
5
5
|
#
|
6
6
|
# Gibberish::MD5("data") #=> 8d777f385d3dfec8815d20f7496026dc
|
7
7
|
# Gibberish::SHA1("data") #=> a17c9aaa61e80a1bf71d0d850af4e5baa9800bbd
|
8
|
+
# Gibberish::SHA224("data") #=> f4739673acc03c424343b452787ee23dd62999a8a9f14f4250995769
|
8
9
|
# Gibberish::SHA256("data") #=> 3a6eb0790f39ac87c94f3856b2dd2c5d110e6811602261a9a923d3bb23adc8b7
|
10
|
+
# Gibberish::SHA384("data") #=> 2039e0f0b92728499fb88e23ebc3cfd0554b28400b0ed7b753055c88b5865c3c2aa72c6a1a9ae0a755d87900a4a6ff41
|
9
11
|
# Gibberish::SHA512("data") #=> 77c7ce9a5d86bb386d443bb96390faa120633158699c8844c30b13ab0bf92760b7e4416aea397db91b4ac0e5dd56b8ef7e4b066162ab1fdc088319ce6defc876
|
10
12
|
#
|
11
13
|
# ## OpenSSL CLI Interop
|
12
14
|
#
|
13
15
|
# echo -n 'data' | openssl dgst -sha1
|
16
|
+
# echo -n 'data' | openssl dgst -sha224
|
14
17
|
# echo -n 'data' | openssl dgst -sha256
|
18
|
+
# echo -n 'data' | openssl dgst -sha384
|
15
19
|
# echo -n 'data' | openssl dgst -sha512
|
16
20
|
# echo -n 'data' | openssl dgst -md5
|
17
21
|
#
|
18
22
|
# is the same as
|
19
23
|
#
|
20
24
|
# Gibberish::SHA1("data")
|
25
|
+
# Gibberish::SHA224("data")
|
21
26
|
# Gibberish::SHA256("data")
|
27
|
+
# Gibberish::SHA384("data")
|
22
28
|
# Gibberish::SHA512("data")
|
23
29
|
# Gibberish::MD5("data")
|
24
30
|
#
|
@@ -41,6 +47,23 @@ module Gibberish
|
|
41
47
|
end
|
42
48
|
end
|
43
49
|
|
50
|
+
# Returns the SHA224 digest for the data
|
51
|
+
#
|
52
|
+
# Shorcut alias: Gibberish::SHA224(data)
|
53
|
+
#
|
54
|
+
# @param [String] key
|
55
|
+
# @param [#to_s] data
|
56
|
+
# @param [Hash] options
|
57
|
+
# @option opts [Boolean] :binary (false) encode the data in binary, not Base64
|
58
|
+
def self.sha224(data, opts={})
|
59
|
+
data = data.to_s
|
60
|
+
if opts[:binary]
|
61
|
+
OpenSSL::Digest::SHA224.digest(data)
|
62
|
+
else
|
63
|
+
OpenSSL::Digest::SHA224.hexdigest(data)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
44
67
|
# Returns the SHA256 digest for the data
|
45
68
|
#
|
46
69
|
# Shorcut alias: Gibberish::SHA256(data)
|
@@ -58,6 +81,23 @@ module Gibberish
|
|
58
81
|
end
|
59
82
|
end
|
60
83
|
|
84
|
+
# Returns the SHA384 digest for the data
|
85
|
+
#
|
86
|
+
# Shorcut alias: Gibberish::SHA384(data)
|
87
|
+
#
|
88
|
+
# @param [String] key
|
89
|
+
# @param [#to_s] data
|
90
|
+
# @param [Hash] options
|
91
|
+
# @option opts [Boolean] :binary (false) encode the data in binary, not Base64
|
92
|
+
def self.sha384(data, opts={})
|
93
|
+
data = data.to_s
|
94
|
+
if opts[:binary]
|
95
|
+
OpenSSL::Digest::SHA384.digest(data)
|
96
|
+
else
|
97
|
+
OpenSSL::Digest::SHA384.hexdigest(data)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
61
101
|
# Returns the SHA512 digest for the data
|
62
102
|
#
|
63
103
|
# Shorcut alias: Gibberish::SHA512(data)
|
@@ -97,10 +137,18 @@ module Gibberish
|
|
97
137
|
Digest.sha1(data,opts)
|
98
138
|
end
|
99
139
|
|
140
|
+
def self.SHA224(data, opts={})
|
141
|
+
Digest.sha224(data,opts)
|
142
|
+
end
|
143
|
+
|
100
144
|
def self.SHA256(data, opts={})
|
101
145
|
Digest.sha256(data,opts)
|
102
146
|
end
|
103
147
|
|
148
|
+
def self.SHA384(data, opts={})
|
149
|
+
Digest.sha384(data,opts)
|
150
|
+
end
|
151
|
+
|
104
152
|
def self.SHA512(data, opts={})
|
105
153
|
Digest.sha512(data,opts)
|
106
154
|
end
|
data/lib/gibberish/hmac.rb
CHANGED
@@ -4,8 +4,16 @@ module Gibberish
|
|
4
4
|
# ## Example
|
5
5
|
#
|
6
6
|
# Gibberish::HMAC('key', 'data') #=> 104152c5bfdca07bc633eebd46199f0255c9f49d
|
7
|
+
# Gibberish::HMAC('key', 'data', :digest => :sha224)
|
8
|
+
# #=> 19424d4210e50d7a4521b5f0d54b4b0cff3060deddccfd894fda5b3b
|
7
9
|
# Gibberish::HMAC('key', 'data', :digest => :sha256)
|
8
10
|
# #=> 5031fe3d989c6d1537a013fa6e739da23463fdaec3b70137d828e36ace221bd0
|
11
|
+
# Gibberish::HMAC('key', 'data', :digest => :sha384)
|
12
|
+
# #=> c5f97ad9fd1020c174d7dc02cf83c4c1bf15ee20ec555b690ad58e62da8a00ee
|
13
|
+
# 44ccdb65cb8c80acfd127ebee568958a
|
14
|
+
# Gibberish::HMAC('key', 'data', :digest => :sha512)
|
15
|
+
# #=> 3c5953a18f7303ec653ba170ae334fafa08e3846f2efe317b87efce82376253c
|
16
|
+
# b52a8c31ddcde5a3a2eee183c2b34cb91f85e64ddbc325f7692b199473579c58
|
9
17
|
#
|
10
18
|
# ## OpenSSL CLI Interop
|
11
19
|
#
|
@@ -18,7 +26,10 @@ module Gibberish
|
|
18
26
|
class HMAC
|
19
27
|
DIGEST = {
|
20
28
|
:sha1 => OpenSSL::Digest::Digest.new('sha1'),
|
21
|
-
:
|
29
|
+
:sha224 => OpenSSL::Digest::Digest.new('sha224'),
|
30
|
+
:sha256 => OpenSSL::Digest::Digest.new('sha256'),
|
31
|
+
:sha384 => OpenSSL::Digest::Digest.new('sha384'),
|
32
|
+
:sha512 => OpenSSL::Digest::Digest.new('sha512')
|
22
33
|
}
|
23
34
|
|
24
35
|
# Returns the HMAC for the key and data
|
data/lib/gibberish/version.rb
CHANGED
data/spec/digest_spec.rb
CHANGED
@@ -10,10 +10,18 @@ describe "A variety of digest methods" do
|
|
10
10
|
Gibberish::SHA1("password").must_equal("5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8")
|
11
11
|
end
|
12
12
|
|
13
|
+
it "should work with SHA224" do
|
14
|
+
Gibberish::SHA224("password").must_equal("d63dc919e201d7bc4c825630d2cf25fdc93d4b2f0d46706d29038d01")
|
15
|
+
end
|
16
|
+
|
13
17
|
it "should work with SHA256" do
|
14
18
|
Gibberish::SHA256("password").must_equal("5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8")
|
15
19
|
end
|
16
20
|
|
21
|
+
it "should work with SHA384" do
|
22
|
+
Gibberish::SHA384("password").must_equal("a8b64babd0aca91a59bdbb7761b421d4f2bb38280d3a75ba0f21f2bebc45583d446c598660c94ce680c47d19c30783a7")
|
23
|
+
end
|
24
|
+
|
17
25
|
it "should work with SHA512" do
|
18
26
|
Gibberish::SHA512("password").must_equal("b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86")
|
19
27
|
end
|
data/spec/hmac_spec.rb
CHANGED
@@ -12,4 +12,47 @@ describe "HMAC" do
|
|
12
12
|
hmac.must_equal(o_hmac.chomp)
|
13
13
|
end
|
14
14
|
|
15
|
+
it "should hopefully work for sha224" do
|
16
|
+
Gibberish::HMAC("password", "data", :digest => :sha224).must_equal(
|
17
|
+
"f66aa39e91d003f7d3fc1205f77bd4947af51735a49e197fbd478728")
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should work with OpenSSL HMAC for sha224" do
|
21
|
+
hmac = Gibberish::HMAC("password", "data\n", :digest => :sha224)
|
22
|
+
o_hmac = `echo "data" | openssl dgst -sha224 -hmac 'password'`
|
23
|
+
hmac.must_equal(o_hmac.chomp)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should hopefully work for sha256" do
|
27
|
+
Gibberish::HMAC("password", "data", :digest => :sha256).must_equal(
|
28
|
+
"cccf6f0334130a7010d62332c75b53e7d8cea715e52692b06e9cd41b05644be3")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should work with OpenSSL HMAC for sha256" do
|
32
|
+
hmac = Gibberish::HMAC("password", "data\n", :digest => :sha256)
|
33
|
+
o_hmac = `echo "data" | openssl dgst -sha256 -hmac 'password'`
|
34
|
+
hmac.must_equal(o_hmac.chomp)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should hopefully work for sha384" do
|
38
|
+
Gibberish::HMAC("password", "data", :digest => :sha384).must_equal(
|
39
|
+
"2ed475691214fb85d086577d8d525c609b92520ebd793a74856b3ffd8d3477eaaf0b06ef9e06c8aa81cf29f95078aca6")
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should work with OpenSSL HMAC for sha384" do
|
43
|
+
hmac = Gibberish::HMAC("password", "data\n", :digest => :sha384)
|
44
|
+
o_hmac = `echo "data" | openssl dgst -sha384 -hmac 'password'`
|
45
|
+
hmac.must_equal(o_hmac.chomp)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should hopefully work for sha512" do
|
49
|
+
Gibberish::HMAC("password", "data", :digest => :sha512).must_equal("abf85192282b501874f4803ea08672f2c9d6e656c57801023a0b1f4dd9492ba960efdb560a8618ec783327d6dc31577422651a4cf7eaf722d2caefbc04038c6e")
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should work with OpenSSL HMAC for sha512" do
|
53
|
+
hmac = Gibberish::HMAC("password", "data\n", :digest => :sha512)
|
54
|
+
o_hmac = `echo "data" | openssl dgst -sha512 -hmac 'password'`
|
55
|
+
hmac.must_equal(o_hmac.chomp)
|
56
|
+
end
|
57
|
+
|
15
58
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gibberish
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 1.
|
10
|
+
version: 1.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Mark Percival
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-12-09 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|