dynarex-password 0.1.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 600fe6296b6cf9dfce0474cfee0259689c3e9d37
4
- data.tar.gz: e8d0badab8b2a0838a2c851f832cafd239a80be2
2
+ SHA256:
3
+ metadata.gz: 68e42e068bbae11a8456f6d5fd58f06ea3995d38c1d2e014328e3182ffaabdc7
4
+ data.tar.gz: 887c5505df16625687505447e83bc0869189de79456702b4bc93072b12997e1c
5
5
  SHA512:
6
- metadata.gz: 03aca5ee9cc420df1f82f93b363bcb62abed48c6853aa980d904e41320f7997518804950f5c79d41254a9d3e8fdec9541ce7a30fbf2d1c09ce48b0d798289e49
7
- data.tar.gz: 21c59ac867c562e3fff8e4b0e7519cd0bccca0736a0044e4f37f8f5af9aa228266468011659dfd1851a7445aa1ab30c149b4633c2ab1b33594b8d85764e4f5bc
6
+ metadata.gz: 7cbf6f13ac4e0df47ffb6ae79027f0e459e7e24d5f45163ae4958bf34a3a41c05139da497d4764ee6651b6e20fe659d221df34616326f19d5aaa1dc81ba481dc
7
+ data.tar.gz: 786d4e6eddbe1cf55e099db021458b291699eb1063ec565ad7acb8a40dfcc6348d86119aa4265023d87b8682030656a895870001b90333515fce3f11b91a8726
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -5,71 +5,87 @@
5
5
  require 'dynarex'
6
6
 
7
7
  class DynarexPassword
8
+ using ColouredText
8
9
 
9
- attr_reader :dynarex
10
+ attr_reader :dx
10
11
 
11
- def initialize()
12
+ def initialize(debug: false)
13
+
14
+ @debug = debug
15
+ puts 'inside DynarexPassword::initialize'.info if debug
12
16
  super()
13
17
  end
14
18
 
15
19
  # if a fized size of 2 is passed in then each character will generate
16
20
  # exactly 2 random alphanumeric characters
17
21
  #
18
- def generate_lookup(fixed_size=nil)
19
-
20
- @fixed_size = fixed_size
22
+ def generate_lookup(fixed_size: 2)
23
+
21
24
  @temp_list = []
22
- @dynarex = Dynarex.new('codes/code(index,value)')
25
+ @dx = Dynarex.new('codes[fixedsize]/code(index,value)')
26
+ @dx.fixedsize = @fixed_size = fixed_size
23
27
 
24
- chars = (0..9).to_a + Array.new(7) + ('A'..'Z').to_a + Array.new(6) + ('a'..'z').to_a
28
+ chars = (0..9).to_a + Array.new(7) + ('A'..'Z').to_a \
29
+ + Array.new(6) + ('a'..'z').to_a
25
30
  @chars = (0..9).to_a + ('A'..'Z').to_a + ('a'..'z').to_a
26
31
 
27
32
  chars.each do |char|
28
- @dynarex.create index: char, value: get_random_chars(2) if char
33
+
34
+ s = get_random_chars(2)
35
+ @temp_list << s
36
+ @dx.create index: char, value: s if char
37
+
29
38
  end
30
39
  end
31
40
 
32
41
  def lookup(weak_password, file=nil)
33
42
 
34
- if file then
35
- dynarex = Dynarex.new file
36
- elsif @dynarex then
37
- dynarex = @dynarex
43
+ dx = if file then
44
+ Dynarex.new file
45
+ elsif @dx
46
+ @dx
38
47
  else
39
- return 'please supply a lookup file'
48
+ raise 'dynarex-password: please supply a lookup file'.error
40
49
  end
41
50
 
