Initial commit

This commit is contained in:
s3lph 2023-02-17 01:57:33 +01:00
commit e00d70e391
Signed by: s3lph
GPG key ID: 0AA29A52FB33CFB5
62 changed files with 358 additions and 0 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
__pycache__/
.venv/
gpg*/pubring.kbx~
gpg*/.#lk*

23
README.md Normal file
View file

@ -0,0 +1,23 @@
# PGP Implementations Benchmark
## Usage
Install the following dependencies:
- tqdm
- gpg
- PGPy
- sequoia (sqop binary)
<!-- - pysequoia -->
Then run:
```shell-session
./benchmark_sign_encrypt.py
```
If gnupg starts raising memory errors, patch your `gpg-agent.conf`:
```shell-session
$ echo auto-expand-secmem >> gpg-agent.conf
```

96
benchmark_sign_encrypt.py Executable file
View file

@ -0,0 +1,96 @@
#!/usr/bin/env python3
import time
import random
import string
import gpg
import subprocess
from pgpy import PGPMessage, PGPKey, constants
#from pysequoia import Cert, Context
from multiprocessing import Pool
from tqdm import tqdm
N = 5000
K = 16
SIGN = True
SIGN_WITH = ('4A3E34DF1E4569E72A197950BAFB02D14732B480', 'sign.asc')
ENCRYPT_TO = ('5C0EF910C3F5FDB51BCE5630C96DCF4E534983F4', 'encrypt.asc')
def gpg_worker(i):
with gpg.Context(armor=True) as ctx:
ctx.set_engine_info(gpg.constants.protocol.OpenPGP,
home_dir='gpg' + str(i%8))
for _ in tqdm(range(N)):
msg = ''.join([random.choice(string.ascii_lowercase) for _ in range(100)]).encode()
rkey = list(ctx.keylist(pattern=ENCRYPT_TO[0], secret=False))
if SIGN:
skey = list(ctx.keylist(pattern=SIGN_WITH[0], secret=False))
else:
skey = None
ciphertext, result, sign_result = ctx.encrypt(msg, recipients=rkey, sign=skey, always_trust=True, compress=False)
def gpg_singlehome_worker(i):
gpg_worker(0)
def pgpy_worker(i):
for _ in tqdm(range(N)):
msg = PGPMessage.new(''.join([random.choice(string.ascii_lowercase) for _ in range(100)]),
compression=constants.CompressionAlgorithm.Uncompressed)
if SIGN:
skey, _ = PGPKey.from_file(SIGN_WITH[1])
msg |= skey.sign(msg)
rkey, _ = PGPKey.from_file(ENCRYPT_TO[1])
enc = rkey.encrypt(msg)
x = str(enc)
def sqop_worker(i):
for _ in tqdm(range(N)):
msg = ''.join([random.choice(string.ascii_lowercase) for _ in range(100)])
if SIGN:
cmdline = ['/usr/bin/sqop', 'encrypt', '--sign-with', SIGN_WITH[1], ENCRYPT_TO[1]]
else:
cmdline = ['/usr/bin/sqop', 'encrypt', ENCRYPT_TO[1]]
p = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, _ = p.communicate(msg.encode())
def pysq_worker(i):
ctx = Context.standard()
for _ in tqdm(range(N)):
msg = ''.join([random.choice(string.ascii_lowercase) for _ in range(100)])
if SIGN:
skey = Cert.from_file(SIGN_WITH[1])
else:
skey = None
rkey = Cert.from_file(ENCRYPT_TO[1])
enc = ctx.encrypt(skey, rkey, msg)
print(enc)
if __name__ == '__main__':
gpg_start = time.monotonic()
with Pool(K) as p:
p.map(gpg_worker, range(K))
gpg_end = time.monotonic()
gpg_single_start = time.monotonic()
with Pool(K) as p:
p.map(gpg_singlehome_worker, range(K))
gpg_single_end = time.monotonic()
pgpy_start = time.monotonic()
with Pool(K) as p:
p.map(pgpy_worker, range(K))
pgpy_end = time.monotonic()
sqop_start = time.monotonic()
with Pool(K) as p:
p.map(sqop_worker, range(K))
sqop_end = time.monotonic()
#pysq_start = time.monotonic()
#with Pool(K) as p:
# p.map(pysq_worker, range(K))
#pysq_end = time.monotonic()
print(f'GnuPG MH : {gpg_end - gpg_start}s')
print(f'GnuPG SH : {gpg_single_end - gpg_single_start}s')
print(f'PGPy : {pgpy_end - pgpy_start}s')
print(f'sqop : {sqop_end - sqop_start}s')
#print(f'pysequoia: {pysq_end - pysq_start}s')

