From 08fbd258462d600dccf963d033e7cfe124869cce Mon Sep 17 00:00:00 2001 From: nishiki Date: Mon, 21 Apr 2014 22:30:41 +0200 Subject: [PATCH] fix the issue 3, bad password --- MPW/Config.rb | 48 +++++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/MPW/Config.rb b/MPW/Config.rb index c2c7d8d..4a3b6b1 100644 --- a/MPW/Config.rb +++ b/MPW/Config.rb @@ -59,19 +59,8 @@ module MPW return false end - share_keys = share_keys.nil? ? '' : share_keys - if !share_keys.empty? - share_keys.split.each do |k| - if not k =~ /[a-zA-Z0-9.-_]+\@[a-zA-Z0-9]+\.[a-zA-Z]+/ - @error_msg = I18n.t('error.config.key_bad_format') - return false - end - - if !check_gpg_key?(k, false) - @error_msg = I18n.t('error.config.no_key_public', :key => k) - return false - end - end + if !check_public_gpg_key(share_keys) + return false end if file_gpg.empty? @@ -128,7 +117,7 @@ module MPW param << "Name-Comment: #{name}\n" param << "Name-Email: #{@key}\n" param << "Expire-Date: #{expire}\n" - param << "Passphrase: apc\n" + param << "Passphrase: #{password}\n" param << "\n" ctx = GPGME::Ctx.new @@ -171,16 +160,41 @@ module MPW end # Check if private key exist - # @args: only_private -> search only private key # @rtrn: true if the key exist, else false - def check_gpg_key?(key = @key, only_private = true) + def check_gpg_key? ctx = GPGME::Ctx.new - ctx.each_key(key, only_private) do + ctx.each_key(key, true) do return true end return false end + + # Check if private key exist + # @args: share_keys -> string with all public keys + # @rtrn: true if the key exist, else false + def check_public_gpg_key(share_keys = @share_keys) + ctx = GPGME::Ctx.new + + share_keys = share_keys.nil? ? '' : share_keys + if !share_keys.empty? + share_keys.split.each do |k| + if not k =~ /[a-zA-Z0-9.-_]+\@[a-zA-Z0-9]+\.[a-zA-Z]+/ + @error_msg = I18n.t('error.config.key_bad_format') + return false + end + + ctx.each_key(key, false) do + next + end + + @error_msg = I18n.t('error.config.no_key_public', :key => k) + return false + end + end + + return true + end # Set the last update when there is a sync # @rtrn: true is the file has been updated