Server IP : 103.119.228.120 / Your IP : 3.128.31.227 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/local/ssl/local/ssl/lib64/python2.7/site-packages/gpgme/ |
Upload File : |
# pygpgme - a Python wrapper for the gpgme library # Copyright (C) 2006 James Henstridge # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Utilities related to editing keys. Currently only contains a utility function for editing the owner trust value of a key in a keyring. """ __metaclass__ = type __all__ = ['edit_sign', 'edit_trust'] import functools import os try: from io import BytesIO except ImportError: from StringIO import StringIO as BytesIO import gpgme def key_editor(function): """A decorator that lets key editor callbacks be written as generators.""" @functools.wraps(function) def wrapper(ctx, key, *args, **kwargs): # Start the generator and run it once. gen = function(ctx, key, *args, **kwargs) try: # XXX: this is for Python 2.x compatibility. try: gen.__next__() except AttributeError: gen.next() except StopIteration: return def edit_callback(status, args, fd): if status in (gpgme.STATUS_EOF, gpgme.STATUS_GOT_IT, gpgme.STATUS_NEED_PASSPHRASE, gpgme.STATUS_GOOD_PASSPHRASE, gpgme.STATUS_BAD_PASSPHRASE, gpgme.STATUS_USERID_HINT, gpgme.STATUS_SIGEXPIRED, gpgme.STATUS_KEYEXPIRED, gpgme.STATUS_PROGRESS, gpgme.STATUS_KEY_CREATED, gpgme.STATUS_ALREADY_SIGNED): return try: data = gen.send((status, args)) except StopIteration: raise gpgme.error(gpgme.ERR_SOURCE_UNKNOWN, gpgme.ERR_GENERAL) if data is not None: os.write(fd, data.encode('ASCII')) output = BytesIO() try: ctx.edit(key, edit_callback, output) finally: gen.close() return wrapper @key_editor def edit_trust(ctx, key, trust): """Edit the trust level of the given key.""" if trust not in (gpgme.VALIDITY_UNDEFINED, gpgme.VALIDITY_NEVER, gpgme.VALIDITY_MARGINAL, gpgme.VALIDITY_FULL, gpgme.VALIDITY_ULTIMATE): raise ValueError('Bad trust value %d' % trust) status, args = yield None assert args == 'keyedit.prompt' status, args = yield 'trust\n' assert args == 'edit_ownertrust.value' status, args = yield '%d\n' % trust if args == 'edit_ownertrust.set_ultimate.okay': status, args = yield 'Y\n' assert args == 'keyedit.prompt' status, args = yield 'quit\n' assert args == 'keyedit.save.okay' status, args = yield 'Y\n' @key_editor def edit_sign(ctx, key, index=0, local=False, norevoke=False, expire=True, check=0): """Sign the given key. index: the index of the user ID to sign, starting at 1. Sign all user IDs if set to 0. local: make a local signature norevoke: make a non-revokable signature command: the type of signature. One of sign, lsign, tsign or nrsign. expire: whether the signature should expire with the key. check: Amount of checking performed. One of: 0 - no answer 1 - no checking 2 - casual checking 3 - careful checking """ if index < 0 or index > len(key.uids): raise ValueError('user ID index out of range') command = 'sign' if local: command = 'l%s' % command if norevoke: command = 'nr%s' % command if check not in [0, 1, 2, 3]: raise ValueError('check must be one of 0, 1, 2, 3') status, args = yield None assert args == 'keyedit.prompt' status, args = yield 'uid %d\n' % index assert args == 'keyedit.prompt' status, args = yield '%s\n' % command while args != 'keyedit.prompt': if args == 'keyedit.sign_all.okay': status, args = yield 'Y\n' elif args == 'sign_uid.expire': status, args = yield '%s\n' % ('Y' if expire else 'N') elif args == 'sign_uid.class': status, args = yield '%d\n' % check elif args == 'sign_uid.okay': status, args = yield 'Y\n' else: raise AssertionError("Unexpected state %r" % ((status, args),)) status, args = yield 'quit\n' assert args == 'keyedit.save.okay' status, args = yield 'Y\n'