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)
```
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da30b71011d1c69aa8b97093a6d27bdca47213145ac2f57da4c0a58ecda211c9
|
|
| MD5 |
0e10adbf6b7d23623ea705f0dbe3d7dd
|
|
| BLAKE2b-256 |
6d01f5b12f6f3ce3a2094b88467c486d154dc377750ff937d3dc7f509cac33e0
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2e50f567609a990040ced96a6530f293bad0702f5992d44e47bdcd1d15e2a22
|
|
| MD5 |
3a6f0911fcfc0c60558976bfee216370
|
|
| BLAKE2b-256 |
43172bc582e1568410359181e15a23a4f32536e5c71aff126919d17abd98ae52
|