lorca 0.3.3 → 0.5.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
2
  SHA256:
3
- metadata.gz: 282095acf11f395d43ce90b273e0feef6bb9c13f171839d7eaaded6e83344505
4
- data.tar.gz: f3f0c756ba1579a93990467812e3a3aa5a1525af0f2e81fe631acf6106db51f3
3
+ metadata.gz: f0a97e4325c07eafa5299433125654c671cd81760bfe26a19e5a8b96ce5b3286
4
+ data.tar.gz: a3b7e99eb4dd782e71a2613a76131076c954e268985ede11fd345a63326f92d6
5
5
  SHA512:
6
- metadata.gz: 3e04e6708ea591617a1a1713b1e9a692dc6d592d819aee3d511fec0b70c29377f1c0dbfb1ba9f283ac0b9d4c8a2d816807c1479637d703dc3b812b3070dca9f6
7
- data.tar.gz: 0663d6bf02d0d9d0f7ac025216da27348b129fd09b19565fa8c00e9445a148f21dae707a6bc13ff3fc34010024e522dfafdf3fd6ea8f2851f03636066422fea9
6
+ metadata.gz: e3e0ce4f5b9be532ae17115ad2763e2fe2f69c65daf6d2e6c767ef4fc1c39068e2d40d2bce6806faabdd7438844e263e072e2120026b325b794461ff112d2f0b
7
+ data.tar.gz: cac033b57be5e3353f37bc58f722329457124d53cdfd657b210ce739be911a3392b12a502a67cbc62718e1b6bce0ecbff26173e4cb940262cd51e31c8497e8b0
@@ -6,6 +6,8 @@ Manifest.md
6
6
 
7
7
  ReadMe.md
8
8
 
9
+ Security.md
10
+
9
11
  _expand_lib_path.rb
10
12
 
11
13
  bin/lorca
data/ReadMe.md CHANGED
@@ -1,21 +1,73 @@
1
1
  # Lorca
2
2
 
