diff --git a/lang/python/src/core.py b/lang/python/src/core.py index 7003b253..ff68bade 100644 --- a/lang/python/src/core.py +++ b/lang/python/src/core.py @@ -762,6 +762,41 @@ class Context(GpgmeWrapper): GPGMEError -- as signaled by the underlying library """ + if sign is True: + _sign = constants.create.SIGN + else: + _sign = 0 + + if encrypt is True: + _encrypt = constants.create.ENCR + else: + _encrypt = 0 + + if certify is True: + _certify = constants.create.CERT + else: + _certify = 0 + + if authenticate is True: + _authenticate = constants.create.AUTH + else: + _authenticate = 0 + + if passphrase is None: + _nopasswd = constants.create.NOPASSWD + else: + _nopasswd = 0 + + if expires is True: + _expires = 0 + else: + _expires = constants.create.NOEXPIRE + + if force is True: + _force = constants.create.FORCE + else: + _force = 0 + if util.is_a_string(passphrase): old_pinentry_mode = self.pinentry_mode old_passphrase_cb = getattr(self, '_passphrase_cb', None) @@ -772,17 +807,10 @@ class Context(GpgmeWrapper): self.set_passphrase_cb(passphrase_cb) try: - self.op_createkey(userid, algorithm, - 0, # reserved - expires_in, - None, # extrakey - ((constants.create.SIGN if sign else 0) - | (constants.create.ENCR if encrypt else 0) - | (constants.create.CERT if certify else 0) - | (constants.create.AUTH if authenticate else 0) - | (constants.create.NOPASSWD if passphrase is None else 0) - | (0 if expires else constants.create.NOEXPIRE) - | (constants.create.FORCE if force else 0))) + self.op_createkey(userid, algorithm, 0, # reserved + expires_in, None, # extrakey + _sign, _encrypt, _certify, _authenticate, + _nopasswd, _expires, _force) finally: if util.is_a_string(passphrase): self.pinentry_mode = old_pinentry_mode @@ -839,6 +867,36 @@ class Context(GpgmeWrapper): GPGMEError -- as signaled by the underlying library """ + if sign is True: + _sign = constants.create.SIGN + else: + _sign = 0 + + if encrypt is True: + _encrypt = constants.create.ENCR + else: + _encrypt = 0 + + if authenticate is True: + _authenticate = constants.create.AUTH + else: + _authenticate = 0 + + if passphrase is None: + _nopasswd = constants.create.NOPASSWD + else: + _nopasswd = 0 + + if expires is True: + _expires = 0 + else: + _expires = constants.create.NOEXPIRE + + if force is True: + _force = constants.create.FORCE + else: + _force = 0 + if util.is_a_string(passphrase): old_pinentry_mode = self.pinentry_mode old_passphrase_cb = getattr(self, '_passphrase_cb', None) @@ -849,15 +907,9 @@ class Context(GpgmeWrapper): self.set_passphrase_cb(passphrase_cb) try: - self.op_createsubkey(key, algorithm, - 0, # reserved - expires_in, - ((constants.create.SIGN if sign else 0) - | (constants.create.ENCR if encrypt else 0) - | (constants.create.AUTH if authenticate else 0) - | (constants.create.NOPASSWD - if passphrase is None else 0) - | (0 if expires else constants.create.NOEXPIRE))) + self.op_createsubkey(key, algorithm, 0, # reserved + expires_in, _sign, _encrypt, _authenticate, + _nopasswd, _expires, _force) finally: if util.is_a_string(passphrase): self.pinentry_mode = old_pinentry_mode @@ -1079,13 +1131,13 @@ class Context(GpgmeWrapper): # $ grep '^gpgme_error_t ' obj/lang/python/python3.5-gpg/gpgme.h \ # | grep -v _op_ | awk "/\(gpgme_ctx/ { printf (\"'%s',\\n\", \$2) } " return ((name.startswith('gpgme_op_') and not - name.endswith('_result')) or name in {'gpgme_new', - 'gpgme_set_ctx_flag', 'gpgme_set_protocol', - 'gpgme_set_sub_protocol', 'gpgme_set_keylist_mode', - 'gpgme_set_pinentry_mode', 'gpgme_set_locale', - 'gpgme_ctx_set_engine_info', 'gpgme_signers_add', - 'gpgme_sig_notation_add', 'gpgme_set_sender', 'gpgme_cancel', - 'gpgme_cancel_async', 'gpgme_get_key'}) + name.endswith('_result')) or name in + {'gpgme_new', 'gpgme_set_ctx_flag', 'gpgme_set_protocol', + 'gpgme_set_sub_protocol', 'gpgme_set_keylist_mode', + 'gpgme_set_pinentry_mode', 'gpgme_set_locale', + 'gpgme_ctx_set_engine_info', 'gpgme_signers_add', + 'gpgme_sig_notation_add', 'gpgme_set_sender', + 'gpgme_cancel', 'gpgme_cancel_async', 'gpgme_get_key'}) _boolean_properties = {'armor', 'textmode', 'offline'}