GNU Privacy Guard (GPG) Public Key Encryption with Python (RSA and ElGama)The GNU Privacy Guard (GPG) is a program that is based on OpenPGP and can generation a keys pairs, encrypt and decrypt data, and digitally sign files and verify digital signatures. This page uses Version 2.4.0. It supports the public key encrytion method of RSA and ElGamal. In this case we will encrypt with 1,024-, 2,048- and 3,072-bit public key modulus. |
Encrypting data with public key methods
Public key encryption is just pure magic. You have one key to encrypt, and another key to decrypt. Overall, we can use it to encrypt data, digitally sign data and to pass an encryption key:
For digital signatures, we can use ECDSA, EdDSA, or RSA. While encryption, we can’t use elliptic curves (unless we mix it with symmetric key methods) and use RSA encryption. In this case, we will encrypt data using 1,024-bit, 2,048-bit, and 3,072-bit RSA keys.
It was Phil Zimmerman who created the PGP (Pretty Good Privacy), and which has advanced to the GNU Privacy Guard (GPG). Overall GPG is a program that is based on OpenPGP and can generate key pairs, encrypt and decrypt data, and digitally sign files and verify digital signatures.
We can generate an RSA key pair with (and where we store the key with a given real name and an associated email address):
input_data = gpg.gen_key_input(key_type="RSA",key_usage='encrypt', key_length=1024,passphrase=password,name_real=user,name_email=email)
For ElGamal encryption, we define a subkey type of "ELG-E":
input_data = gpg.gen_key_input(key_type="RSA",subkey_type="ELG-E",key_usage='encrypt',key_length=1024,subkey_length=1024,passphrase=password,name_real=user,name_email=email)
With a message we can then encrypt with:
enc_data = gpg.encrypt(message,email) print ("Encrypt:\n",str(enc_data).replace(chr(13),''))
This gives an Armor message of:
-----BEGIN PGP MESSAGE----- hIwDJ+u76a46FlsBA/9OExTHCH9x95U2tXD51+JS4XkW4s5wKys0j+fvid4dpONN WoUZAxXL/oVtMmiTxP4L3aSGHV3atfmXCWoCBquzKkwSSi//qiwLawC1WhdprbnV 5Eye8Lk90DyIoZ3jxxIau8iwpTW5CutUUT/wNwHDPkD22Z3z8nNVoADu6JIuttRY AQkCEGPTdsM+DfoitwNm+jXx2hn2Tz2A9AChT3MAw3W4nkhMO/Ya66+zIk2q8iN5 pB5LrgCW8S6PeXTrzxnK7G2jRa8RxShHtjceaIQGHq//p1vqorEf/w== =MxuG -----END PGP MESSAGE-----
Next, we can decrypt this with:
ver = gpg.decrypt(str(enc_data),passphrase=password) print ("Decrypted:\n",ver)
The following is the code:
import gnupg import sys gpg = gnupg.GPG(gnupghome="c:\\gpg") enc="rsa-1024" password="password" user="Fred Bloggs" email="[email protected]" message="Hello" if (len(sys.argv)>1): enc=str(sys.argv[1]) if (len(sys.argv)>2): password=str(sys.argv[2]) if (len(sys.argv)>3): user=str(sys.argv[3]) if (len(sys.argv)>4): email=str(sys.argv[4]) if (len(sys.argv)>5): message=str(sys.argv[5]) if (enc=="elg-1024"): input_data = gpg.gen_key_input(key_type="RSA",subkey_type="ELG-E",key_usage='encrypt',key_length=1024,subkey_length=1024,passphrase=password,name_real=user,name_email=email) elif (enc=="elg-2048"): input_data = gpg.gen_key_input(key_type="RSA",subkey_type="ELG-E",key_usage='encrypt',key_length=2048,subkey_length=2048,passphrase=password,name_real=user,name_email=email) elif (enc=="rsa-1024"): input_data = gpg.gen_key_input(key_type="RSA",key_usage='encrypt',key_length=1024,passphrase=password,name_real=user,name_email=email) elif (enc=="rsa-2048"): input_data = gpg.gen_key_input(key_type="RSA",key_usage='encrypt',key_length=2048,passphrase=password,name_real=user,name_email=email) elif (enc=="rsa-3072"): input_data = gpg.gen_key_input(key_type="RSA",key_usage='encrypt',key_length=3072,passphrase=password,name_real=user,name_email=email) else: print ("Can't find key type") key = gpg.gen_key(input_data) fp = key.fingerprint print ("Key ID:\t\t",fp) print ("Type:\t\t",enc) print ("Email:\t\t",email) print ("Message:\t",message) enc_data = gpg.encrypt(message,email) print ("Encrypt:\n",str(enc_data).replace(chr(13),'')) ver = gpg.decrypt(str(enc_data),passphrase=password) print ("Decrypted:\n",ver) print("\n\n\n") ascii_armored_public_keys = gpg.export_keys(fp) print("Public key (used to encrypt):\n",ascii_armored_public_keys.replace(chr(13),'')) ascii_armored_private_keys = gpg.export_keys(fp,True,passphrase=password) print("Private key (used to decrypt):\n",ascii_armored_private_keys.replace(chr(13),'')) print("Private key deleted: ",gpg.delete_keys(fp,True,passphrase=password)) print("Public key deleted: ",gpg.delete_keys(fp))
To encrypt with RSA-1024:
Key ID: 0E20D721C1E6BF0FD56DDE5127EBBBE9AE3A165B Type: rsa-1024 Type: [email protected] Message: Hello, how are you? Encrypt: -----BEGIN PGP MESSAGE----- hIwDJ+u76a46FlsBA/9OExTHCH9x95U2tXD51+JS4XkW4s5wKys0j+fvid4dpONN WoUZAxXL/oVtMmiTxP4L3aSGHV3atfmXCWoCBquzKkwSSi//qiwLawC1WhdprbnV 5Eye8Lk90DyIoZ3jxxIau8iwpTW5CutUUT/wNwHDPkD22Z3z8nNVoADu6JIuttRY AQkCEGPTdsM+DfoitwNm+jXx2hn2Tz2A9AChT3MAw3W4nkhMO/Ya66+zIk2q8iN5 pB5LrgCW8S6PeXTrzxnK7G2jRa8RxShHtjceaIQGHq//p1vqorEf/w== =MxuG -----END PGP MESSAGE----- Decrypted: Hello, how are you? Public key (used to encrypt): -----BEGIN PGP PUBLIC KEY BLOCK----- mI0EY+1HPAEEANRpYB5oxJtSQ27di1MseANxAwVWr6Xs/bpZXToFn4JoA3H1G3FN lXoYgdQBnsC75LTXc5VFPRh9G8YyPd5O7D7LBNT8OMGjVzD2e2iICXHcEGVhc5ob vGdUSd8/yxN0V+lmOzQ3myXWVnU3BjSMZQsXuQQM6916/pTwD9KvRme3ABEBAAG0 G0ZyZWQgQmxvZ2dzIDxmcmVkQGhvbWUuY29tPojRBBMBCAA7FiEEDiDXIcHmvw/V bd5RJ+u76a46FlsFAmPtRzwCGw0FCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AA CgkQJ+u76a46FluaIQP/anlKohMDU40yOezTq3lJoTvDeY1t26n/ROM2Evgb4npZ L7dt5Xx3WlQxKi7/PwKD3FubV08bH75ZGdYZVXPZlnZ3EzS2ElbTr5AIdUeZKYX1 GRa/q380WcPwv2MQOzUKqvs8wR+uj0X5FMzIh/cTVK/KHTe3u9+R9f5XCzU1XcM= =e5Jx -----END PGP PUBLIC KEY BLOCK----- Private key (used to decrypt): -----BEGIN PGP PRIVATE KEY BLOCK----- lQIFBGPtRzwBBADUaWAeaMSbUkNu3YtTLHgDcQMFVq+l7P26WV06BZ+CaANx9Rtx TZV6GIHUAZ7Au+S013OVRT0YfRvGMj3eTuw+ywTU/DjBo1cw9ntoiAlx3BBlYXOa G7xnVEnfP8sTdFfpZjs0N5sl1lZ1NwY0jGULF7kEDOvdev6U8A/Sr0ZntwARAQAB /gcDAva74X8Cz+O8ysrWePki5iBOAruSUhM+oVxEuIjOp8Xp/tb1Uc43hapKRuBq D/igWhFojnfnXOeHaS4WqIbO15Mt5IjGNTL77DyiDvQX4i9FseEyyS8ETJ5PnzMT aaGdcWWxPCO6ArxXSs+zld4a1zuHvsKZbWjf7YNCnRYsoe35yvMf29og3gHX1ugS v0RoiRWXYvexybScPGCcylcm/CVhjS4Ze+gcSAxpNDxEbQEUhWDUH7layqT1TjM3 ArHPjaEOsKKiWUI2Y7bn6gIvAmkkdENjhnR6B7IWvqV6H5aW1wLJCgI/ccm0kxvF LWVyFZIq1Uwy/EydbWl4hdkVfyZu6wYK56ic5pihRCBJN91fQa3e0LjeYtjPXBQT yYIFjd3GJkrR6KKV4xYvWxnOEIy+qQ+1hcbYVy3XDu+EPfn5I9Bw4x1bw/H9u7FU fpd2TTw1+Y7Olq5gRUqAsHSKj+fp5g3RQcHc+O12jPCeAbqLCubVt7QbRnJlZCBC bG9nZ3MgPGZyZWRAaG9tZS5jb20+iNEEEwEIADsWIQQOINchwea/D9Vt3lEn67vp rjoWWwUCY+1HPAIbDQULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRAn67vp rjoWW5ohA/9qeUqiEwNTjTI57NOreUmhO8N5jW3bqf9E4zYS+Bvielkvt23lfHda VDEqLv8/AoPcW5tXTxsfvlkZ1hlVc9mWdncTNLYSVtOvkAh1R5kphfUZFr+rfzRZ w/C/YxA7NQqq+zzBH66PRfkUzMiH9xNUr8odN7e735H1/lcLNTVdww== =/kR2 -----END PGP PRIVATE KEY BLOCK----- Private key deleted: ok Public key deleted: ok
and for RSA-2048:
Key ID: 828A97B83EBD4D769C6730AE9F97A790CB68E1AD Type: rsa-2048 Type: [email protected] Message: Hello, how are you? Encrypt: -----BEGIN PGP MESSAGE----- hQEMA5+Xp5DLaOGtAQgAlX0K/3b/+QlBDa4DFDn3LSAhM0lDJN2vHP+tch+lI9Je mDkvJO4wdDmNHiVTXBmPYHVcGfa1dwuNu8BLpHYMuTJUlHT9OHF3nveuZstOwN7B 89dIWN2c6EOUKOY3YfFocbRrKTQeFovbgH8C/9BQb6+IAMwiTDODuS323kqxBsBG 1SwH8WLMv+euKza/2m9Kfj/5DvkqSAQ5/t1W9IdSZ/ca2lEW00ZTUiK+zqZSGNaN /jum/426BqAcA7E2RM8gXgEzVuTVKoyhUvEcWGUeINTF8LJ1Xw3rRx+rMemD+6sD ZGXI8y4vfVJEoqKfWcf2yMxUcTd2Dyd5shg7BfwYmNRYAQkCEFU3GdKzRDP7PEhd MuRwfQ1OMn+rfQRCqv8FS2+ajYrIQ+bn45ySxCPjY/6CBiM7r08GIVYG1YkwPhE0 NvM1DKdVc9VCBSQtfoho9GU1obXzGspCFg== =EtzU -----END PGP MESSAGE----- Decrypted: Hello, how are you? Public key (used to encrypt): -----BEGIN PGP PUBLIC KEY BLOCK----- mQENBGPtR30BCACoJwAleHkqeOW46hGOZDLtJvfcT3IvBxDUO3mU5DFHhW317I9k cgXd532sxFq9G/Fzxj+qvv+2G7fuc3uOnsS7AOR+Gfja9A+AX/2ElJUSG3nzbdqV waA51W7xOhJnITXqFTLpKBku51siSPjdkifj6GWgJgMwnsBXpAK0sYiw20iC8vFi qpCVE3O9gc3Aodh8vPFpohRDCFK0+rnpUtnTR6XerVEalJBi+xq9+brGdtgKeRWk niUbNrie7FwufGL7NXgIJLDsRwjZxjJvxxeXn6CxUdjH+iEtIeWB6X/bbUmx0wKP 27L8D+KZz0s7APatWCuhdSMeAZHtABIfpGVrABEBAAG0G0ZyZWQgQmxvZ2dzIDxm cmVkQGhvbWUuY29tPokBUQQTAQgAOxYhBIKKl7g+vU12nGcwrp+Xp5DLaOGtBQJj 7Ud9AhsNBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEJ+Xp5DLaOGt854H /iboKDxjCPmezKao+lPpOLDa/cb5W4yYIhN3UjPEFLZlbqtXU8qBW3d59Tt7Hnsb 1lH/rx0f5jr5K2D+XMdkpAlXSSbAzTbF/A+lV6ibGcuDcOQCacHlV5ffoMOPaS07 OpNyzlFvQVUB2VmxX1xACB+lpMXWlyodsQu+QoR7HGJ0t+J39IEK58y52Z6vDUDs ckat4qrSk/yu14rXgKHaStlEnuNUeWItpNT3YAhyPjsf6mdtAFaxGagh45rIdDUj gnE4Stf1JAQ2r6jzI/OcCujAK2fr/fa0ZvugsSjVUYfSKPjrROY9VPO5uytJYVm+ XDvZ2uD7NKtSI9uUi3i8zYQ= =85ko -----END PGP PUBLIC KEY BLOCK----- Private key (used to decrypt): -----BEGIN PGP PRIVATE KEY BLOCK----- lQPGBGPtR30BCACoJwAleHkqeOW46hGOZDLtJvfcT3IvBxDUO3mU5DFHhW317I9k cgXd532sxFq9G/Fzxj+qvv+2G7fuc3uOnsS7AOR+Gfja9A+AX/2ElJUSG3nzbdqV waA51W7xOhJnITXqFTLpKBku51siSPjdkifj6GWgJgMwnsBXpAK0sYiw20iC8vFi qpCVE3O9gc3Aodh8vPFpohRDCFK0+rnpUtnTR6XerVEalJBi+xq9+brGdtgKeRWk niUbNrie7FwufGL7NXgIJLDsRwjZxjJvxxeXn6CxUdjH+iEtIeWB6X/bbUmx0wKP 27L8D+KZz0s7APatWCuhdSMeAZHtABIfpGVrABEBAAH+BwMC8hJXYHnwh8XKKLeB V/5IvvhcUQQVO+L3h8kWPWD175wKtI31TZd24jima+eQaRo1gzgh7u0Hzo2R9WKM Vevw668XTjPsX6GmYuge4+BPhyM/HGt74nmNnTG1ug/XqPY/X1LzhVM2tUSZEhpn jR3ZvMwjhbvxUuFtjGeP650UgWGRG59f/dKt8ZlgkGd3UcNUHKEuNdAe0MWC6Nr7 V5wBcVn/cBrizarNubSU3gPYqu8ptnJmXgYaZDLe7zLyeLrJyZXd4NzBXrtqwh+X +9WB8Nq+DeMzHd5QSborlSmWvG8xayEs8CDqGBLg9fV/WuYBuF8rs7fDtcbzHSRs JKwCMq4GuBWp27GlqfOgjrzw4uEiimStY92lrY3pejsUfcBUQchOwxJo20Is1hgt +D4fr+nLTz4kFn3KAslVx5EEtn0w0ET4ApKQYcY9HxdGeRlER4n5xNrarcnHmveo FDlQtqLkGkzYnD8lYDdOQ35Ht0ID3Sib/Auj38OwxWtulH3Kbdb1lmjmBtbJsbMf YnnAHQ55qlvnA3hrw9TPtUmZ03NAtV3rcLYBvFUevQbZklDuorveh9edrb5U5i0c PXnADD/TYQnAisIJHNMrkczDiIR4RnEXg58BARyaNp2fuiyrJJTGDRL+z/pt3ziC DGphiF9tKilC8HOVuVDwbKJlTvOXrEWtkZNz1jHBz8kli+QjtVlbcc6gsKQHURNJ L2Ip2KsJRuwMEDBFeMQiZSnmimJFggfWbMftLmIJAjbebjMNv9MiZRCFUz2Tw14U Ss0ji40tY38ZVo9/+BR5CIsQbAgM1PtpYS+I1gcooBwJ7r76V2sgXJ1hOIGkb8cl QhwJQHQXJKgqrHiyFK4sEBh9EbJ3PWw07eqjIUSGYrnBqbLE8iay/J1GYFjlczas xjxMEzHeAgcntBtGcmVkIEJsb2dncyA8ZnJlZEBob21lLmNvbT6JAVEEEwEIADsW IQSCipe4Pr1NdpxnMK6fl6eQy2jhrQUCY+1HfQIbDQULCQgHAgIiAgYVCgkICwIE FgIDAQIeBwIXgAAKCRCfl6eQy2jhrfOeB/4m6Cg8Ywj5nsymqPpT6Tiw2v3G+VuM mCITd1IzxBS2ZW6rV1PKgVt3efU7ex57G9ZR/68dH+Y6+Stg/lzHZKQJV0kmwM02 xfwPpVeomxnLg3DkAmnB5VeX36DDj2ktOzqTcs5Rb0FVAdlZsV9cQAgfpaTF1pcq HbELvkKEexxidLfid/SBCufMudmerw1A7HJGreKq0pP8rteK14Ch2krZRJ7jVHli LaTU92AIcj47H+pnbQBWsRmoIeOayHQ1I4JxOErX9SQENq+o8yPznArowCtn6/32 tGb7oLEo1VGH0ij460TmPVTzubsrSWFZvlw72drg+zSrUiPblIt4vM2E =uKEF -----END PGP PRIVATE KEY BLOCK----- Private key deleted: ok Public key deleted: ok
Along with RSA, we can use ElGamal encryption. In the following we use 1,024 bit ElGamal encryption:
Key ID: 564C560A5EF9FE3DF1CFF93F340A7C59C4256127 Type: elg-1024 Email: [email protected] Message: Hello, how are you? Encrypt: -----BEGIN PGP MESSAGE----- hQEOA7aAyFn1TsRNEAP/Z9mafT3V/0Wmqql0WBpyrmVvKbRJGeKQYxQtCMACjPiP PUUU0GceMaj4oLX+6JDVJNVBSoUXKg/fy6kX5k79qbtsKdfAV93AMRLEcgqk+sis dCNMpuFjBYBcy/CBRIgPOxCGr657BevTkrKjNVqrUCQYU7uZQlAfemxCk76TL/YE AIk/xG+VF+BlxGH9vT34K1p9PdDBgx6xm1DQTbmj820fmaYS6ijQ03on314X4geZ 0O+vvPmkPUm9Pzd8XmYc4irD+9Tm88kdHM7Y6yGYFc6TSSUAbxLIWCjp4HbWBPg6 qVWZe74mrEksa9eXs0Gokw99uXwd3ksEK5kszE3eiUda1FgBCQIQe3AQSVd378SV jOjaAKBo2v1CIuJwuntesEDK71SiCtM3cGL26gkGrjapplgA0jXj/ANLfSkph5tY kf9svxDNKSm6T/g28nHzSO3QZr1b3ymOvF9t =nSbD -----END PGP MESSAGE----- Decrypted: Hello, how are you? Public key (used to encrypt): -----BEGIN PGP PUBLIC KEY BLOCK----- mI0EY+3NtQEEALp2YB2RWWND/zH/FWeHM+Oqj332afsUH29CPMgKw7mGRBjHeSph U6GGj8br+l8SKz7IlkwjKdmCloq6wOiCYWGh7MAJVf1I7VdYV4MlNcCR5s6YqYcA ssZujpho8J9a+cspzUjcOvdHYZpf+vJ9G/FGbGEqFTzdpBzyKgadlGHdABEBAAG0 G0ZyZWQgQmxvZ2dzIDxmcmVkQGhvbWUuY29tPojRBBMBCAA7FiEEVkxWCl75/j3x z/k/NAp8WcQlYScFAmPtzbUCGw0FCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AA CgkQNAp8WcQlYSdFTQP/ZS4GhS5FlR5Su5czFJTtXgL6QE1T7G3YIswbQoybs0mB S3wlaoxuJAvWI4L0CStksPq0tTxOJPSILZDK5ODCIpZ231JwA8aNzZulwljSXl+3 ZQyxY0GBIkZEl1vTXArtVddw/Prf5twrEW4+9hGOiHVW1FAwZlxsD+JGa7H/oTO5 AQ0EY+3NtRAEAKVfhXlhKk9JYr/KH6spM1cyqCboSoSdgdFXSSqIYH3KHehecV4u 9Edmb0ObGJA3qZE/9GXEShp4wg0ixQBVYdoBPpQ5VCd+Add5oYoKS9YuOXTsJk4P 7fB6Fe+/ITej1EyFTAnCR2FANXLqzlvfsiiSYp5F9QEHDAUa7m1K0J5HAAQLA/9B muDTYuG+lWlqkw/8fz7hYXVNn71VhrXv9LM3hNa0Pd3gxmmiufchyh8+MhXaso5L Wu0AKHB2jwwLPmKoLXhWLOaAQhUrZVNTzjzkXsvZM3eeIsU/EK2B/wDxQqTTt4xe Wn8ZjyXKv6n03vK59F//RZTTqxv4TPwtoSwcJaLMsYi2BBgBCAAgFiEEVkxWCl75 /j3xz/k/NAp8WcQlYScFAmPtzbUCGwwACgkQNAp8WcQlYSeOrgP/f7lbxLNMeqCx vBBqpuImQvBK6PlbrDoKYshNlrm0vC27w/c92Gl/IzPaHI0gNrLGEfe7REFLhDFk wn6qX49GSlBQYSkNlyrseCGeQN7NgoedYQSHVACu/k6soj9ROe1aD76dnvqZT2Ff EKzTLT3aNp5yvakX9Qhrix0wFvT6zLk= =OvBs -----END PGP PUBLIC KEY BLOCK----- Private key (used to decrypt): -----BEGIN PGP PRIVATE KEY BLOCK----- lQIGBGPtzbUBBAC6dmAdkVljQ/8x/xVnhzPjqo999mn7FB9vQjzICsO5hkQYx3kq YVOhho/G6/pfEis+yJZMIynZgpaKusDogmFhoezACVX9SO1XWFeDJTXAkebOmKmH ALLGbo6YaPCfWvnLKc1I3Dr3R2GaX/ryfRvxRmxhKhU83aQc8ioGnZRh3QARAQAB /gcDAm6cjdqc3rETylAbIDTtdJ/UVW4btDVqvQh/ul2HtimKvkZL5BQdet1A7ltr KW83IKHR6b6NwInJjgvGP6QjUXrr+Wg5tybOn0BGA5fA8CTnxr4d2ju86mHv+5+a h3wnhIOmVr87Q1C3PXD7z9eK/JYON5NS0vW2Ia+CLPpzkSYAuIVxxKkmHPbI4O7a ryzHjIllZIh+irMht5rC9DMFcstXGChXeMmV/1duPJV2GDODHDB58bd1uKjz0FQY 2dq182tRwrY2ruCLSeKASz+jDory7bgdzyc4HXMfnUATC9++KE4u7fqSUKbCnKv+ kqhzbelvMdXXDTW3LzOKDxBVnbAZ9j11n76o9HWu5nvx44WEqzpSkQ6yQ+wr9T3R ZT1Mno+f9mq6O+2FrIvs6qo0usqyKQiuIIvaESLKquDNR4mUVZM4C/D964vFAas6 VGwc0nGsPxhHMxZt3AwxBcq5cWd6K6uivqPYzt9hWlcjhqVTrN2zCiO0G0ZyZWQg QmxvZ2dzIDxmcmVkQGhvbWUuY29tPojRBBMBCAA7FiEEVkxWCl75/j3xz/k/NAp8 WcQlYScFAmPtzbUCGw0FCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQNAp8 WcQlYSdFTQP/ZS4GhS5FlR5Su5czFJTtXgL6QE1T7G3YIswbQoybs0mBS3wlaoxu JAvWI4L0CStksPq0tTxOJPSILZDK5ODCIpZ231JwA8aNzZulwljSXl+3ZQyxY0GB IkZEl1vTXArtVddw/Prf5twrEW4+9hGOiHVW1FAwZlxsD+JGa7H/oTOdAWAEY+3N tRAEAKVfhXlhKk9JYr/KH6spM1cyqCboSoSdgdFXSSqIYH3KHehecV4u9Edmb0Ob GJA3qZE/9GXEShp4wg0ixQBVYdoBPpQ5VCd+Add5oYoKS9YuOXTsJk4P7fB6Fe+/ ITej1EyFTAnCR2FANXLqzlvfsiiSYp5F9QEHDAUa7m1K0J5HAAQLA/9BmuDTYuG+ lWlqkw/8fz7hYXVNn71VhrXv9LM3hNa0Pd3gxmmiufchyh8+MhXaso5LWu0AKHB2 jwwLPmKoLXhWLOaAQhUrZVNTzjzkXsvZM3eeIsU/EK2B/wDxQqTTt4xeWn8ZjyXK v6n03vK59F//RZTTqxv4TPwtoSwcJaLMsf4HAwKDzLq48fc1HsryHRlr0Ita0obq M95qx2ogtFurfnVwnPjEITXbkGeKKNe84iR2cWrEcINQuam9mQ7WUBPHUpWwTaxD ZkTfC3gmlsTKhkSJiLYEGAEIACAWIQRWTFYKXvn+PfHP+T80CnxZxCVhJwUCY+3N tQIbDAAKCRA0CnxZxCVhJ46uA/9/uVvEs0x6oLG8EGqm4iZC8Ero+VusOgpiyE2W ubS8LbvD9z3YaX8jM9ocjSA2ssYR97tEQUuEMWTCfqpfj0ZKUFBhKQ2XKux4IZ5A 3s2Ch51hBIdUAK7+TqyiP1E57VoPvp2e+plPYV8QrNMtPdo2nnK9qRf1CGuLHTAW 9PrMuQ== =lvMk -----END PGP PRIVATE KEY BLOCK----- Private key deleted: ok Public key deleted: ok