本文整理汇总了Python中gnupg.GPG属性的典型用法代码示例。如果您正苦于以下问题:Python gnupg.GPG属性的具体用法?Python gnupg.GPG怎么用?Python gnupg.GPG使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类gnupg
的用法示例。
在下文中一共展示了gnupg.GPG属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _generate_signature
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def _generate_signature(self, stream, timestamp_url, gnupghome): # pragma: no cover
# generate the signature
gpg = gnupg.GPG(gnupghome=gnupghome)
signature = gpg.sign_file(stream, detach=True)
# have the signature remotely timestamped
try:
response = requests.post(
timestamp_url, files={"file": signature.data}, timeout=2
)
except requests.Timeout:
raise SPKSignError("Timestamp server did not respond in time")
# check the response status
if response.status_code != 200:
raise SPKSignError(
"Timestamp server returned with status code %d" % response.status_code
)
# verify the timestamp
if not gpg.verify(response.content):
raise SPKSignError("Cannot verify timestamp")
response.encoding = "ascii"
return response.text
示例2: prompt_for_install
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def prompt_for_install(self):
"""
Prompt user to install untrusted repo signing key
"""
print(self.key_info)
repo_key_url = "{0}/{1}".format(self.url, self.repo_signing_key)
print(("warning: Repository key untrusted \n"
"Importing GPG key 0x{0}:\n"
" Userid: \"{1}\"\n"
" From : {2}".format(self.key_info['fingerprint'],
self.key_info['uids'][0],
repo_key_url)))
response = prompt(u'Is this ok: [y/N] ')
if response == 'y':
self.install_key(self.raw_key)
return True
else:
return False
示例3: get_publickeys
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def get_publickeys(self):
"""
This returns the public GPG key to be displayed in the Import Dialog.
The administrator can send this public key to his token vendor and
the token vendor can use this public key to encrypt the token import
file.
:return: a dictionary of public keys with fingerprint
"""
public_keys = {}
if path.isdir(self.gnupg_home):
keys = self.gpg.list_keys(secret=True)
else:
keys = []
log.warning(u"Directory {} does not exists!".format(self.gnupg_home))
for key in keys:
ascii_armored_public_key = self.gpg.export_keys(key.get("keyid"))
public_keys[key.get("keyid")] = {"armor": ascii_armored_public_key,
"fingerprint": key.get(
"fingerprint")}
return public_keys
示例4: add_pgp_key
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def add_pgp_key(self, public_key, signature, guid):
"""
Adds a pgp public key to the profile. The user must have submitted a
valid signature covering the guid otherwise the key will not be added to
the profile.
"""
gpg = gnupg.GPG()
gpg.import_keys(public_key)
if gpg.verify(signature) and guid in signature:
p = self.profile.PublicKey()
p.public_key = public_key
p.signature = signature
self.profile.pgp_key.MergeFrom(p)
self.db.profile.set_proto(self.profile.SerializeToString())
return True
else:
return False
示例5: read_key
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def read_key(path, gpg_bin, gpg_opts):
"""Read and decrypt a single key file.
:param str path: The path to the key to decrypt.
:param str gpg_bin: The path to the gpg binary.
:param list gpg_opts: The options for gpg.
:rtype: str
:returns: The unencrypted content of the file at `path`.
"""
gpg = GPG(gpgbinary=gpg_bin, options=gpg_opts)
with open(path, 'rb') as key_file:
return str(gpg.decrypt_file(key_file))
示例6: write_key
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def write_key(path, key_data, gpg_bin, gpg_opts):
"""Encrypt and write a single key file.
:param str path: The path to the key to decrypt.
:param str gpg_bin: The path to the gpg binary.
:param list gpg_opts: The options for gpg.
"""
gpg = GPG(gpgbinary=gpg_bin, options=gpg_opts)
gpg_recipients = _get_gpg_recipients(path)
# pass always ends it's files with an endline
if not key_data.endswith('\n'):
key_data += '\n'
key_data_enc = gpg.encrypt(key_data, gpg_recipients).data
with open(path, 'wb') as key_file:
key_file.write(key_data_enc)
示例7: _reencrypt_key
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def _reencrypt_key(path, gpg, gpg_recipients):
"""Reencrypt a single key.
Gets called from :func:`passpy.gpg._reencrypt_path`.
:param str path: The path to a gpg encrypted file.
:param gpg: The gpg object.
:type gpg: :class:`gnupg.GPG`
:param list gpg_recipients: The list of GPG Ids to encrypt the key
with.
"""
with open(path, 'rb') as key_file:
key_data = gpg.decrypt_file(key_file).data
key_data_enc = gpg.encrypt(key_data, gpg_recipients).data
with open(path, 'wb') as key_file:
key_file.write(key_data_enc)
示例8: test_check_signature_of_commit_key_not_found
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def test_check_signature_of_commit_key_not_found():
gpg_flexmock = flexmock(GPG)
# No key present
gpg_flexmock.should_receive("list_keys").and_return(flexmock(fingerprints=[]))
# No key received
gpg_flexmock.should_receive("recv_keys").and_return(flexmock(fingerprints=[]))
# Signature cannot be checked
repo_mock = flexmock(git=flexmock().should_receive("show").and_return("E").mock())
verifier = CommitVerifier()
with pytest.raises(PackitException) as ex:
verifier.check_signature_of_commit(
commit=flexmock(hexsha="abcd", repo=repo_mock),
possible_key_fingerprints=["a"],
)
assert "Cannot receive" in str(ex)
# This could possibly but unlikely fail if all the default key servers are down.
示例9: decrypt_file
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def decrypt_file(encrypted_filename, decrypted_filename, key_filename='insecure_secret.key'):
"""
Decrypts an encrypted file.
Arguments:
encrypted_filename (str): The full path to the PGP encrypted file.
decrypted_filename (str): The full path of the the file to write the decrypted data to.
key_filename (str): The name of the key file to use to decrypt the data. It should correspond to one of the
keys found in the gpg-keys directory.
"""
gpg_home_dir = tempfile.mkdtemp()
try:
gpg = gnupg.GPG(gnupghome=gpg_home_dir)
gpg.encoding = 'utf-8'
with open(os.path.join('gpg-keys', key_filename), 'r') as key_file:
gpg.import_keys(key_file.read())
with open(encrypted_filename, 'r') as encrypted_file:
gpg.decrypt_file(encrypted_file, output=decrypted_filename)
finally:
shutil.rmtree(gpg_home_dir)
示例10: _decrypt
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def _decrypt(self):
decrypted_eval_data = []
for row in EvalRow.objects.all():
decrypted_row = {
"pk": row.pk,
"user": row.user_identifier,
"record": row.record_identifier,
"action": row.action,
"timestamp": row.timestamp.__str__(),
}
gpg = gnupg.GPG()
gpg.import_keys(settings.CALLISTO_EVAL_PRIVATE_KEY)
decrypted_eval_row = six.text_type(gpg.decrypt(six.binary_type(row.row)))
if decrypted_eval_row:
decrypted_row.update(json.loads(decrypted_eval_row))
decrypted_eval_data.append(decrypted_row)
return decrypted_eval_data
示例11: configure_gpg
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def configure_gpg(self, key: str, password: Optional[str]) -> None:
"""Configure the repo to sign tags with GPG."""
home = os.environ["GNUPGHOME"] = mkdtemp(prefix="tagbot_gpg_")
os.chmod(home, S_IREAD | S_IWRITE | S_IEXEC)
logger.debug(f"Set GNUPGHOME to {home}")
gpg = GPG(gnupghome=home, use_agent=True)
# For some reason, this doesn't require the password even though the CLI does.
import_result = gpg.import_keys(self._maybe_b64(key))
if import_result.sec_imported != 1:
logger.warning(import_result.stderr)
raise Abort("Importing key failed")
key_id = import_result.fingerprints[0]
logger.debug(f"GPG key ID: {key_id}")
if password:
# Sign some dummy data to put our password into the GPG agent,
# so that we don't need to supply the password when we create a tag.
sign_result = gpg.sign("test", passphrase=password)
if sign_result.status != "signature created":
logger.warning(sign_result.stderr)
raise Abort("Testing GPG key failed")
self._git.config("user.signingKey", key_id)
self._git.config("tag.gpgSign", "true")
示例12: __init__
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def __init__(self):
gnupg.GPG.__init__(self, gnupghome=Settings.get_default().gpg_location)
示例13: get_default
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def get_default():
if GPG.instance is None:
GPG.instance = GPG()
return GPG.instance
示例14: mock_gpg_get_version
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def mock_gpg_get_version(monkeypatch):
def _setver(self):
self.binary_version = GPG_VERSION
monkeypatch.setattr(
GPG, '_check_sane_and_get_gpg_version', _setver)
#
# generic speed test creator
#
示例15: gpg_init_only
# 需要导入模块: import gnupg [as 别名]
# 或者: from gnupg import GPG [as 别名]
def gpg_init_only(tmpdir, benchmark, openpgp_keys, monkeypatch, num_keys):
keys = openpgp_keys[0:num_keys]
gpg = GPG(homedir=tmpdir.dirname)
for key in keys:
gpg.import_keys(key.key_data)