Example #1
0
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()
Example #2
0
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
Example #3
0
File: gpg.py Project: 01-/pyspread
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
Example #4
0
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()
Example #5
0
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()