23
encrypt.asc Normal file
View file

@ -0,0 +1,23 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: 5C0E F910 C3F5 FDB5 1BCE 5630 C96D CF4E 5349 83F4
Comment: Test Key <testkey@example.org> (TEST KEY DO NOT USE)
xjMEY+7B3xYJKwYBBAHaRw8BAQdA8EF1++oAryLGka+FN5qmswIBreEYNpkxfxg7
5y/iD37CwAsEHxYKAH0FgmPuwd8DCwkHCRDJbc9OU0mD9EcUAAAAAAAeACBzYWx0
QG5vdGF0aW9ucy5zZXF1b2lhLXBncC5vcmenYZleazrv8HyD4zzEacJX0nE/MPZJ
dcGE5l0yj0pExwMVCggCmwECHgEWIQRcDvkQw/X9tRvOVjDJbc9OU0mD9AAAO34B
ALeV3VcBnuqSgKyLacGHAlPCxde3vpBG/Iw3UElQ+MEaAP9OxMmHG1Jxawubtpec
sByjuwltvYEuATS20ntjstCFA800VGVzdCBLZXkgPHRlc3RrZXlAZXhhbXBsZS5v
cmc+IChURVNUIEtFWSBETyBOT1QgVVNFKcLADgQTFgoAgAWCY+7B3wMLCQcJEMlt
z05TSYP0RxQAAAAAAB4AIHNhbHRAbm90YXRpb25zLnNlcXVvaWEtcGdwLm9yZ7ws
w/tEJKTwBwEguyqBM3wW+333YloRJTHxa1XkntHBAxUKCAKZAQKbAQIeARYhBFwO
+RDD9f21G85WMMltz05TSYP0AACE4AD8D9JTL1RmWPYgMV/UaBSTs3CJ9dM033D3
f/c7crBtq1MA/isrChgnsoiLV4sMsexG9IFAhmznjKuuoyR7HjrANYMMzjgEY+7B
3xIKKwYBBAGXVQEFAQEHQLbbYK+7FwM8UuyDNCG3DXpICH5h3jOKqdEMlgyb0R4G
AwEIB8LAAAQYFgoAcgWCY+7B3wkQyW3PTlNJg/RHFAAAAAAAHgAgc2FsdEBub3Rh
dGlvbnMuc2VxdW9pYS1wZ3Aub3Jnom2l9312LFNYMgHJGoajOMRGcmxU8irBOEJ+
V8BVKjICmwwWIQRcDvkQw/X9tRvOVjDJbc9OU0mD9AAAcwYA/1Stg8iBN+x/BAlt
rhJZG+2q1t7wKpnOS1AwswQYWRFfAP4hVipFhs7x3sBlrNOiEWVFyGBAY7boQA7n
8pnKar5ABw==
=B5nb
-----END PGP PUBLIC KEY BLOCK-----

24
encrypt.key Normal file
View file

