python: key import via HKP example

* Fixed the logic used to search for any given pattern.
* Added a sensible method of checking whether a pattern is a key ID or
  fingerprint.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
This commit is contained in:
Ben McGinnes 2018-12-11 04:41:03 +11:00
parent 7c63bfe4ab
commit fe7e01d164

View File

@ -35,6 +35,7 @@ This script imports one or more public keys from the SKS keyservers.
c = gpg.Context() c = gpg.Context()
server = hkp4py.KeyServer("hkps://hkps.pool.sks-keyservers.net") server = hkp4py.KeyServer("hkps://hkps.pool.sks-keyservers.net")
results = [] results = []
keys = []
if len(sys.argv) > 2: if len(sys.argv) > 2:
pattern = " ".join(sys.argv[1:]) pattern = " ".join(sys.argv[1:])
@ -43,23 +44,20 @@ elif len(sys.argv) == 2:
else: else:
pattern = input("Enter the pattern to search for keys or user IDs: ") pattern = input("Enter the pattern to search for keys or user IDs: ")
try: if pattern is not None:
keys = server.search(pattern) try:
if keys is not None: key = server.search(hex(int(pattern, 16)))
print("Found {0} key(s).".format(len(keys))) except ValueError as e:
else: key = server.search(pattern)
pass keys.append(key[0])
except Exception as e: for logrus in pattern.split():
keys = [] try:
for logrus in pattern.split(): key = server.search(hex(int(logrus, 16)))
if logrus.startswith("0x") is True: except ValueErrer as ve:
key = server.search(logrus) key = server.search(logrus)
else:
key = server.search("0x{0}".format(logrus))
keys.append(key[0]) keys.append(key[0])
print("Found {0} key(s).".format(len(keys)))
if keys is not None: if len(keys) > 0:
for key in keys: for key in keys:
import_result = c.key_import(key.key_blob) import_result = c.key_import(key.key_blob)
results.append(import_result) results.append(import_result)