def genkey(): """Creates a new standard GPG key""" gpg = gnupg.GPG() gpg.encoding = 'utf-8' # Check if standard key is already present pyspread_key_uid = str(config["gpg_key_uid"]) gpg_private_keylist = gpg.list_keys(True) pyspread_key = None for private_key in gpg_private_keylist: if pyspread_key_uid in private_key["uids"]: pyspread_key = private_key if pyspread_key is None: # If no GPG key is set in config, choose one pyspread_key_uid, pyspread_key = choose_uid_key(gpg_private_keylist) if pyspread_key: # A key has been chosen config["gpg_key_uid"] = repr(pyspread_key_uid) else: # No key has been chosen --> Create new one gpg_key_parameters = get_key_params_from_user() input_data = gpg.gen_key_input(**gpg_key_parameters) # Generate key # ------------ # Show infor dialog style = wx.ICON_INFORMATION | wx.DIALOG_NO_PARENT | wx.OK | wx.CANCEL pyspread_key_uid = gpg_key_parameters["name_real"] short_message = _("New GPG key").format(pyspread_key_uid) message = _("After confirming this dialog, a new GPG key ") + \ _("'{key}' will be generated.").format(key=pyspread_key_uid) + \ _(" \n \nThis may take some time.\nPlease wait.\n \n") + \ _("Canceling this operation exits pyspread.") dlg = GMD.GenericMessageDialog(None, message, short_message, style) dlg.Centre() if dlg.ShowModal() == wx.ID_OK: dlg.Destroy() fingerprint = gpg.gen_key(input_data) for private_key in gpg.list_keys(True): if str(fingerprint) == private_key['fingerprint']: config["gpg_key_uid"] = repr(private_key['uids'][0]) else: dlg.Destroy() sys.exit()
def genkey(key_name=None): """Creates a new standard GPG key Parameters ---------- ui: Bool \tIf True, then a new key is created when required without user interaction """ gpg_key_param_list = [ ('key_type', 'DSA'), ('key_length', '2048'), ('subkey_type', 'ELG-E'), ('subkey_length', '2048'), ('expire_date', '0'), ] gpg = gnupg.GPG() gpg.encoding = 'utf-8' # Check if standard key is already present pyspread_key_fingerprint = config["gpg_key_fingerprint"] gpg_private_keys = gpg.list_keys(True) gpg_private_fingerprints = gpg.list_keys(True).fingerprints pyspread_key = None for private_key, fingerprint in zip(gpg_private_keys, gpg_private_fingerprints): if str(pyspread_key_fingerprint) == fingerprint: pyspread_key = private_key if key_name is None and pyspread_key is None: # If no GPG key is set in config, choose one pyspread_key = choose_key(gpg_private_keys) if pyspread_key: # A key has been chosen config["gpg_key_fingerprint"] = repr(pyspread_key['fingerprint']) else: # No key has been chosen --> Create new one if key_name is None: gpg_key_parameters = get_key_params_from_user(gpg_key_param_list) if gpg_key_parameters is None: # No name entered return else: gpg_key_param_list.append( ('name_real', '{key_name}'.format(key_name=key_name))) gpg_key_parameters = dict(gpg_key_param_list) input_data = gpg.gen_key_input(**gpg_key_parameters) # Generate key # ------------ if key_name is None: # Show information dialog style = wx.ICON_INFORMATION | wx.DIALOG_NO_PARENT | wx.OK | \ wx.CANCEL pyspread_key_uid = gpg_key_parameters["name_real"] short_message = _("New GPG key").format(pyspread_key_uid) message = _("After confirming this dialog, a new GPG key ") + \ _("'{key}' will be generated.").format(key=pyspread_key_uid) +\ _(" \n \nThis may take some time.\nPlease wait.") dlg = wx.MessageDialog(None, message, short_message, style) dlg.Centre() if dlg.ShowModal() == wx.ID_OK: dlg.Destroy() gpg_key = gpg.gen_key(input_data) _register_key(gpg_key, gpg) fingerprint = gpg_key.fingerprint else: dlg.Destroy() return else: gpg_key = gpg.gen_key(input_data) _register_key(gpg_key, gpg) fingerprint = gpg_key.fingerprint return fingerprint
def genkey(key_name=None): """Creates a new standard GPG key Parameters ---------- ui: Bool \tIf True, then a new key is created when required without user interaction """ gpg_key_param_list = [ ('key_type', 'DSA'), ('key_length', '2048'), ('subkey_type', 'ELG-E'), ('subkey_length', '2048'), ('expire_date', '0'), ] gpg = gnupg.GPG() gpg.encoding = 'utf-8' # Check if standard key is already present pyspread_key_fingerprint = config["gpg_key_fingerprint"] gpg_private_keys = gpg.list_keys(True) gpg_private_fingerprints = gpg.list_keys(True).fingerprints pyspread_key = None for private_key, fingerprint in zip(gpg_private_keys, gpg_private_fingerprints): if str(pyspread_key_fingerprint) == fingerprint: pyspread_key = private_key if key_name is None and pyspread_key is None: # If no GPG key is set in config, choose one pyspread_key = choose_key(gpg_private_keys) if pyspread_key: # A key has been chosen config["gpg_key_fingerprint"] = repr(pyspread_key['fingerprint']) else: # No key has been chosen --> Create new one if key_name is None: gpg_key_parameters = get_key_params_from_user(gpg_key_param_list) if gpg_key_parameters is None: # No name entered return else: gpg_key_param_list.append( ('name_real', '{key_name}'.format(key_name=key_name))) gpg_key_parameters = dict(gpg_key_param_list) input_data = gpg.gen_key_input(**gpg_key_parameters) # Generate key # ------------ if key_name is None: # Show information dialog style = wx.ICON_INFORMATION | wx.DIALOG_NO_PARENT | wx.OK | \ wx.CANCEL pyspread_key_uid = gpg_key_parameters["name_real"] short_message = _("New GPG key").format(pyspread_key_uid) message = _("After confirming this dialog, a new GPG key ") + \ _("'{key}' will be generated.").format(key=pyspread_key_uid) +\ _(" \n \nThis may take some time.\nPlease wait.") dlg = wx.MessageDialog(None, message, short_message, style) dlg.Centre() if dlg.ShowModal() == wx.ID_OK: dlg.Destroy() gpg_key = gpg.gen_key(input_data) _register_key(gpg_key, gpg) fingerprint = gpg_key.fingerprint else: dlg.Destroy() return else: gpg_key = gpg.gen_key(input_data) _register_key(gpg_key, gpg) fingerprint = gpg_key.fingerprint return fingerprint
def genkey(): """Creates a new standard GPG key""" gpg = gnupg.GPG() gpg.encoding = 'utf-8' # Check if standard key is already present pyspread_key_fingerprint = str(config["gpg_key_fingerprint"]) gpg_private_keys = gpg.list_keys(True) gpg_private_fingerprints = gpg.list_keys(True).fingerprints pyspread_key = None for private_key, fingerprint in zip(gpg_private_keys, gpg_private_fingerprints): if pyspread_key_fingerprint == fingerprint: pyspread_key = private_key if pyspread_key is None: # If no GPG key is set in config, choose one pyspread_key = choose_key(gpg_private_keys, gpg_private_fingerprints) if pyspread_key: # A key has been chosen fingerprint = \ gpg_private_fingerprints[gpg_private_keys.index(pyspread_key)] config["gpg_key_fingerprint"] = repr(fingerprint) else: # No key has been chosen --> Create new one gpg_key_parameters = get_key_params_from_user() input_data = gpg.gen_key_input(**gpg_key_parameters) # Generate key # ------------ # Show infor dialog style = wx.ICON_INFORMATION | wx.DIALOG_NO_PARENT | wx.OK | wx.CANCEL pyspread_key_uid = gpg_key_parameters["name_real"] short_message = _("New GPG key").format(pyspread_key_uid) message = _("After confirming this dialog, a new GPG key ") + \ _("'{key}' will be generated.").format(key=pyspread_key_uid) + \ _(" \n \nThis may take some time.\nPlease wait.\n \n") + \ _("Canceling this operation exits pyspread.") dlg = GMD.GenericMessageDialog(None, message, short_message, style) dlg.Centre() if dlg.ShowModal() == wx.ID_OK: dlg.Destroy() fingerprint = gpg.gen_key(input_data) for private_key in gpg.list_keys(True): if str(fingerprint) == private_key['fingerprint']: config["gpg_key_fingerprint"] = repr( private_key.fingerprint) else: dlg.Destroy() sys.exit()
def genkey(): """Creates a new standard GPG key""" # Initialize our context. core.check_version(None) context = core.Context() context.set_armor(1) # Check if standard key is already present keyname = str(config["gpg_key_uid"]) context.op_keylist_start(keyname, 0) key = context.op_keylist_next() # If no key is chosen generate one no_key = key is None or not key or not keyname if no_key: # If no GPG key is set in config, choose one uid = choose_uid(context) if no_key and uid is not None: # A key has been chosen config["gpg_key_uid"] = repr(uid) stored = config["gpg_key_passphrase_isstored"] passwd = get_gpg_passwd_from_user(stored=stored, uid=uid) if passwd is None: sys.exit() else: config["gpg_key_passphrase"] = repr(passwd) elif no_key and uid is None: # No key has been chosen --> Create new one # Show progress dialog dlg_msg = _("Generating new GPG key {}.\nThis may take some time.\n \n" "Progress bar may stall. Please wait.").format(keyname) dlg = wx.ProgressDialog(_("GPG key generation"), dlg_msg, maximum=200, parent=None, style=wx.PD_ELAPSED_TIME) class CBFs(object): """Callback functions for pyme""" progress = 0 def cbf(self, what=None, type=None, current=None, total=None, hook=None): """Callback function that updates progress dialog""" dlg.Update(self.progress % 199) self.progress += 1 cbfs = CBFs() gpg_key_parameters = get_key_params_from_user() config["gpg_key_uid"] = repr(str( \ [val for key, val in gpg_key_parameters if key == 'Name-Real'][0])) config["gpg_key_passphrase"] = repr(str(([val \ for key, val in gpg_key_parameters if key == 'Passphrase'][0]))) gpg_key_parameters_string = get_key_params_string(gpg_key_parameters) context.set_progress_cb(cbfs.cbf, None) context.op_genkey(gpg_key_parameters_string, None, None) dlg.Destroy()