webget-random_token 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,36 @@
1
+ # = RandomToken
2
+ #
3
+ # Author:: Joel Parker Henderson, joelparkerhenderson@gmail.com
4
+ # Copyright:: Copyright (c) 2006-2008 Joel Parker Henderson
5
+ # License:: CreativeCommons License, Non-commercial Share Alike
6
+ # License:: LGPL, GNU Lesser General Public License
7
+ #
8
+ # Random token generator to create strong secure text tokens.
9
+ #
10
+ # ==Example
11
+ # RandomToken.new => "avzwbnxrem"
12
+ #
13
+ # RandomToken is a string, so you can do any string methods on it.
14
+ # You can change how tokens are randomly created however you want.
15
+ #
16
+ # This generates a 16-character token of all lowercase letters.
17
+ #
18
+ # We know users are confused by upper/lower case so we use only lowercase,
19
+ # and by letters vs. numbers like "oh" and "zero" so we use only letters.
20
+ #
21
+ # We choose this as an acceptable tradeoff between usability and complexity.
22
+ # We also choose this because it is much better for users on smartphones.
23
+ ##
24
+
25
+ require 'securerandom'
26
+
27
+ class RandomToken < String
28
+
29
+ COUNT = 16
30
+ CHARS = ['a','b','c','d','e','f','g','h','j','k','m','n','p','r','s','t','u','v','w','x','y','z']
31
+
32
+ def initialize
33
+ super(Array.new(COUNT){CHARS[SecureRandom.random_number(CHARS.size)]}.join)
34
+ end
35
+
36
+ end
@@ -0,0 +1,16 @@
1
+ require 'test/unit'
2
+ require 'random_token'
3
+
4
+ class RandomTokenTest < Test::Unit::TestCase
5
+
6
+ def test_all
7
+ 20.times{
8
+ x=RandomToken.new
9
+ assert(x.is_a?(String))
10
+ assert_equal(x.length,PasswordSalt::COUNT)
11
+ assert(x=~/^[a-z]+$/,"lowercase letters:#{x}")
12
+ }
13
+ end
14
+
15
+ end
16
+
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: webget-random_token
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - WebGet
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-13 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: securerandom
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.1.0
24
+ version:
25
+ description:
26
+ email: webget@webget.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files: []
32
+
33
+ files:
34
+ - lib/random_token.rb
35
+ has_rdoc: true
36
+ homepage: http://webget.com/gems/random_token
37
+ post_install_message:
38
+ rdoc_options: []
39
+
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ version:
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: "0"
53
+ version:
54
+ requirements: []
55
+
56
+ rubyforge_project:
57
+ rubygems_version: 1.2.0
58
+ signing_key:
59
+ specification_version: 2
60
+ summary: random_token
61
+ test_files:
62
+ - test/unit/random_token_test.rb