MCPcopy Create free account
hub / github.com/SecurityInnovation/PGPy / usage

Method usage

pgpy/decorators.py:79–109  ·  view source on GitHub ↗
(self, key, user)

Source from the content-addressed store, hash-verified

77
78 @contextlib.contextmanager
79 def usage(self, key, user):
80 def _preiter(first, iterable):
81 yield first
82 for item in iterable:
83 yield item
84
85 em = {}
86 em['keyid'] = key.fingerprint.keyid
87 em['flags'] = ', '.join(flag.name for flag in self.flags)
88
89 if len(self.flags):
90 for _key in _preiter(key, key.subkeys.values()):
91 if self.flags & set(_key._get_key_flags(user)):
92 break
93
94 else: # pragma: no cover
95 warning = "Key {keyid:s} does not have the required usage flag {flags:s}".format(**em)
96 if key._require_usage_flags:
97 raise PGPError(warning)
98 else:
99 logging.warning(warning)
100
101 else:
102 _key = key
103
104 if _key is not key:
105 em['subkeyid'] = _key.fingerprint.keyid
106 logging.debug("Key {keyid:s} does not have the required usage flag {flags:s}; using subkey {subkeyid:s}"
107 "".format(**em)) # TODO: consider adding stacklevel=4 when we only support Python >= 3.8
108
109 yield _key
110
111 def check_attributes(self, key):
112 for attr, expected in self.conditions.items():

Callers 1

_actionMethod · 0.95

Calls 2

PGPErrorClass · 0.85
_get_key_flagsMethod · 0.80

Tested by

no test coverage detected