42
- string = weak_password.split(//).map do |char|
43
- char[/[0-9A-Za-z]/] ? dynarex.records[char][:body][:value] : char
51
+ chars = weak_password.split(//).map do |char|
52
+ char[/[0-9A-Za-z]/] ? dx.records[char][:body][:value] : char
44
53
  end
45
54
 
46
- string.join
55
+ chars.join
47
56
  end
48
57
 
58
+ alias encrypt lookup
59
+
49
60
  # reverse_lookup can only be used with a lookup file which was generated
50
61
  # with a fixed char length of 2
51
62
  #
52
63
  def reverse_lookup(password, file=nil)
53
64
 
54
- if file then
55
- dynarex = Dynarex.new file
56
- elsif @dynarex then
57
- dynarex = @dynarex
65
+ dx = if file then
66
+ Dynarex.new file
67
+ elsif @dx
68
+ @dx
58
69
  else
59
- return 'please supply a lookup file'
70
+ raise 'dynarex-password: please supply a lookup file'.error
60
71
  end
61
72
 
62
- h = dynarex.to_h.inject({}){|r, x| r.merge({x[:value] => x[:index]})}
73
+ fixed_size = (dx.summary[:fixedsize] || 2).to_i
74
+ puts 'fixed_size: ' +fixed_size.inspect if @debug
75
+
76
+ h = dx.to_a.inject({}){|r, x| r.merge({x[:value] => x[:index]})}
63
77
 
64
78
  password.split('-').map do |linex|
65
79
  linex.split('_').map do |x|
66
- x.split(//).each_slice(2).map {|chars| h[chars.join]}.join
80
+ x.split(//).each_slice(fixed_size).map {|chars| h[chars.join]}.join
67
81
  end.join '_'
68
82
  end.join '-'
69
83
 
70
- end
84
+ end
85
+
86
+ alias decrypt reverse_lookup
71
87
 
72
- def save(filepath) @dynarex.save filepath, pretty: true end
88
+ def save(filepath) @dx.save filepath end
73
89
 
74
90
  private
75
91
 
@@ -78,7 +94,8 @@ class DynarexPassword
78
94
  size = @fixed_size ? @fixed_size : rand(upper_size)+1
79
95
  newpass = Array.new(size, '').map{@chars[rand(@chars.size)]}.join
80
96
 
81
- # return the encryption providing it doesn't already exist in the lookup table.
97
+ # return the encryption providing it
98
+ # doesn't already exist in the lookup table.
82
99
  return !@temp_list.include?(newpass) ? newpass : get_random_chars(size)
83
100
 
84
101
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynarex-password
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,43 +10,55 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDRDCCAiygAwIBAgIBADANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTEzMDIwNjIwNTY1N1oXDTE0MDIwNjIwNTY1N1owSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBANa4RifdoeKJBWGKCoPQREhIfv8e4/Hk0LdlQcNeWl/boNW65gRKs6Gp0Mvb
19
- TkpAw1wAv/C07G+0NXYI29NXJbscoHGtP3WvGJgYp/v+pKremu3y/ntXmz8lgNp/
20
- CuL+w/EY/iWlWB/mvnLXCsyrCo80BRhQLq+gwxvAr10gDF19sLCWulCXwAi3oZPu
21
- V2EINGFkoCuA/QlJayv6HdhM9SmfsO8m+EY68t7RQnZ8bd9noUcZanRa7Mr+9Jdy
22
- oIwbokWf3udagXVDPM/l8+8KR93iou2ON7cFVmQOtIPmI2qVIJdmxYqazG0HeelU
23
- Msp0zLQ75UE/4uWK3Uu/qrXC/ocCAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4E
24
- FgQUPw0fj6hVeAMyPLSGNGQ/DJZVjk0wCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEB
25
- BQUAA4IBAQCIYv3o0YEpcMc0F2NNYMUex8lrqchlTWluBHc89N6IGG3ZZpJD90mE
26
- l5/xKw3gkSKUmwYsstGw3HAoYenAVCf/7oPp5cClADW43dHEKM34Z/hf1uQNMDGA
27
- cXv6ogxcKRU/QQwKa3I/IDuJQsVD/cY6AwfGzPzkUZXIuiwb+xrSGOkBvppjaB98
28
- DDHixQUZmgSyyqm0Foi+wMH5PtQNyzqdPSAPXVsyfyJB0Egn6bSEZae7AUCkgA2R
29
- jbRy/94v/9srM0/stUsihC/uKQSsvSZIS1uqx9vO6dIUGqlGBcP3Tnd76y108SDa
30
- rufFtHK2J579Wqhr7INW61EcXpM0Kz9K
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwNDA2MDk0NjMwWhcN
15
+ MjIwNDA2MDk0NjMwWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC3w4c3
17
+ mcQC0soFsLsYL9keB8XUVYx/eS45alEUrFyFLr5HVoWrzm2edCtgEjKs5bFZGdA3
18
+ ybagyt0peGb0GPvdfvc5+mHe+AseJ5/6PI0aoxZ1JjQ/j96Bp05y9HXdp6TwklWe
19
+ seorFL4mgXb9xEvX32TuJpDK1xBG6FJFbHfcdIXb0nAvx1Mfj4saoz56lYbv/1vU
20
+ bI+gjQFaQIZvordRdAEnqa0WXjCE/sJlQcYqym3Ex/Lv66VVHyuSZiwOLHt3IpZH
21
+ ri5mx0dk1lyqbeOR+syRTrSDFMzC0cnsSaJuvPIhMtAml83k7tmJ9/e0pAOMPyfY
22
+ SZPlz/cF7PYfo2izk3uFP1EU2ZxqQS3fgkb+zlzm8mUqaBPMGn2Eu5gPC0lFjg0R
23
+ ZjVYmsnmYgDL4XIWlc1tQWX8gnAKCwUHX8gdSsM283aqUAGqFaEe/NVrusQ6FF4v
24
+ gdJjDYFnXP3Pt5x4a5GKQXYl1BIF4Z/2ClWAVAzbhiRC3Okw6S2pyJMAX68CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQURWDXW6Xi
26
+ t7JBhtv1mriJ5GQyzEQwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAY2BbraIa+CWHko4ev8xmJkmb7srDsq0ylvX4qtBw
29
+ AKbVuzi03/s4787NdW35roBiHSZyrjQqPnraElvn+Dti4hebdREUzwUAV+te+oB2
30
+ NxPSDmW/G62Miaw7sp/ebc4qsPIlaBoiaPQk6Da6KYIZH3J2NLJW/5C0lli1vt18
31
+ poRdTd++waxwhrJlHFdda9l6m6A9UiCcFwXvCZylPEYqJx6Tu4DmhOSfwOOgJ3/E
32
+ BhHBO/hQFCu4RYmiU4Qxi0ODrvz7dNjyiY+nb/4Gcj4ZVeYJ3ghgBAzkVFLSfRYj
33
+ PWawKYH3GBkejqvitKr/CeWj0HeWiBF11llNVtjWXFTY4B+7RD4ESn8LLhWX3Tmx
34
+ Au+mAkcDrxw1yHMeE2mA9wz9vNfUuvj7WxM4BzGXGjIjEyLNbARPbUqIGwDxKa+4
35
+ WQVCjSRvmNezQHcWsu3BivmUeupYUF7PupD498rrbInoFhyE2ZaTYzqkIDZd+hmZ
36
+ BWrZt7x5eGnZatdIB9kZeztg
31
37
  -----END CERTIFICATE-----
32
- date: 2013-08-13 00:00:00.000000000 Z
38
+ date: 2021-04-06 00:00:00.000000000 Z
33
39
  dependencies:
34
40
  - !ruby/object:Gem::Dependency
35
41
  name: dynarex
36
42
  requirement: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - '>='
44
+ - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: '0'
46
+ version: '1.8'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.8.27
41
50
  type: :runtime
42
51
  prerelease: false
43
52
  version_requirements: !ruby/object:Gem::Requirement
44
53
  requirements:
45
- - - '>='
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.8'
57
+ - - ">="
46
58
  - !ruby/object:Gem::Version
47
- version: '0'
59
+ version: 1.8.27
48
60
  description:
49
- email: james@r0bertson.co.uk
61
+ email: digital.robertson@gmail.com
50
62
  executables: []
51
63
  extensions: []
52
64
  extra_rdoc_files: []
@@ -62,17 +74,17 @@ require_paths:
62
74
  - lib
63
75
  required_ruby_version: !ruby/object:Gem::Requirement
64
76
  requirements:
65
- - - '>='
77
+ - - ">="
66
78
  - !ruby/object:Gem::Version
67
- version: '0'
79
+ version: 2.1.2
68
80
  required_rubygems_version: !ruby/object:Gem::Requirement
69
81
  requirements:
70
- - - '>='
82
+ - - ">="
71
83
  - !ruby/object:Gem::Version
72
84
  version: '0'
73
85
  requirements: []
74
86
  rubyforge_project:
75
- rubygems_version: 2.0.0.rc.2
87
+ rubygems_version: 2.7.10
76
88
  signing_key:
77
89
  specification_version: 4
78
90
  summary: dynarex-password
metadata.gz.sig CHANGED
Binary file