summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormokha <mokha@cisco.com>2018-12-02 21:58:12 -0700
committermokha <mokha@cisco.com>2018-12-02 21:58:12 -0700
commitdb3a11c66a9a7ec5751a2001897bd962b4d35e4a (patch)
tree5da4bec8539b408ebaf0f05329a6d5bf650f19ee
parent1954d7b3cd2f88ee4f943f8c3e76c7494aeee64e (diff)
add qrcode export.
-rw-r--r--lib/tfa/cli.rb14
-rw-r--r--lib/tfa/version.rb2
-rw-r--r--tfa.gemspec1
3 files changed, 15 insertions, 2 deletions
diff --git a/lib/tfa/cli.rb b/lib/tfa/cli.rb
index ce6eb01..4493db0 100644
--- a/lib/tfa/cli.rb
+++ b/lib/tfa/cli.rb
@@ -19,8 +19,20 @@ module TFA
end
desc "show NAME", "shows the secret for the given key"
+ method_option :format, default: "raw", enum: ["raw", "qrcode"], desc: "The format to export"
def show(name = nil)
- name ? storage.secret_for(name) : storage.all.map { |x| x.keys }.flatten.sort
+ if name
+ secret = storage.secret_for(name)
+ case options[:format]
+ when "qrcode"
+ require 'rqrcode'
+ RQRCode::QRCode.new("otpauth://totp/unknown@example.org?secret=#{secret}&issuer=#{name}").as_ansi
+ else
+ secret
+ end
+ else
+ storage.all.map { |x| x.keys }.flatten.sort
+ end
end
desc "totp NAME", "generate a Time based One Time Password using the secret associated with the given NAME."
diff --git a/lib/tfa/version.rb b/lib/tfa/version.rb
index 7a2c03d..268b7c3 100644
--- a/lib/tfa/version.rb
+++ b/lib/tfa/version.rb
@@ -1,3 +1,3 @@
module TFA
- VERSION = "0.0.15".freeze
+ VERSION = "0.0.16".freeze
end
diff --git a/tfa.gemspec b/tfa.gemspec
index f030ee8..2a58d86 100644
--- a/tfa.gemspec
+++ b/tfa.gemspec
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
spec.required_ruby_version = "~> 2.5"
spec.add_dependency "rotp", "~> 3.3"
+ spec.add_dependency "rqrcode", "~> 0.10"
spec.add_dependency "thor", "~> 0.20"
spec.add_development_dependency "bundler", "~> 1.6"
spec.add_development_dependency "rake", "~> 12.3"