awskeyring 1.9.1 → 1.9.4

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
2
  SHA256:
3
- metadata.gz: a30aa3b190aaf468207e6b79f4b2169561ddf4f5ceaad9f195d38a0cd1d4e1c8
4
- data.tar.gz: e00232d1936ed6a99d5b7926a19a2d7b472ebce13b61d9bbd153a28c2bb2ef85
3
+ metadata.gz: 31da4ef422d59adf9c5963938ad2ffeaf6ca6457b5b5f8ca2fa3857290316ed3
4
+ data.tar.gz: 8fd51c42d7211c456ab6300561bce071a29acdbe90dea71a2b896f631cd29f07
5
5
  SHA512:
6
- metadata.gz: 26193f4fb124fbcab81c96828a33a23f5ee19f00512a9e4ed458ed4e75dbec31992a92ad886c54e7e8d2f594fd169ac8349ff1a3b541f6b53fcce2b0b8c2c051
7
- data.tar.gz: aa7d5787dc45b3b9b213bbf186b1531cd4b89d9684b3a4ac535f7fd5674b4251147a32fe4c2ec2944988a0b514acaa92b3052185f6e16acd5bd51dd775ed133f
6
+ metadata.gz: 7036e99a3e9ef4d171e0c71fbfd883cb9dbe3158a0f07c3457f380016503ac4e8876121ae4b82a0fd5a8f9b4c3266581041d66fd47f7a72ac3fc201a8d0d27e8
7
+ data.tar.gz: e5cb973a8903077a01bd83eda8ef3f0a00fc6ea7e42257cd3e71c8953258975b428020e0078a58c02672a1d92d1595dae5af5563647ca462f30c7f7c87554325
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017-2021 Tristan Morgan
3
+ Copyright (c) 2016-2022 Tristan Morgan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ![Awskeyring](https://raw.githubusercontent.com/servian/awskeyring/main/awskeyring-144.png)
4
4
 
5
- * [![Build Status](https://travis-ci.com/servian/awskeyring.svg?branch=main)](https://travis-ci.com/servian/awskeyring)
5
+ * [![Build Status](https://app.travis-ci.com/servian/awskeyring.svg?branch=main)](https://app.travis-ci.com/github/servian/awskeyring)
6
6
  * [![Gem Version](https://badge.fury.io/rb/awskeyring.svg)](https://badge.fury.io/rb/awskeyring)
7
7
  * [![license MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)
8
8
  * [![All Downloads](https://ruby-gem-downloads-badge.herokuapp.com/awskeyring?type=total)](https://rubygems.org/gems/awskeyring)
data/awskeyring.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = Awskeyring::HOMEPAGE
16
16
  spec.licenses = ['MIT']
17
17
 
18
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/|^\..*|C.*\.md|.*\.ronn|.*\.png}) }
18
+ spec.files = %w[awskeyring.gemspec README.md LICENSE.txt] + Dir['exe/*', 'lib/**/*.rb', 'man/*.5', 'i18n/*']
19
19
  spec.bindir = 'exe'
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  'bug_tracker_uri' => "#{Awskeyring::HOMEPAGE}/issues",
27
27
  'changelog_uri' => "#{Awskeyring::HOMEPAGE}/blob/main/CHANGELOG.md",
28
28
  'documentation_uri' => "https://rubydoc.info/gems/#{spec.name}/#{Awskeyring::VERSION}",
29
+ 'rubygems_mfa_required' => 'true',
29
30
  'source_code_uri' => "#{Awskeyring::HOMEPAGE}/tree/v#{Awskeyring::VERSION}",
30
31
  'wiki_uri' => "#{Awskeyring::HOMEPAGE}/wiki"
31
32
  }
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aws-sdk-core'
4
+ require 'awskeyring'
5
+
6
+ module Awskeyring
7
+ # Provide a credential provider for use as a library, eg.
8
+ # require 'awskeyring/credential_provider'
9
+ # client = Aws::STS::Client.new(
10
+ # credentials: Awskeyring::CredentialProvider.new("company-acc")
11
+ # )
12
+ class CredentialProvider
13
+ include Aws::CredentialProvider
14
+
15
+ attr_accessor :account
16
+
17
+ def initialize(account)
18
+ @account = account
19
+ end
20
+
21
+ # returns a new Aws::Credentials object
22
+ def credentials
23
+ cred = Awskeyring.get_valid_creds(account: account)
24
+ Aws::Credentials.new(cred[:key],
25
+ cred[:secret],
26
+ cred[:token])
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'base64'
4
+
3
5
  # Awskeyring Module,
4
6
  # gives you an interface to access keychains and items.
5
7
  module Awskeyring
@@ -27,7 +29,11 @@ module Awskeyring
27
29
  #
28
30
  # @param [String] aws_secret_access_key The aws_secret_access_key
29
31
  def self.secret_access_key(aws_secret_access_key)
30
- raise 'Secret Access Key is not 40 chars' if aws_secret_access_key.length != 40
32
+ begin
33
+ raise 'Invalid Secret Access Key' unless Base64.strict_decode64(aws_secret_access_key).length == 30
34
+ rescue ArgumentError
35
+ raise 'Invalid Secret Access Key'
36
+ end
31
37
 
32
38
  aws_secret_access_key
33
39
  end
@@ -6,7 +6,7 @@ require 'json'
6
6
  # Version const and query of latest.
7
7
  module Awskeyring
8
8
  # The Gem's version number
9
- VERSION = '1.9.1'
9
+ VERSION = '1.9.4'
10
10
  # The Gem's homepage
11
11
  HOMEPAGE = 'https://github.com/servian/awskeyring'
12
12
 
data/lib/awskeyring.rb CHANGED
@@ -52,6 +52,7 @@ module Awskeyring # rubocop:disable Metrics/ModuleLength
52
52
  prefs = {
53
53
  awskeyring: awskeyring,
54
54
  keyage: DEFAULT_KEY_AGE,
55
+ browser: DEFAULT_BROWSER_LIST,
55
56
  console: DEFAULT_CONSOLE_LIST
56
57
  }
57
58
  File.new(Awskeyring::PREFS_FILE, 'w').write JSON.dump(prefs)
@@ -133,7 +133,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
133
133
  key: cred[:key],
134
134
  secret: cred[:secret],
135
135
  token: cred[:token],
136
- expiry: (expiry || Time.new + Awskeyring::Awsapi::ONE_HOUR).iso8601
136
+ expiry: (expiry || (Time.new + Awskeyring::Awsapi::ONE_HOUR)).iso8601
137
137
  )
138
138
  end
139
139
 
@@ -372,7 +372,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
372
372
  mfa: item_hash[:mfa],
373
373
  key: item_hash[:key],
374
374
  secret: item_hash[:secret],
375
- user: ENV['USER']
375
+ user: ENV.fetch('USER', 'awskeyring')
376
376
  )
377
377
  Awskeyring.delete_token(account: account, message: '# Removing STS credentials')
378
378
  rescue Aws::Errors::ServiceError => e
@@ -415,7 +415,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
415
415
  secret: cred[:secret],
416
416
  token: cred[:token],
417
417
  path: path,
418
- user: ENV['USER']
418
+ user: ENV.fetch('USER', 'awskeyring')
419
419
  )
420
420
  rescue Aws::Errors::ServiceError => e
421
421
  warn e.to_s
@@ -436,8 +436,8 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
436
436
  # autocomplete
437
437
  def autocomplete(curr, prev = nil)
438
438
  curr, prev = fix_args(curr, prev)
439
- comp_line = ENV['COMP_LINE']
440
- comp_point_str = ENV['COMP_POINT']
439
+ comp_line = ENV.fetch('COMP_LINE', nil)
440
+ comp_point_str = ENV.fetch('COMP_POINT', nil)
441
441
  unless comp_line && comp_point_str
442
442
  exec_name = File.basename($PROGRAM_NAME)
443
443
  warn I18n.t('message.awskeyring', path: $PROGRAM_NAME, bin: exec_name)
@@ -609,7 +609,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
609
609
  bundled_env = to_delete.map { |elem| elem[('BUNDLER_ORIG_'.length)..] }
610
610
  to_delete << 'BUNDLE_GEMFILE'
611
611
  bundled_env.each do |env_name|
612
- ENV[env_name] = ENV["BUNDLER_ORIG_#{env_name}"]
612
+ ENV[env_name] = ENV.fetch("BUNDLER_ORIG_#{env_name}", nil)
613
613
  to_delete << env_name if ENV["BUNDLER_ORIG_#{env_name}"].start_with? 'BUNDLER_'
614
614
  end
615
615
  to_delete.each do |env_name|
data/man/awskeyring.5 CHANGED
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "AWSKEYRING" "5" "September 2021" "" ""
4
+ .TH "AWSKEYRING" "5" "April 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBAwskeyring\fR \- is a small tool to manage AWS account keys in the macOS Keychain
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awskeyring
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.1
4
+ version: 1.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tristan Morgan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-03 00:00:00.000000000 Z
11
+ date: 2022-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-iam
@@ -73,15 +73,14 @@ executables:
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - Gemfile
77
76
  - LICENSE.txt
78
77
  - README.md
79
- - Rakefile
80
78
  - awskeyring.gemspec
81
79
  - exe/awskeyring
82
80
  - i18n/en.yml
83
81
  - lib/awskeyring.rb
84
82
  - lib/awskeyring/awsapi.rb
83
+ - lib/awskeyring/credential_provider.rb
85
84
  - lib/awskeyring/input.rb
86
85
  - lib/awskeyring/validate.rb
87
86
  - lib/awskeyring/version.rb
@@ -93,8 +92,9 @@ licenses:
93
92
  metadata:
94
93
  bug_tracker_uri: https://github.com/servian/awskeyring/issues
95
94
  changelog_uri: https://github.com/servian/awskeyring/blob/main/CHANGELOG.md
96
- documentation_uri: https://rubydoc.info/gems/awskeyring/1.9.1
97
- source_code_uri: https://github.com/servian/awskeyring/tree/v1.9.1
95
+ documentation_uri: https://rubydoc.info/gems/awskeyring/1.9.4
96
+ rubygems_mfa_required: 'true'
97
+ source_code_uri: https://github.com/servian/awskeyring/tree/v1.9.4
98
98
  wiki_uri: https://github.com/servian/awskeyring/wiki
99
99
  post_install_message:
100
100
  rdoc_options: []
@@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  requirements: []
114
- rubygems_version: 3.0.3
114
+ rubygems_version: 3.0.3.1
115
115
  signing_key:
116
116
  specification_version: 4
117
117
  summary: Manages AWS credentials in the macOS keychain
data/Gemfile DELETED
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in awskeyring.gemspec
6
- gemspec
7
-
8
- group :development do
9
- gem 'github_changelog_generator'
10
- gem 'rake'
11
- gem 'ronn'
12
- gem 'rspec'
13
- gem 'rubocop'
14
- gem 'rubocop-performance'
15
- gem 'rubocop-rake'
16
- gem 'rubocop-rspec'
17
- gem 'rubocop-rubycw'
18
- gem 'simplecov'
19
- gem 'yard'
20
- end
data/Rakefile DELETED
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rubocop/rake_task'
5
- require 'ronn'
6
- require 'github_changelog_generator/task'
7
- require 'yard'
8
-
9
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
10
- config.user = 'servian'
11
- config.project = 'awskeyring'
12
- config.future_release = "v#{Awskeyring::VERSION}"
13
- config.since_tag = 'v0.10.0'
14
- end
15
-
16
- RuboCop::RakeTask.new do |rubocop|
17
- rubocop.options = %w[-D --enable-pending-cops]
18
- rubocop.requires << 'rubocop-performance'
19
- rubocop.requires << 'rubocop-rake'
20
- rubocop.requires << 'rubocop-rspec'
21
- rubocop.requires << 'rubocop-rubycw'
22
- end
23
-
24
- desc 'Run RSpec code examples'
25
- task :spec do
26
- puts 'Running RSpec...'
27
- require 'rspec/core'
28
- runner = RSpec::Core::Runner
29
- xcode = runner.run(%w[--pattern spec/**{,/*/**}/*_spec.rb --order rand --format documentation --color])
30
- abort 'RSpec failed' if xcode.positive?
31
- end
32
-
33
- desc 'Check filemode bits'
34
- task :filemode do
35
- puts 'Running FileMode...'
36
- files = Set.new(`git ls-files -z`.split("\x0"))
37
- dirs = Set.new(files.map { |file| File.dirname(file) })
38
- failure = []
39
- files.merge(dirs).each do |file|
40
- mode = File.stat(file).mode
41
- print '.'
42
- failure << file if (mode & 0x7) != (mode >> 3 & 0x7)
43
- end
44
- abort "\nError: Incorrect file mode found\n#{failure.join("\n")}" unless failure.empty?
45
- print "\n"
46
- end
47
-
48
- desc 'generate manpage'
49
- task :ronn do
50
- puts 'Running Ronn...'
51
- doc = Ronn::Document.new('man/awskeyring.5.ronn')
52
- doc.date = Time.parse(`git show -s --format=%ad --date=short`)
53
- File.write('man/awskeyring.5', doc.to_roff)
54
- puts "done\n\n"
55
- end
56
-
57
- YARD::Rake::YardocTask.new do |t|
58
- t.options = ['--fail-on-warning', '--no-progress', '--files', '*.md']
59
- t.stats_options = ['--list-undoc']
60
- end
61
-
62
- desc 'Run Linting, Tests and Documetation tasks'
63
- task default: %i[filemode rubocop spec ronn yard]