Skip to main content

A Library to get Keys from a keyserver specified

Project description

# hkp4py

A Library to get GPG/PGP keys from a Keyserver.
This library uses the requests module to get the keys.

## Tested Python Versions

### Python 2.7

* 2.7.15

### Python 3

* 3.7

## Intstall via [AUR](https://aur.archlinux.org/packages/python-hkp4py-git/)

## Install via [PyPI](https://pypi.org/project/hkp4py/)

```bash
pip install hkp4py

pip3 install hkp4py
```

## KeyServer

This object represents a keyserver using the hkp protocol.

### Initialize

Initialize the KeyServer object.

```python
# python2and3 compliance
from __future__ import absolute_import, unicode_literals, print_function

from hkp4py import KeyServer


server = KeyServer("hkps://pgp.ext.selfnet.de")
```

#### HKPS support via following pool.

The hkps pool is also supported.

```url
hkps://hkps.pool.sks-keyservers.net
```

### Add

Add keys to a keyserver.

```python
key = "a long key"
server.add(key)
```

### Search

Find keys with the keyserver object.

```python
keys = server.search('@gnupg.org') # search by string
keys = server.search('0x{}'.format('6F4B4E15768C8C4E'), exact=True) #search by fingerprint
```

### Key Object

```python
for key in keys:
# Key Basic Information
print("Key Algorithm:\t{}".format(key.algo))
print("Key fpr:\t{}".format(key.keyid))
print("Key Length:\t{}".format(key.key_length))
print("Disabled?\t{}".format('yes' if key.disabled else 'no'))
print("Expired?\t{}".format('yes' if key.expired else 'no'))
print("Revoked?\t{}".format('yes' if key.revoked else 'no'))
print("From Host:\t{}".format(key.host))
print("From Port:\t{}".format(key.port))
print("Date Created:\t{}".format(key.creation_date))
print("Date Expired:\t{}".format(key.expiration_date))
print(key.key)
print(key.key_blob)
```

#### Identity Object

```python
for identity in key.identities:
print("Identity:\t{}".format(identity.uid))
print("\tDisabled?\t{}".format('yes' if identity.disabled else 'no'))
print("\tExpired?\t{}".format('yes' if identity.expired else 'no'))
print("\tRevoked?\t{}".format('yes' if identity.revoked else 'no'))
print("\tDate Created:\t{}".format(identity.creation_date))
print("\tDate Expired:\t{}".format(identity.expiration_date))
```

## More Advanced options

To set a different User-Agent and proxies for veiling purposes.
The KeyServer has the following additional options for the connection.

```python
server = KeyServer("hkps://pgp.ext.selfnet.de",
proxies={"http": "socks5h://localhost:5050", "https":
"socks5h://localhost:5050"},
headers={"User-Agent": "Testing"})
```

## Import key with gpgme python bindings

```python
from __future__ import absolute_import, unicode_literals

import gpg

result = gpg.Context().key_import(key.key_blob)
```


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hkp4py-0.2.3.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hkp4py-0.2.3.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file hkp4py-0.2.3.0.tar.gz.

File metadata

  • Download URL: hkp4py-0.2.3.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for hkp4py-0.2.3.0.tar.gz
Algorithm Hash digest
SHA256 da30b71011d1c69aa8b97093a6d27bdca47213145ac2f57da4c0a58ecda211c9
MD5 0e10adbf6b7d23623ea705f0dbe3d7dd
BLAKE2b-256 6d01f5b12f6f3ce3a2094b88467c486d154dc377750ff937d3dc7f509cac33e0

See more details on using hashes here.

File details

Details for the file hkp4py-0.2.3.0-py3-none-any.whl.

File metadata

  • Download URL: hkp4py-0.2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for hkp4py-0.2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e2e50f567609a990040ced96a6530f293bad0702f5992d44e47bdcd1d15e2a22
MD5 3a6f0911fcfc0c60558976bfee216370
BLAKE2b-256 43172bc582e1568410359181e15a23a4f32536e5c71aff126919d17abd98ae52

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page