3
+ [![Version](https://badge.fury.io/rb/lorca.svg)](https://badge.fury.io/rb/lorca)
4
+ [![pipeline status](https://gitlab.com/_rem/lorca/badges/master/pipeline.svg)](https://gitlab.com/_rem/lorca/commits/master)
5
+
6
+
3
7
  ## Details
4
8
 
5
- Lorca generates passphrases based on the algorithm originally described in
6
- [EFF Dice-Generated Passphrases](https://www.eff.org/dice).
9
+ Lorca is a gem for generating passphrases based on the algorithm originally
10
+ described in [EFF Dice-Generated Passphrases](https://www.eff.org/dice).
7
11
  It uses [EFF's long word list](https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt).
12
+ The generator can be used from the command line interface, or added as
13
+ a library.
8
14
 
9
- [![pipeline status](https://gitlab.com/_rem/lorca/badges/master/pipeline.svg)](https://gitlab.com/_rem/lorca/commits/master)
15
+ Passphrases, unlike passwords, are meant to be memorized. Check out these
16
+ links for a few ideas on how to memorize them:
17
+
18
+ - [Using memory effectively](https://www.studygs.net/memory/)
19
+ - [How to memorize lists](https://www.wikihow.com/Memorize-Lists)
20
+
21
+ Passphrases are great password manager keys.
22
+
23
+
24
+ ## Quick Start
25
+
26
+ ### Command line interface
27
+
28
+ Generate, and copy to clipboard, an 8-word passphrase.
29
+
30
+ ```terminal
31
+ $ lorca -p
32
+ ```
33
+
34
+ As Lorca is only capable of writing to the clipboard, it's up to the user
35
+ to paste it, and store it, somewhere safe.
36
+
37
+ For more details on how to use the CLI
38
+
39
+ ```terminal
40
+ $ lorca
41
+ ```
10
42
 
11
43
  ## System Requirements
12
44
 
13
45
  - *nix OS.
46
+ - xsel or xclip (linux)
14
47
  - Ruby 2.4+
15
48
 
49
+
16
50
  ## Installation
17
51
 
18
- Add to a project's Gemfile:
52
+ ### CLI
53
+
54
+ To use Lorca as a command line interface:
55
+
56
+ ```terminal
57
+ $ gem fetch lorca -v <version>
58
+ $ ruby -rdigest/sha2 -e "puts Digest::SHA512.new.hexdigest(File.read('lorca-<version>.gem'))"
59
+ ```
60
+
61
+ Compare it with the hash in `checksum/lorca-<version>.gem.sha512` to
62
+ verify the integrity of the fetched gem. If the checksum matches
63
+
64
+ ```terminal
65
+ $ gem install lorca -v <version>
66
+ ```
67
+
68
+ ### Gem
69
+
70
+ To use Lorca as a gem add it to the project's Gemfile:
19
71
 
20
72
  ```ruby
21
73
  gem "lorca"
@@ -24,20 +76,42 @@ gem "lorca"
24
76
  And then run
25
77
 
26
78
  ```bash
27
- $ bundle
79
+ $ bundle install
80
+ ```
81
+
82
+ For details on the API check out the [online documentation](https://_rem.gitlab.io/lorca).
83
+
84
+
85
+ ### Updates
86
+
87
+ Subscribe to the [update notification feed](https://rubygems.org/gems/lorca/versions.atom).
88
+ Whenever there's a new release available read the
89
+ [ChangeLog.md](https://_rem.gitlab.io/lorca/files/ChangeLog_md.html)
90
+ for details on what changed since the last release.
91
+
92
+ #### CLI
93
+
94
+ Fetch and verify gem, as above,
95
+
96
+ ```terminal
97
+ $ gem fetch lorca -v <version>
98
+ $ ruby -rdigest/sha2 -e "puts Digest::SHA512.new.hexdigest(File.read('lorca-<version>.gem'))"
28
99
  ```
29
100
 
30
- Or to install the command line interface locally:
101
+ then
31
102
 
32
103
  ```bash
33
- $ gem install lorca
104
+ $ gem update lorca
105
+ $ gem cleanup lorca
34
106
  ```
35
107
 
36
- ## Quick Start
108
+ #### Gem
37
109
 
38
- :TODO: Add usage examples here.
110
+ ```bash
111
+ $ bundle update lorca
112
+ ```
39
113
 
40
114
  ## License
41
115
 
42
- Copyright (c) 2018, René Maya. Licensed ISC. Read attached `License.md` file
43
- for details.
116
+ Copyright (c) 2018-2019, René Maya. Licensed ISC. Read attached
117
+ `License.md` file for details.
@@ -0,0 +1,75 @@
1
+ # Security
2
+
3
+ Security issues take precedence over bug fixes, and feature work.
4
+ Peer reviews, and security research, are also welcome to prevent users
5
+ from being compromised.
6
+
7
+
8
+ ## Where should I report security issues?
9
+
10
+ Email directly `rem at disroot [dot] org` with details, and reproduction
11
+ steps. Please allow 90-days, from when we first reply to your report,
12
+ before public disclosure. At that time you may add a copy of your
13
+ published findings in the `disclosed` directory to help update users
14
+ about new, or improved security measures.
15
+
16
+ If you wish to be acknowledge below, mention it explicitly, and include
17
+
18
+ - Your name or alias
19
+ - Report date. YYYY-MM-DD
20
+ - Bug reported. Name or one-line description.
21
+ - Main contact (optional)
22
+
23
+ (Lack of a `disclosed` folder only means nothing has been reported)
24
+
25
+
26
+ ## Configuration
27
+
28
+ According to [EFF's deep dive](https://www.eff.org/ar/deeplinks/2016/07/new-wordlists-random-passphrases)
29
+ into their wordlist released on 2016, each word has about 12.92 bits of
30
+ entropy.
31
+
32
+ By default, `Lorca` generates an 8-word passphrase (about 102.8 bits of
33
+ entropy). Which, considering the relevant calculations on this
34
+ [table](https://i.imgur.com/e3mGIFY.png), should take about 1.6 billion
35
+ years to guess when the cracker is able to generate 10^13 permutations
36
+ per second. Depending on the user's threat model `Lorca` may be configured
37
+ to return a passphrase with up to 53 words; about 684.76 bits of entropy.
38
+
39
+
40
+ ## Checksum
41
+
42
+ Although it's possible to install gems with a trust policy, is not a
43
+ widely used feature. In practice, we'd have to allow installing gems
44
+ without a cert defeating the purpose of having a policy.
45
+
46
+ Instead, we include the checksum of the released gems, as recommended on
47
+ [rubygems](https://guides.rubygems.org/security/#include-checksum-of-released-gems-in-your-repository).
48
+ To verify the gem before installing it
49
+
50
+ ```terminal
51
+ $ gem fetch lorca -v <version>
52
+ $ ruby -rdigest/sha2 -e "puts Digest::SHA512.new.hexdigest(File.read('lorca-<version>.gem'))"
53
+ ```
54
+
55
+ Compare it with the hash in `checksum/lorca-<version>.gem.sha512` to
56
+ verify the integrity of the fetched gem. If the checksum matches
57
+
58
+ ```terminal
59
+ $ gem install lorca -v <version>
60
+ ```
61
+
62
+ If you wish to audit the gem locally before installation
63
+
64
+ ```sh
65
+ $ gem unpack lorca -v <version>
66
+ ```
67
+
68
+
69
+ ## Acknowledgments
70
+
71
+ We would like to thank the following researchers:
72
+
73
+ | Name/alias | Date | Bug reported | Contact |
74
+ |------------|------|--------------|---------|
75
+ | | | | |
@@ -3,6 +3,7 @@
3
3
 
4
4
  require "optparse"
5
5
  require "clipboard"
6
+ require "lorca/version"
6
7
  require "lorca/expansions/phrases"
7
8
 
8
9
  class Lorca
@@ -29,32 +30,46 @@ class Lorca
29
30
  expansion.add Lorca::Phrases
30
31
  end
31
32
 
32
- def parse argv=$argv, writer:Lorca.new, pad: Clipboard, notice: $stdout
33
+ def parse argv=$argv, writer:Lorca.new, stash: Clipboard, outlet: $stdout
33
34
  cli = OptionParser.new do |parser|
34
- write_phrase parser, notice, writer, pad
35
- display_help parser, notice
35
+ write_phrase parser, outlet, writer, stash
36
+ display_help parser, outlet
37
+ display_version parser, outlet
36
38
  end
37
39
 
38
40
  cli.parse!(*argv)
39
41
 
40
- notice.puts cli
42
+ outlet.puts cli
41
43
  end
42
44
 
43
45
  private
44
46
 
45
- def write_phrase cli, notice, writer, pad
47
+ def write_phrase cli, outlet, writer, stash
46
48
  description = "Generate a passphrase with optional number of WORDS"
47
49
  cli.on("-p", "--phrase [WORDS]", Integer, description) { |nw|
48
- phrase = nw ? writer.phrase(words: nw) : writer.phrase
49
- pad.copy phrase
50
- notice.puts "passphrase copied to clipboard"
50
+ phrase = writer.phrase words: nw
51
+ message = outlet.tty? ? stash_away(phrase, store: stash) : phrase
52
+
53
+ outlet.puts message
51
54
  exit_cli
52
55
  }
53
56
  end
54
57
 
55
- def display_help cli, notice
58
+ def stash_away phrase, store:
59
+ store.copy phrase
60
+ "passphrase copied to clipboard"
61
+ end
62
+
63
+ def display_help cli, outlet
56
64
  cli.on_tail("-h", "--help", "Show this message") {
57
- notice.puts cli
65
+ outlet.puts cli
66
+ exit_cli
67
+ }
68
+ end
69
+
70
+ def display_version cli, outlet
71
+ cli.on("--version", "Show Lorca's current version") {
72
+ outlet.puts Lorca::LorcaVersion
58
73
  exit_cli
59
74
  }
60
75
  end
@@ -39,9 +39,11 @@ class Lorca
39
39
  end
40
40
 
41
41
  module LorcaPlugin
42
- # The phrase written given a number of +words+.
43
- def phrase words: settings[:phrases][:min_words]
42
+ # The phrase written given a number of +words+. Defaults to
43
+ # Phrases::MIN_WORDS
44
+ def phrase words: nil
44
45
  conf = settings[:phrases]
46
+ words = words ? words : conf[:min_words]
45
47
  words = validate_counter words, range: conf[:min_words]..conf[:max_words]
46
48
  phrase_ids = []
47
49
  words.times { phrase_ids.push(roll_word_id dice: conf[:dice_to_toss]) }
@@ -52,6 +54,7 @@ class Lorca
52
54
  private
53
55
 
54
56
  WordIdError = Class.new StandardError
57
+ private_constant :WordIdError
55
58
 
56
59
  def word id, wordlist: settings[:phrases][:vocabulary], manager: SDBM
57
60
  read_only = 0444
@@ -34,6 +34,15 @@ class Lorca
34
34
  "ISC"
35
35
  end
36
36
 
37
+ # Online resources.
38
+ def self.metadata
39
+ {
40
+ "source_code_uri" => repo,
41
+ "bug_tracker_uri" => "https://notabug.org/rem/lorca/issues",
42
+ "changelog_uri" => "https://notabug.org/rem/lorca/src/master/ChangeLog.md"
43
+ }.freeze
44
+ end
45
+
37
46
  # Array of official gem files. Manually maintained at Manifest.md.
38
47
  #--
39
48
  # Not frozen, raises warnings building gem.
@@ -65,6 +74,9 @@ class Lorca
65
74
  end
66
75
 
67
76
  # Array of binstubs.
77
+ #---
78
+ # Officially, there can only be one
79
+ #+++
68
80
  def self.binstubs
69
81
  %w[lorca].freeze
70
82
  end
@@ -6,10 +6,10 @@ class Lorca
6
6
  LorcaMajorVersion = 0
7
7
 
8
8
  # Minor version. Updated for new feature releases.
9
- LorcaMinorVersion = 3
9
+ LorcaMinorVersion = 5
10
10
 
11
11
  # Patch version. Updated only for bug fixes from the last feature release.
12
- LorcaPatchVersion = 3
12
+ LorcaPatchVersion = 0
13
13
 
14
14
  # Full version as a string.
15
15
  LorcaVersion = "#{LorcaMajorVersion}.#{LorcaMinorVersion}.#{LorcaPatchVersion}"
@@ -7,6 +7,8 @@ require "minitest/proveit"
7
7
  require "minitest/unordered"
8
8
  require_relative "./../../_expand_lib_path"
9
9
 
10
+ ENV["LORCA_ENV"] = "test"
11
+
10
12
  class Minitest::Test
11
13
  make_my_diffs_pretty!
12
14
  prove_it!
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # -*- frozen_string_literal: true -*-
3
3
 
4
- require "_config/minitest"
4
+ require_relative "./../_config/minitest"
5
5
  require "rbconfig"
6
6
 
7
7
  class TestLorcaBin < Minitest::Test
@@ -3,6 +3,16 @@
3
3
  require_relative "./../../../_config/minitest"
4
4
  require "lorca/expansions/cli"
5
5
 
6
+ class FakeOutlet
7
+ def tty?
8
+ true
9
+ end
10
+
11
+ def puts text
12
+ $stdout.puts text
13
+ end
14
+ end
15
+
6
16
  class TestLorcaCLIExpansion < Minitest::Test
7
17
 
8
18
  # test dependencies, useful for testing Lorca::CLI but should be replaceable
@@ -27,26 +37,42 @@ class TestLorcaCLIExpansion < Minitest::Test
27
37
  writer = Lorca.add(Lorca::Phrases).new
28
38
  message = %r"\Apassphrase copied to clipboard\n"i # no `\z` due to `exit_cli`
29
39
  copied = "ah"
40
+ outlet = FakeOutlet.new
30
41
 
31
42
  writer.stub :phrase, copied do
32
- assert_output(message) { @cli.parse @argv.("--phrase"), writer: writer }
33
- assert_output { @cli.parse @argv.("-p"), writer: writer }
43
+ assert_output(message) { @cli.parse @argv.("--phrase"), writer: writer, outlet: outlet }
44
+ assert_output(message) { @cli.parse @argv.("-p"), writer: writer, outlet: outlet }
34
45
  end
35
46
 
36
47
  assert_equal copied, Clipboard.paste
37
48
  Clipboard.clear
38
49
  end
39
50
 
40
- def test_phrase_is_composed_of_as_many_words_as_the_given_number
51
+ def test_phrase_flag_can_take_an_optional_number_argument
41
52
  writer = Lorca.add(Lorca::Phrases).new
42
53
  copied = "ah"
54
+ outlet = FakeOutlet.new
43
55
 
44
56
  writer.stub :phrase, copied do
45
- _ = capture_io { @cli.parse @argv.("--phrase 9"), writer: writer }
57
+ _ = capture_io { @cli.parse @argv.("--phrase 9"), writer: writer, outlet: outlet }
46
58
  assert_equal copied, Clipboard.paste
47
59
  end
48
60
  Clipboard.clear
49
61
  end
62
+
63
+ def test_phrase_can_be_streamed
64
+ writer = Lorca.add(Lorca::Phrases).new
65
+ copied = "ah"
66
+
67
+ writer.stub :phrase, copied do
68
+ assert_output(%r"\Aah") { @cli.parse @argv.("--phrase"), writer: writer }
69
+ assert_output(%r"\Aah") { @cli.parse @argv.("-p"), writer: writer }
70
+ end
71
+ end
72
+
73
+ def test__version_displays_lorca_version
74
+ assert_output(%r"\A#{Lorca::LorcaVersion}") { @cli.parse @argv.("--version") }
75
+ end
50
76
  end
51
77
 
52
78
  class TestCLILorcaPlugin < Minitest::Test
@@ -6,6 +6,9 @@ require "lorca/expansions/phrases"
6
6
 
7
7
  # Use stubs for built-in expansions. External ones should instanciate Lorca.
8
8
  class TestLorcaPhrasesExpansion < Minitest::Test
9
+
10
+ parallelize_me!
11
+
9
12
  def setup
10
13
  Lorca.add Lorca::Phrases
11
14
  @lorca = Lorca.new
@@ -1,13 +1,16 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # -*- frozen_string_literal: true -*-
3
3
 
4
- require "_config/minitest"
4
+ require_relative "./../../_config/minitest"
5
5
  require "lorca/doc"
6
6
 
7
7
  # Tests w/ assert_respond_to show we care about the method existing not what's
8
8
  # returned, nor it's type. The type is implicitly check by building a gem w/o
9
9
  # warnings. There's a test for that.
10
10
  class TestLorcaDoc < Minitest::Test
11
+
12
+ parallelize_me!
13
+
11
14
  def test_has_summary
12
15
  assert_respond_to Lorca::LorcaDoc, :summary
13
16
  end
@@ -4,6 +4,9 @@ require_relative "./../../_config/minitest"
4
4
  require "lorca/manifest"
5
5
 
6
6
  class TestLorcaManifest < Minitest::Test
7
+
8
+ parallelize_me!
9
+
7
10
  def test_has_gem_name
8
11
  assert_equal "lorca", Lorca::LorcaManifest.gem_name
9
12
  end
@@ -35,10 +38,23 @@ class TestLorcaManifest < Minitest::Test
35
38
  assert_equal "ISC", Lorca::LorcaManifest.license
36
39
  end
37
40
 
41
+ def test_has_metadata
42
+ expected_metadata = {
43
+ "source_code_uri" => "https://notabug.org/rem/lorca",
44
+ "bug_tracker_uri" => "https://notabug.org/rem/lorca/issues",
45
+ "changelog_uri" => "https://notabug.org/rem/lorca/src/master/ChangeLog.md"
46
+ }
47
+
48
+ metadata = Lorca::LorcaManifest.metadata
49
+
50
+ assert_equal expected_metadata, metadata
51
+ assert_frozen metadata
52
+ end
53
+
38
54
  def test_has_files
39
55
  # test/**/dev/**/*.* files are excluded because they are development helpers
40
56
  expected_files =
41
- %w[ChangeLog.md License.md Manifest.md ReadMe.md _expand_lib_path.rb] +
57
+ %w[ChangeLog.md License.md Manifest.md ReadMe.md Security.md _expand_lib_path.rb] +
42
58
  Dir["bin/*"] +
43
59
  Dir["{lib,test}/**/*.{rb,txt,dir,pag}"] -
44
60
  Dir["test/**/dev/**/*.{rb,txt}"]
@@ -75,12 +91,15 @@ class TestLorcaManifest < Minitest::Test
75
91
  assert_equal "bin", Lorca::LorcaManifest.bindir
76
92
  end
77
93
 
94
+ # We don't check all binstubs in bin/ are included. Officially, there
95
+ # can only be one
78
96
  def test_binstubs_are_among_files_in_the_manifest
79
97
  binstubs = Lorca::LorcaManifest.binstubs
80
98
  files = Lorca::LorcaManifest.files
81
99
  bindir = Lorca::LorcaManifest.bindir
82
100
 
83
101
  binstubs.each { |b| assert_includes files, "#{bindir}/#{b}" }
102
+
84
103
  assert_frozen binstubs
85
104
  end
86
105
  end
@@ -1,10 +1,13 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # -*- frozen_string_literal: true -*-
3
3
 
4
- require "_config/minitest"
4
+ require_relative "./../../_config/minitest"
5
5
  require "lorca/version"
6
6
 
7
7
  class TestLorcaVersion < Minitest::Test
8
+
9
+ parallelize_me!
10
+
8
11
  def test_lorca_has_a_version
9
12
  assert_match %r{\d+.\d+.\d+}, Lorca::LorcaVersion
10
13
  end
@@ -42,6 +42,9 @@ module ConfigurableExpansion
42
42
  end
43
43
 
44
44
  class TestLorcaCoreExtension < Minitest::Test
45
+
46
+ parallelize_me!
47
+
45
48
  def test_lorca_can_add_expansions
46
49
  Lorca.add FakeExpansion
47
50
  lorca = Lorca.new
@@ -80,6 +83,9 @@ class TestLorcaCoreExtension < Minitest::Test
80
83
  end
81
84
 
82
85
  class TestLorcaCorePlugin < Minitest::Test
86
+
87
+ parallelize_me!
88
+
83
89
  def setup
84
90
  @lorca = Lorca.new
85
91
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lorca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - René Maya
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-16 00:00:00.000000000 Z
11
+ date: 2019-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clipboard
@@ -16,40 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.1'
19
+ version: '1.3'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.1.1
22
+ version: 1.3.3
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '1.1'
29
+ version: '1.3'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.1.1
32
+ version: 1.3.3
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: bundler
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.16'
39
+ version: '2.0'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 1.16.1
42
+ version: 2.0.1
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '1.16'
49
+ version: '2.0'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 1.16.1
52
+ version: 2.0.1
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rake
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: '12.3'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 12.3.0
62
+ version: 12.3.2
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: '12.3'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 12.3.0
72
+ version: 12.3.2
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: hanna-nouveau
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -134,22 +134,22 @@ dependencies:
134
134
  name: minitest-proveit
135
135
  requirement: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '1.0'
140
137
  - - ">="
141
138
  - !ruby/object:Gem::Version
142
139
  version: 1.0.0
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '1.0'
143
143
  type: :development
144
144
  prerelease: false
145
145
  version_requirements: !ruby/object:Gem::Requirement
146
146
  requirements:
147
- - - "~>"
148
- - !ruby/object:Gem::Version
149
- version: '1.0'
150
147
  - - ">="
151
148
  - !ruby/object:Gem::Version
152
149
  version: 1.0.0
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: minitest-autotest
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -183,11 +183,13 @@ extra_rdoc_files:
183
183
  - License.md
184
184
  - Manifest.md
185
185
  - ReadMe.md
186
+ - Security.md
186
187
  files:
187
188
  - ChangeLog.md
188
189
  - License.md
189
190
  - Manifest.md
190
191
  - ReadMe.md
192
+ - Security.md
191
193
  - _expand_lib_path.rb
192
194
  - bin/lorca
193
195
  - bin/lorca-alpine
@@ -210,7 +212,10 @@ files:
210
212
  homepage: https://notabug.org/rem/lorca
211
213
  licenses:
212
214
  - ISC
213
- metadata: {}
215
+ metadata:
216
+ source_code_uri: https://notabug.org/rem/lorca
217
+ bug_tracker_uri: https://notabug.org/rem/lorca/issues
218
+ changelog_uri: https://notabug.org/rem/lorca/src/master/ChangeLog.md
214
219
  post_install_message:
215
220
  rdoc_options:
216
221
  - "--line-numbers"
@@ -231,8 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
236
  - !ruby/object:Gem::Version
232
237
  version: '0'
233
238
  requirements: []
234
- rubyforge_project:
235
- rubygems_version: 2.7.7
239
+ rubygems_version: 3.0.2
236
240
  signing_key:
237
241
  specification_version: 4
238
242
  summary: Passphrase, and password generator