本文整理汇总了Python中gnupg.GPG.encoding方法的典型用法代码示例。如果您正苦于以下问题:Python GPG.encoding方法的具体用法?Python GPG.encoding怎么用?Python GPG.encoding使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gnupg.GPG
的用法示例。
在下文中一共展示了GPG.encoding方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: getGPG
# 需要导入模块: from gnupg import GPG [as 别名]
# 或者: from gnupg.GPG import encoding [as 别名]
def getGPG():
global lunch_gpg
if not lunch_gpg:
from gnupg import GPG
gbinary = getBinary("gpg", "bin")
if not gbinary:
raise Exception("GPG not found")
ghome = os.path.join(get_settings().get_main_config_dir(),"gnupg")
if not locale.getpreferredencoding():
# Fix for GnuPG on Mac
# TODO will this work on systems without English locale?
os.putenv("LANG", "en_US.UTF-8")
if not locale.getpreferredencoding():
# Fix for GnuPG on Mac
# TODO will this work on systems without English locale?
os.putenv("LANG", "en_US.UTF-8")
try:
if getPlatform() == PLATFORM_WINDOWS:
lunch_gpg = GPG("\""+gbinary+"\"",ghome)
else:
lunch_gpg = GPG(gbinary,ghome)
if not lunch_gpg.encoding:
lunch_gpg.encoding = 'utf-8'
except Exception, e:
raise Exception("GPG not working: "+str(e))
示例2: send_mail
# 需要导入模块: from gnupg import GPG [as 别名]
# 或者: from gnupg.GPG import encoding [as 别名]
def send_mail(subject, body_text, addr_from, recipient_list,
fail_silently=False, auth_user=None, auth_password=None,
attachments=None, body_html=None, html_message=None,
connection=None, headers=None):
"""
Sends a multipart email containing text and html versions which
are encrypted for each recipient that has a valid gpg key
installed.
"""
# Make sure only one HTML option is specified
if body_html is not None and html_message is not None: # pragma: no cover
raise ValueError("You cannot specify body_html and html_message at "
"the same time. Please only use html_message.")
# Push users to update their code
if body_html is not None: # pragma: no cover
warn("Using body_html is deprecated; use the html_message argument "
"instead. Please update your code.", DeprecationWarning)
html_message = body_html
# Allow for a single address to be passed in.
if isinstance(recipient_list, six.string_types):
recipient_list = [recipient_list]
connection = connection or get_connection(
username=auth_user, password=auth_password,
fail_silently=fail_silently)
# Obtain a list of the recipients that have gpg keys installed.
key_addresses = {}
if USE_GNUPG:
from email_extras.models import Address
key_addresses = dict(Address.objects.filter(address__in=recipient_list)
.values_list('address', 'use_asc'))
# Create the gpg object.
if key_addresses:
gpg = GPG(gnupghome=GNUPG_HOME)
if GNUPG_ENCODING is not None:
gpg.encoding = GNUPG_ENCODING
# Check if recipient has a gpg key installed
def has_pgp_key(addr):
return addr in key_addresses
# Encrypts body if recipient has a gpg key installed.
def encrypt_if_key(body, addr_list):
if has_pgp_key(addr_list[0]):
encrypted = gpg.encrypt(body, addr_list[0],
always_trust=ALWAYS_TRUST)
if encrypted == "" and body != "": # encryption failed
raise EncryptionFailedError("Encrypting mail to %s failed.",
addr_list[0])
return smart_text(encrypted)
return body
# Load attachments and create name/data tuples.
attachments_parts = []
if attachments is not None:
for attachment in attachments:
# Attachments can be pairs of name/data, or filesystem paths.
if not hasattr(attachment, "__iter__"):
with open(attachment, "rb") as f:
attachments_parts.append((basename(attachment), f.read()))
else:
attachments_parts.append(attachment)
# Send emails - encrypted emails needs to be sent individually, while
# non-encrypted emails can be sent in one send. So the final list of
# lists of addresses to send to looks like:
# [[unencrypted1, unencrypted2, unencrypted3], [encrypted1], [encrypted2]]
unencrypted = [addr for addr in recipient_list
if addr not in key_addresses]
unencrypted = [unencrypted] if unencrypted else unencrypted
encrypted = [[addr] for addr in key_addresses]
for addr_list in unencrypted + encrypted:
msg = EmailMultiAlternatives(subject,
encrypt_if_key(body_text, addr_list),
addr_from, addr_list,
connection=connection, headers=headers)
if html_message is not None:
if has_pgp_key(addr_list[0]):
mimetype = "application/gpg-encrypted"
else:
mimetype = "text/html"
msg.attach_alternative(encrypt_if_key(html_message, addr_list),
mimetype)
for parts in attachments_parts:
name = parts[0]
if key_addresses.get(addr_list[0]):
name += ".asc"
msg.attach(name, encrypt_if_key(parts[1], addr_list))
msg.send(fail_silently=fail_silently)
示例3: GPG
# 需要导入模块: from gnupg import GPG [as 别名]
# 或者: from gnupg.GPG import encoding [as 别名]
algo_run.append(trial.repeat(RUN_COUNT, 1))
set_run.append(algo_run)
lib_run.append(set_run)
result.append(lib_run)
# ********** ############################ **************************************
# ********** BEGIN 'PYTHON-GNUPG' LIBRARY **************************************
# ********** ############################ **************************************
lib_run = ['python-gnupg']
# Setupt the GPG object that will be used for all python-gnupg oprerations
gpg = GPG(gnupghome='.python-gnupg')
gpg.encoding = 'utf-8'
# These commands needed to be run once to generate and save the key
#input_data = gpg.gen_key_input(key_type="RSA", key_length=2**KEY_EXP)
#gpg_key = gpg.gen_key(input_data)
# BEGIN BLOCK CIPHER OPERATIONS
set_run = ['block']
setup = """\
from __main__ import gpg, message, enctext
"""
# Create cipher, create cipher text for decryption, time operations, update
# result with each new operation
algo_run = ['3DES']
enctext = gpg.encrypt(message, None, symmetric='3DES',
passphrase=PASSPHRASE, armor=False)
示例4: create_gpg_object
# 需要导入模块: from gnupg import GPG [as 别名]
# 或者: from gnupg.GPG import encoding [as 别名]
def create_gpg_object(**gpg_options):
gpg = gpg_options.pop('gpg', None)
if not gpg:
gpg = GPG(**gpg_options)
gpg.encoding = 'utf-8'
return gpg
示例5: send_mail
# 需要导入模块: from gnupg import GPG [as 别名]
# 或者: from gnupg.GPG import encoding [as 别名]
def send_mail(subject, body_text, addr_from, addr_to, fail_silently=False,
attachments=None, body_html=None, connection=None,
headers=None):
"""
Sends a multipart email containing text and html versions which
are encrypted for each recipient that has a valid gpg key
installed.
"""
# Allow for a single address to be passed in.
if isinstance(addr_to, six.string_types):
addr_to = [addr_to]
# Obtain a list of the recipients that have gpg keys installed.
key_addresses = {}
if USE_GNUPG:
from email_extras.models import Address
for address in Address.objects.filter(address__in=addr_to):
key_addresses[address.address] = address.use_asc
# Create the gpg object.
if key_addresses:
gpg = GPG(gnupghome=GNUPG_HOME)
if GNUPG_ENCODING is not None:
gpg.encoding = GNUPG_ENCODING
# Encrypts body if recipient has a gpg key installed.
def encrypt_if_key(body, addr_list):
if addr_list[0] in key_addresses:
encrypted = gpg.encrypt(body, addr_list[0],
always_trust=ALWAYS_TRUST)
return smart_text(encrypted)
return body
# Load attachments and create name/data tuples.
attachments_parts = []
if attachments is not None:
for attachment in attachments:
# Attachments can be pairs of name/data, or filesystem paths.
if not hasattr(attachment, "__iter__"):
with open(attachment, "rb") as f:
attachments_parts.append((basename(attachment), f.read()))
else:
attachments_parts.append(attachment)
# Send emails - encrypted emails needs to be sent individually, while
# non-encrypted emails can be sent in one send. So the final list of
# lists of addresses to send to looks like:
# [[unencrypted1, unencrypted2, unencrypted3], [encrypted1], [encrypted2]]
unencrypted = [addr for addr in addr_to if addr not in key_addresses]
unencrypted = [unencrypted] if unencrypted else unencrypted
encrypted = [[addr] for addr in key_addresses]
for addr_list in unencrypted + encrypted:
msg = EmailMultiAlternatives(subject,
encrypt_if_key(body_text, addr_list),
addr_from, addr_list,
connection=connection, headers=headers)
if body_html is not None:
msg.attach_alternative(encrypt_if_key(body_html, addr_list),
"text/html")
for parts in attachments_parts:
name = parts[0]
if key_addresses.get(addr_list[0]):
name += ".asc"
msg.attach(name, encrypt_if_key(parts[1], addr_list))
msg.send(fail_silently=fail_silently)