dynarex-password 0.1.8 → 0.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.
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