@ -0,0 +1,24 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
Comment: 5C0E F910 C3F5 FDB5 1BCE 5630 C96D CF4E 5349 83F4
Comment: Test Key <testkey@example.org> (TEST KEY DO NOT USE)
xVgEY+7B3xYJKwYBBAHaRw8BAQdA8EF1++oAryLGka+FN5qmswIBreEYNpkxfxg7
5y/iD34AAP4i+Sw2/5TzOUGvFKIAvkH8La9quGJfjqS0P7ZMGOU2hBB4wsALBB8W
CgB9BYJj7sHfAwsJBwkQyW3PTlNJg/RHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMu
c2VxdW9pYS1wZ3Aub3Jnp2GZXms67/B8g+M8xGnCV9JxPzD2SXXBhOZdMo9KRMcD
FQoIApsBAh4BFiEEXA75EMP1/bUbzlYwyW3PTlNJg/QAADt+AQC3ld1XAZ7qkoCs
i2nBhwJTwsXXt76QRvyMN1BJUPjBGgD/TsTJhxtScWsLm7aXnLAco7sJbb2BLgE0
ttJ7Y7LQhQPNNFRlc3QgS2V5IDx0ZXN0a2V5QGV4YW1wbGUub3JnPiAoVEVTVCBL
RVkgRE8gTk9UIFVTRSnCwA4EExYKAIAFgmPuwd8DCwkHCRDJbc9OU0mD9EcUAAAA
AAAeACBzYWx0QG5vdGF0aW9ucy5zZXF1b2lhLXBncC5vcme8LMP7RCSk8AcBILsq
gTN8Fvt992JaESUx8WtV5J7RwQMVCggCmQECmwECHgEWIQRcDvkQw/X9tRvOVjDJ
bc9OU0mD9AAAhOAA/A/SUy9UZlj2IDFf1GgUk7NwifXTNN9w93/3O3KwbatTAP4r
KwoYJ7KIi1eLDLHsRvSBQIZs54yrrqMkex46wDWDDMddBGPuwd8SCisGAQQBl1UB
BQEBB0C222CvuxcDPFLsgzQhtw16SAh+Yd4ziqnRDJYMm9EeBgMBCAcAAP9L27kq
/tE7t9n3l0CPOyAsd5fRolQHlsV4UTUPithNGBCRwsAABBgWCgByBYJj7sHfCRDJ
bc9OU0mD9EcUAAAAAAAeACBzYWx0QG5vdGF0aW9ucy5zZXF1b2lhLXBncC5vcmei
baX3fXYsU1gyAckahqM4xEZybFTyKsE4Qn5XwFUqMgKbDBYhBFwO+RDD9f21G85W
MMltz05TSYP0AABzBgD/VK2DyIE37H8ECW2uElkb7arW3vAqmc5LUDCzBBhZEV8A
/iFWKkWGzvHewGWs06IRZUXIYEBjtuhADufymcpqvkAH
=P3Zb
-----END PGP PRIVATE KEY BLOCK-----

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40F04175FBEA00AF22C691AF85379AA6B30201ADE1183699317F183BE72FE20F7E#)
(d #22F92C36FF94F33941AF14A200BE41FC2DAF6AB8625F8EA4B43FB64C18E53684#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Curve25519)(flags djb-tweak)(q
#40B6DB60AFBB17033C52EC833421B70D7A48087E61DE338AA9D10C960C9BD11E06#)
(d #4BDBB92AFED13BB7D9F797408F3B202C7797D1A2540796C57851350F8AD84D18#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#4080D996EAC7A3FCCC376712A18B3541286110B94A936703BB6615C26FF495D1C4#)
(d #21F2CE3E096DA6B5D7C9388991CE6CE4FD29EF753755DF3E0B2BAA6A478A65D4#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40B5B8398D6A2A35C8251F528197FE496D9C9673DB84B1070D70B949FFEB20FCD0#)
(d #0A101468E6B667425B805F120665BC10D41D1BD2009BA8C2939172F148265E82#)
))

BIN
gpg0/pubring.kbx Normal file

Binary file not shown.

BIN
gpg0/random_seed Normal file

Binary file not shown.

BIN
gpg0/trustdb.gpg Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40F04175FBEA00AF22C691AF85379AA6B30201ADE1183699317F183BE72FE20F7E#)
(d #22F92C36FF94F33941AF14A200BE41FC2DAF6AB8625F8EA4B43FB64C18E53684#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Curve25519)(flags djb-tweak)(q
#40B6DB60AFBB17033C52EC833421B70D7A48087E61DE338AA9D10C960C9BD11E06#)
(d #4BDBB92AFED13BB7D9F797408F3B202C7797D1A2540796C57851350F8AD84D18#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#4080D996EAC7A3FCCC376712A18B3541286110B94A936703BB6615C26FF495D1C4#)
(d #21F2CE3E096DA6B5D7C9388991CE6CE4FD29EF753755DF3E0B2BAA6A478A65D4#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40B5B8398D6A2A35C8251F528197FE496D9C9673DB84B1070D70B949FFEB20FCD0#)
(d #0A101468E6B667425B805F120665BC10D41D1BD2009BA8C2939172F148265E82#)
))

BIN
gpg1/pubring.kbx Normal file

Binary file not shown.

BIN
gpg1/random_seed Normal file

Binary file not shown.

BIN
gpg1/trustdb.gpg Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40F04175FBEA00AF22C691AF85379AA6B30201ADE1183699317F183BE72FE20F7E#)
(d #22F92C36FF94F33941AF14A200BE41FC2DAF6AB8625F8EA4B43FB64C18E53684#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Curve25519)(flags djb-tweak)(q
#40B6DB60AFBB17033C52EC833421B70D7A48087E61DE338AA9D10C960C9BD11E06#)
(d #4BDBB92AFED13BB7D9F797408F3B202C7797D1A2540796C57851350F8AD84D18#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#4080D996EAC7A3FCCC376712A18B3541286110B94A936703BB6615C26FF495D1C4#)
(d #21F2CE3E096DA6B5D7C9388991CE6CE4FD29EF753755DF3E0B2BAA6A478A65D4#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40B5B8398D6A2A35C8251F528197FE496D9C9673DB84B1070D70B949FFEB20FCD0#)
(d #0A101468E6B667425B805F120665BC10D41D1BD2009BA8C2939172F148265E82#)
))

BIN
gpg2/pubring.kbx Normal file

Binary file not shown.

BIN
gpg2/random_seed Normal file

Binary file not shown.

BIN
gpg2/trustdb.gpg Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40F04175FBEA00AF22C691AF85379AA6B30201ADE1183699317F183BE72FE20F7E#)
(d #22F92C36FF94F33941AF14A200BE41FC2DAF6AB8625F8EA4B43FB64C18E53684#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Curve25519)(flags djb-tweak)(q
#40B6DB60AFBB17033C52EC833421B70D7A48087E61DE338AA9D10C960C9BD11E06#)
(d #4BDBB92AFED13BB7D9F797408F3B202C7797D1A2540796C57851350F8AD84D18#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#4080D996EAC7A3FCCC376712A18B3541286110B94A936703BB6615C26FF495D1C4#)
(d #21F2CE3E096DA6B5D7C9388991CE6CE4FD29EF753755DF3E0B2BAA6A478A65D4#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40B5B8398D6A2A35C8251F528197FE496D9C9673DB84B1070D70B949FFEB20FCD0#)
(d #0A101468E6B667425B805F120665BC10D41D1BD2009BA8C2939172F148265E82#)
))

BIN
gpg3/pubring.kbx Normal file

Binary file not shown.

BIN
gpg3/random_seed Normal file

Binary file not shown.

BIN
gpg3/trustdb.gpg Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40F04175FBEA00AF22C691AF85379AA6B30201ADE1183699317F183BE72FE20F7E#)
(d #22F92C36FF94F33941AF14A200BE41FC2DAF6AB8625F8EA4B43FB64C18E53684#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Curve25519)(flags djb-tweak)(q
#40B6DB60AFBB17033C52EC833421B70D7A48087E61DE338AA9D10C960C9BD11E06#)
(d #4BDBB92AFED13BB7D9F797408F3B202C7797D1A2540796C57851350F8AD84D18#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#4080D996EAC7A3FCCC376712A18B3541286110B94A936703BB6615C26FF495D1C4#)
(d #21F2CE3E096DA6B5D7C9388991CE6CE4FD29EF753755DF3E0B2BAA6A478A65D4#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40B5B8398D6A2A35C8251F528197FE496D9C9673DB84B1070D70B949FFEB20FCD0#)
(d #0A101468E6B667425B805F120665BC10D41D1BD2009BA8C2939172F148265E82#)
))

BIN
gpg4/pubring.kbx Normal file

Binary file not shown.

BIN
gpg4/random_seed Normal file

Binary file not shown.

BIN
gpg4/trustdb.gpg Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40F04175FBEA00AF22C691AF85379AA6B30201ADE1183699317F183BE72FE20F7E#)
(d #22F92C36FF94F33941AF14A200BE41FC2DAF6AB8625F8EA4B43FB64C18E53684#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Curve25519)(flags djb-tweak)(q
#40B6DB60AFBB17033C52EC833421B70D7A48087E61DE338AA9D10C960C9BD11E06#)
(d #4BDBB92AFED13BB7D9F797408F3B202C7797D1A2540796C57851350F8AD84D18#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#4080D996EAC7A3FCCC376712A18B3541286110B94A936703BB6615C26FF495D1C4#)
(d #21F2CE3E096DA6B5D7C9388991CE6CE4FD29EF753755DF3E0B2BAA6A478A65D4#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40B5B8398D6A2A35C8251F528197FE496D9C9673DB84B1070D70B949FFEB20FCD0#)
(d #0A101468E6B667425B805F120665BC10D41D1BD2009BA8C2939172F148265E82#)
))

BIN
gpg5/pubring.kbx Normal file

Binary file not shown.

BIN
gpg5/random_seed Normal file

Binary file not shown.

BIN
gpg5/trustdb.gpg Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40F04175FBEA00AF22C691AF85379AA6B30201ADE1183699317F183BE72FE20F7E#)
(d #22F92C36FF94F33941AF14A200BE41FC2DAF6AB8625F8EA4B43FB64C18E53684#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Curve25519)(flags djb-tweak)(q
#40B6DB60AFBB17033C52EC833421B70D7A48087E61DE338AA9D10C960C9BD11E06#)
(d #4BDBB92AFED13BB7D9F797408F3B202C7797D1A2540796C57851350F8AD84D18#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#4080D996EAC7A3FCCC376712A18B3541286110B94A936703BB6615C26FF495D1C4#)
(d #21F2CE3E096DA6B5D7C9388991CE6CE4FD29EF753755DF3E0B2BAA6A478A65D4#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40B5B8398D6A2A35C8251F528197FE496D9C9673DB84B1070D70B949FFEB20FCD0#)
(d #0A101468E6B667425B805F120665BC10D41D1BD2009BA8C2939172F148265E82#)
))

BIN
gpg6/pubring.kbx Normal file

Binary file not shown.

BIN
gpg6/random_seed Normal file

Binary file not shown.

BIN
gpg6/trustdb.gpg Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40F04175FBEA00AF22C691AF85379AA6B30201ADE1183699317F183BE72FE20F7E#)
(d #22F92C36FF94F33941AF14A200BE41FC2DAF6AB8625F8EA4B43FB64C18E53684#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235303
Key: (private-key (ecc (curve Curve25519)(flags djb-tweak)(q
#40B6DB60AFBB17033C52EC833421B70D7A48087E61DE338AA9D10C960C9BD11E06#)
(d #4BDBB92AFED13BB7D9F797408F3B202C7797D1A2540796C57851350F8AD84D18#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#4080D996EAC7A3FCCC376712A18B3541286110B94A936703BB6615C26FF495D1C4#)
(d #21F2CE3E096DA6B5D7C9388991CE6CE4FD29EF753755DF3E0B2BAA6A478A65D4#)
))

View file

@ -0,0 +1,5 @@
Created: 20230216T235240
Key: (private-key (ecc (curve Ed25519)(flags eddsa)(q
#40B5B8398D6A2A35C8251F528197FE496D9C9673DB84B1070D70B949FFEB20FCD0#)
(d #0A101468E6B667425B805F120665BC10D41D1BD2009BA8C2939172F148265E82#)
))

BIN
gpg7/pubring.kbx Normal file

Binary file not shown.

BIN
gpg7/random_seed Normal file

Binary file not shown.

BIN
gpg7/trustdb.gpg Normal file

Binary file not shown.

28
sign.asc Normal file
View file

@ -0,0 +1,28 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
Comment: 4A3E 34DF 1E45 69E7 2A19 7950 BAFB 02D1 4732 B480
Comment: Test Key <testkey@example.org> (TEST KEY DO NOT USE)
xVgEY+7ByBYJKwYBBAHaRw8BAQdAtbg5jWoqNcglH1KBl/5JbZyWc9uEsQcNcLlJ
/+sg/NAAAPwKEBRo5rZnQluAXxIGZbwQ1B0b0gCbqMKTkXLxSCZegg4SwsALBB8W
CgB9BYJj7sHIAwsJBwkQuvsC0UcytIBHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMu
c2VxdW9pYS1wZ3Aub3JnOgrILRTCldnJsFx8Cl4huxkjolHJUJyybfAlDRPd/FwD
FQoIApsBAh4BFiEESj403x5FaecqGXlQuvsC0UcytIAAAMhkAP9Jwszfh4o5QJQ2
Xc0JUJdY03XQ1JsiGf6sFzbGEnaBRwD/SQAfiA/WxUjcsV9/tL3jjNcJx8lW9hAb
xYcTFDXTXgLNNFRlc3QgS2V5IDx0ZXN0a2V5QGV4YW1wbGUub3JnPiAoVEVTVCBL
RVkgRE8gTk9UIFVTRSnCwA4EExYKAIAFgmPuwcgDCwkHCRC6+wLRRzK0gEcUAAAA
AAAeACBzYWx0QG5vdGF0aW9ucy5zZXF1b2lhLXBncC5vcmegGc06GpBtZnMd7V/U
XFcqpmixtmxZh6QjPTdM/E7LMQMVCggCmQECmwECHgEWIQRKPjTfHkVp5yoZeVC6
+wLRRzK0gAAA5ScBAML0fEGFX2K5aEzvBxEd2yJvrSoRL80OyB1kGlvVnhNkAQDU
RoWRHu05kUhkkGBUA8vrFaloMT13CizTh2GR6QxcAMdYBGPuwcgWCSsGAQQB2kcP
AQEHQIDZlurHo/zMN2cSoYs1QShhELlKk2cDu2YVwm/0ldHEAAD+IfLOPgltprXX
yTiJkc5s5P0p73U3Vd8+CyuqakeKZdQRhcLAvwQYFgoBMQWCY+7ByAkQuvsC0Ucy
tIBHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9pYS1wZ3Aub3JnHJK+9vLF
zanb4AioRqnc0zxUv2ulUmeC0Sjpr0lBpScCmwK+oAQZFgoAbwWCY+7ByAkQyXb5
2zn3xhFHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9pYS1wZ3Aub3JngVSi
RqvpimcFgb7VQMS7ZSP39igeNIHq6GImSxQh5WMWIQT+ZR2eHKv0NhOcnCrJdvnb
OffGEQAAusMA/0AroYt+YJ0LvAMCXtdQan2JpEx3t8Bfw0Xqgqnm+s/jAQCz78c4
cZXUEpTl7iIpKZySFL+ARHF8NzQVZ9lzSLTMDxYhBEo+NN8eRWnnKhl5ULr7AtFH
MrSAAAD3hwEA2RWIHp87G57Ao2Yb4QJDIGRIoM4H/dCwbP+mdpVIPmoBAPAJtjdt
tgiSbZ7ebaEP/PASEAxBdKw5sNXarFz1pQsO
=iT6q
-----END PGP PRIVATE KEY BLOCK-----