passforios/passKitTests/Testbase/TestPGPKeys.swift

725 lines
37 KiB
Swift
Raw Normal View History

//
// TestPGPKeys.swift
// passKitTests
//
// Created by Yishi Lin on 2019/7/17.
// Copyright © 2019 Bob Sun. All rights reserved.
//
import XCTest
@testable import passKit
2020-04-19 15:43:13 +02:00
struct PGPTestSet {
fileprivate static var ALL_TEST_SETS: [String: PGPTestSet] = [:] // swiftlint:disable:this strict_fileprivate
2020-04-19 15:43:13 +02:00
let publicKey: String
let privateKey: String
let fingerprint: String
2020-04-13 21:06:19 -07:00
let passphrase: String
2020-04-19 15:43:13 +02:00
fileprivate func collect() -> Self { // swiftlint:disable:this strict_fileprivate
2020-04-19 15:43:13 +02:00
Self.ALL_TEST_SETS[fingerprint] = self
return self
}
}
2020-04-19 15:43:13 +02:00
struct MultiKeyPGPTestSet {
let publicKeys: String
let privateKeys: String
let fingerprints: [String]
let passphrases: [String]
}
2020-04-19 15:43:13 +02:00
let RSA2048 = PGPTestSet(
publicKey: PGP_RSA2048_PUBLIC_KEY,
privateKey: PGP_RSA2048_PRIVATE_KEY,
2020-04-13 21:06:19 -07:00
fingerprint: "a1024dae",
passphrase: "passforios"
2020-04-19 15:43:13 +02:00
).collect()
2020-04-19 15:43:13 +02:00
let RSA2048_SUB = PGPTestSet(
publicKey: PGP_RSA2048_PUBLIC_KEY,
privateKey: PGP_RSA2048_PRIVATE_SUBKEY,
2020-04-13 21:06:19 -07:00
fingerprint: "a1024dae",
passphrase: "passforios"
)
let RSA3072_NO_PASSPHRASE = PGPTestSet(
publicKey: PGP_RSA3072_PUBLIC_KEY_NO_PASSPHRASE,
privateKey: PGP_RSA3072_PRIVATE_KEY_NO_PASSPHRASE,
fingerprint: "be0f9402",
passphrase: ""
)
2020-04-19 15:43:13 +02:00
let RSA4096 = PGPTestSet(
2020-04-11 23:23:38 -07:00
publicKey: PGP_RSA4096_PUBLIC_KEY,
privateKey: PGP_RSA4096_PRIVATE_KEY,
2020-04-13 21:06:19 -07:00
fingerprint: "d862027e",
passphrase: "passforios"
2020-04-19 15:43:13 +02:00
).collect()
2020-04-11 23:23:38 -07:00
2020-04-19 15:43:13 +02:00
let RSA4096_SUB = PGPTestSet(
2020-04-12 19:32:58 -07:00
publicKey: PGP_RSA4096_PUBLIC_KEY,
privateKey: PGP_RSA4096_PRIVATE_SUBKEY,
2020-04-13 21:06:19 -07:00
fingerprint: "d862027e",
passphrase: "passforios"
2020-04-12 19:32:58 -07:00
)
2020-04-19 15:43:13 +02:00
let ED25519 = PGPTestSet(
publicKey: PGP_ED25519_PUBLIC_KEY,
privateKey: PGP_ED25519_PRIVATE_KEY,
2020-04-13 21:06:19 -07:00
fingerprint: "e9444483",
passphrase: "passforios"
2020-04-19 15:43:13 +02:00
).collect()
2020-04-19 15:43:13 +02:00
let ED25519_SUB = PGPTestSet(
publicKey: PGP_ED25519_PUBLIC_KEY,
privateKey: PGP_ED25519_PRIVATE_SUBKEY,
2020-04-13 21:06:19 -07:00
fingerprint: "e9444483",
passphrase: "passforios"
)
2020-04-19 15:43:13 +02:00
let NISTP384 = PGPTestSet(
2020-04-13 21:06:19 -07:00
publicKey: PGP_NISTP384_PUBLIC_KEY,
privateKey: PGP_NISTP384_PRIVATE_KEY,
fingerprint: "5af3c085",
passphrase: "soirofssap"
2020-04-19 15:43:13 +02:00
).collect()
2020-04-13 21:06:19 -07:00
let RSA2048_RSA4096 = MultiKeyPGPTestSet(
2020-04-19 15:43:13 +02:00
publicKeys: PGP_RSA2048_PUBLIC_KEY | PGP_RSA4096_PUBLIC_KEY,
privateKeys: PGP_RSA2048_PRIVATE_KEY | PGP_RSA4096_PRIVATE_KEY,
fingerprints: ["a1024dae", "d862027e"],
passphrases: ["passforios", "passforios"]
)
let ED25519_NISTP384 = MultiKeyPGPTestSet(
2020-04-19 15:43:13 +02:00
publicKeys: PGP_ED25519_PUBLIC_KEY | PGP_NISTP384_PUBLIC_KEY,
privateKeys: PGP_ED25519_PRIVATE_KEY | PGP_NISTP384_PRIVATE_KEY,
fingerprints: ["e9444483", "5af3c085"],
passphrases: ["passforios", "soirofssap"]
2020-04-13 21:06:19 -07:00
)
func requestPGPKeyPassphrase(keyID: String) -> String {
let id = keyID.suffix(8).lowercased()
2020-04-19 15:43:13 +02:00
return PGPTestSet.ALL_TEST_SETS[id]?.passphrase ?? "passforios"
}
let PGP_RSA2048_PUBLIC_KEY = """
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBF0uBLkBCADGYAW5yJQ/lLHmHdb/l0bhYyLnhuyWTaOWIEHGiDnpjO71vBPD
WMPxPulj/GGdqzR4lUUanPG1yJwXTjNutjMBZ/o+ixgdqja391b4L8VyF5Lb7pHX
c6uvbR6p1Tj72PJrVj6Ev71VdnsHNOLUDqWZL4b0dNXPf3sM4ry5yS6Ej6ho9o/l
nuYbe9WfLqUctSM+TsXd84ptc6luIHZN+cojrNGAh3RLYuVFeJjkLkvHdJBWJQS2
zJ0iAA6T0NbfPGrVL6tMaB7NwMDN33Ql3ARfaHf7/d8DXGYyGUYZFqyKagGUaBxN
arXfzv9gIyc109D8pPMN5QUiEo9K4x3xNpLhABEBAAG0KnBhc3Nmb3Jpb3MgPGRl
dmVsb3BlckBwYXNzZm9yaW9zLm1zc3VuLm1lPokBTgQTAQgAOAIbAwULCQgHAgYV
CgkICwIEFgIDAQIeAQIXgBYhBEcSKGJxIg2ymYg+pwYuZ42hAk2uBQJdLgWNAAoJ
EAYuZ42hAk2uYjIH/iPsoJD+KfJ/c7GTSLbeMtQtuIv2sCiSc+BiXp+EFjbNS7oS
cEYiG/FX1zuivr3wvDGbE/oVLvdTK8tDJvCh17SZZUGeTmflgByig+1/kp5JUj2x
FOH3xXCVCnh+FWB24QHLiFpwgzGuZgCKMn45PcZB7Zmo/wJsKYb040zKltQWmzg8
rZ1vOKlMgAGgdNQOu+u+8OE6x/dedYvJZePvwND4Rva+EwS+MaEZZAn76ypEblhF
pRZsTb6+PeTY+IWRnne7xUvYRmZLXhqoHq/c0hXXz2xAGmpigd50HUQRUOYtsuBi
RxXLwFIlfPpziomMTdhnOFVDL6UVLL+jqJDPHWu5AQ0EXS4EuQEIAMwr3I+NUsY+
Iwyyz6C84z90kHPs9zOBvGc73Tgc70lXHUklwQaqLSmLbHQzk6Ykw/o1snQ8Oz2f
AjPlBr9/zWJgOvnFH+FrjpfEpmz4WjmoxBK610JINkKW4Fn4VT/NrBL9LtjaZOLp
0XA6fh8TXTOsz80jDj1VPvNAsu78FC+zXFDvOJpX+bCv3vabO9/ihKL/emvgqzxD
LO9IapPfL1rPvCmfaNZ8hRV8ebHOW0pVLfyOYn4pvwtL/uYIINv1CYAwOGVW1sth
8kS8Acj4VTDkynuobxiLDTpNrRUbt0iPn/2nJ8m1qq9hqWgO2z01UkSKrusDiMNH
2021-08-15 00:46:45 -07:00
TnHFepgG8NMAEQEAAYkBNgQYAQgAIAIbDBYhBEcSKGJxIg2ymYg+pwYuZ42hAk2u
BQJhGMLoAAoJEAYuZ42hAk2u7k4IAJvwGq9HR3+rDme6Vd15z4G5MNmKRSDe778q
JneGB3xYbQi8hRDAgAgmWZx/6yniYLiQSkkLSSphcFTOYIZi4RntieNEXvsQ4h90
IhD0RWaxjitG13tCHPQK8Eg2twQVt49Ogp8X7EiLd0S2yfP9feqIvnSraKo7/4W6
hboHRNvcvPrrX7aLU/dPefPjAjQT/jRlb/0IP97Y4KWcJSGVuOySm/bg9pssiPS9
hbxUO8yfvse3wnMOic390C1KXRArtS1FkDo61a9tlM/2DLmMm21SfSHVSKWxNDrr
a8RjXjHHUovORm1GQ9FFifyWx5/0YvfeT8H1GWI1xkSiJLnW4zc=
=WeRn
-----END PGP PUBLIC KEY BLOCK-----
"""
let PGP_RSA2048_PRIVATE_KEY = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
lQPGBF0uBLkBCADGYAW5yJQ/lLHmHdb/l0bhYyLnhuyWTaOWIEHGiDnpjO71vBPD
WMPxPulj/GGdqzR4lUUanPG1yJwXTjNutjMBZ/o+ixgdqja391b4L8VyF5Lb7pHX
c6uvbR6p1Tj72PJrVj6Ev71VdnsHNOLUDqWZL4b0dNXPf3sM4ry5yS6Ej6ho9o/l
nuYbe9WfLqUctSM+TsXd84ptc6luIHZN+cojrNGAh3RLYuVFeJjkLkvHdJBWJQS2
zJ0iAA6T0NbfPGrVL6tMaB7NwMDN33Ql3ARfaHf7/d8DXGYyGUYZFqyKagGUaBxN
2021-08-15 00:46:45 -07:00
arXfzv9gIyc109D8pPMN5QUiEo9K4x3xNpLhABEBAAH+BwMC85DkKWoBWtf0LmJd
XtTiUB+RzInyBa4dGHtFKUKO0O1o7jlJ43fiMeJYhVjRK986FG84PkhLq0K8oFN3
7gRcz57jC1iUmz5hTK7nIK903GT+PV2nFBvo+TfT83Y4PR3tDfBvkmYVBDPaVVoW
4YOJYoA2eZlHy8fb4d7O/X/NWp0jmywhaGNVbrn0qe6+paqqSsj4smhapZ2WEQfU
N4k2Sb40UBe4ndk4UW9jtykcdD68L7XKXlg/Ff2iVv6PFSpQrKDEB5J5S9jR5O0/
ABXkh7v+GpXZFtCDMo9Cayw+IObBiycpte7i3KMQ/YvRh0NnOA/hf6g04ZPALChF
ddzQzgMm4NRJzbNUnqDL+6AKG5A+qzTfXj9qr94PAMAldiL5YAKSZKkz5QSrbkfU
LPh/JR2FAaFbP19p2feI6DZrQCw9ATDL+scefMmAiCSz5M0v7KCkW4YS/j7bk2xd
ySSSbmoyp5pVRlIZANo3clYO3r+BbBmsaZE5Y+c7V7WhWzHZIoA0wT15LGsAtpQE
iI8pjJyT++cAz7rYSq06gH9WtYMZbx6EFhyS+yPRyEr9Q+euRRlkpyDvNdjR5DzM
BvrgBot3x46GPWi0N557gGYaLiYgbIOFMyoLB3YkacjXkf1HDrBbzTaF8bgsewEo
KmovX5Bm4+LrCFKqsls43g3+ygdaB/fS+kIdZSBespyCj+AImyJiEcBjVfqu/eNP
MxjN/L3BMl1kTULop3eIWx+s5lcyeENEKVf985eGPbpC7navj5joq4k7YpWFJLQo
xR1KEn+wpNmyU86namFbaE/9FsbDUgFrkoq0y3NnsJp9j3azuYWFmbPFFmauGwuS
e/O7+C8z4CUnqq/GODMccoOy4sDJnqT1T20r5blgepR0wSss5fROWj+OxXtTrU8i
21ACoaN4N/IVtCpwYXNzZm9yaW9zIDxkZXZlbG9wZXJAcGFzc2Zvcmlvcy5tc3N1
bi5tZT6JAU4EEwEIADgCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRHEihi
cSINspmIPqcGLmeNoQJNrgUCXS4FjQAKCRAGLmeNoQJNrmIyB/4j7KCQ/inyf3Ox
k0i23jLULbiL9rAoknPgYl6fhBY2zUu6EnBGIhvxV9c7or698LwxmxP6FS73UyvL
Qybwode0mWVBnk5n5YAcooPtf5KeSVI9sRTh98VwlQp4fhVgduEBy4hacIMxrmYA
ijJ+OT3GQe2ZqP8CbCmG9ONMypbUFps4PK2dbzipTIABoHTUDrvrvvDhOsf3XnWL
yWXj78DQ+Eb2vhMEvjGhGWQJ++sqRG5YRaUWbE2+vj3k2PiFkZ53u8VL2EZmS14a
qB6v3NIV189sQBpqYoHedB1EEVDmLbLgYkcVy8BSJXz6c4qJjE3YZzhVQy+lFSy/
o6iQzx1rnQPGBF0uBLkBCADMK9yPjVLGPiMMss+gvOM/dJBz7PczgbxnO904HO9J
Vx1JJcEGqi0pi2x0M5OmJMP6NbJ0PDs9nwIz5Qa/f81iYDr5xR/ha46XxKZs+Fo5
qMQSutdCSDZCluBZ+FU/zawS/S7Y2mTi6dFwOn4fE10zrM/NIw49VT7zQLLu/BQv
s1xQ7ziaV/mwr972mzvf4oSi/3pr4Ks8QyzvSGqT3y9az7wpn2jWfIUVfHmxzltK
VS38jmJ+Kb8LS/7mCCDb9QmAMDhlVtbLYfJEvAHI+FUw5Mp7qG8Yiw06Ta0VG7dI
2021-08-15 00:46:45 -07:00
j5/9pyfJtaqvYaloDts9NVJEiq7rA4jDR05xxXqYBvDTABEBAAH+BwMCR5GOhcI7
ROj0wr/+TnsjXHci6b9pXr3Uj4TiraqhKVQb3UefmqTyZ+D+nJIEKPmkCCzj9eXq
5bGH9zVPZsn6o06QHm5KSGcB4PDqoSbtOhaum1XO1u4a3z6hzHT15TfL2kA7idgT
zmF4AZK/issLsjtptIxpnjTfflJoDDu3GaJa1X7+H4x6oALxVBQ8SFSWqC2OnaiG
cLL5k0Y77Dq+3ow3HoVSFKEkt7rIPgWYKa6Xw8oASy0raxPZTMYlvbYh1eSDvm4R
D1DPH1Umq75uZAiP7v1E+f4d/660YNeZV6qSTsCgsPde8qPdAQWbMzvtFesSpJwX
zrhhBWd5nJU1AFX6kQ53IfCNpwmWRxjUQUEH09/jQvscufu13SAL4WbYFzUzLfFC
KdQCJuDyAW7YPLEyvM5V/HQkH9sRPqHeUfG/gR5dix7zY2FFxYCLZy+yCVdPwraq
i77Vw0wNg07A21qBKscBnZHQhKUEuRPkm36h9NaaMABTxEsTf4vingO6boEkv5TL
/ZtSEjaP1yxKEOnYqt46YcfhQNMeVe6jmMZPCXIi5adExvOTZmJnQJ+TKHmS9HlE
X5rBe8R0xbDelWhDgF0EpEsvEST3jbDW8QMEW36tWwxIAu5ia2m8sVTqznTwnKbW
JKjcV1+Xyje42ihGj8bOctt+kiPfshDzwKpt50UPotvgcWTuRaA4iFT2eTaMj2CT
bQLj9/Ol67kmN4m/IANpPaXQGffn1aL/H9v4UyH7yUWotBhJIBCjOxGS3RxbHVAA
LWZ2foswXoDTRgO/kFHLgp5O+KHMW3OGNvsIym2BwI+X+XSZwZaWPwESIrxMHStf
i/1EBPvaPjoFLuS01FJQPxmB1bZIjygmmdkT+kf3chMsOQWCDxFEcwz28rhkB6Qh
Ye7SK1cHD+jkISRn414hiQE2BBgBCAAgAhsMFiEERxIoYnEiDbKZiD6nBi5njaEC
Ta4FAmEYwugACgkQBi5njaECTa7uTggAm/Aar0dHf6sOZ7pV3XnPgbkw2YpFIN7v
vyomd4YHfFhtCLyFEMCACCZZnH/rKeJguJBKSQtJKmFwVM5ghmLhGe2J40Re+xDi
H3QiEPRFZrGOK0bXe0Ic9ArwSDa3BBW3j06CnxfsSIt3RLbJ8/196oi+dKtoqjv/
hbqFugdE29y8+utftotT90958+MCNBP+NGVv/Qg/3tjgpZwlIZW47JKb9uD2myyI
9L2FvFQ7zJ++x7fCcw6Jzf3QLUpdECu1LUWQOjrVr22Uz/YMuYybbVJ9IdVIpbE0
OutrxGNeMcdSi85GbUZD0UWJ/JbHn/Ri995PwfUZYjXGRKIkudbjNw==
=4jcx
-----END PGP PRIVATE KEY BLOCK-----
"""
let PGP_RSA2048_PRIVATE_SUBKEY = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
lQEVBF0uBLkBCADGYAW5yJQ/lLHmHdb/l0bhYyLnhuyWTaOWIEHGiDnpjO71vBPD
WMPxPulj/GGdqzR4lUUanPG1yJwXTjNutjMBZ/o+ixgdqja391b4L8VyF5Lb7pHX
c6uvbR6p1Tj72PJrVj6Ev71VdnsHNOLUDqWZL4b0dNXPf3sM4ry5yS6Ej6ho9o/l
nuYbe9WfLqUctSM+TsXd84ptc6luIHZN+cojrNGAh3RLYuVFeJjkLkvHdJBWJQS2
zJ0iAA6T0NbfPGrVL6tMaB7NwMDN33Ql3ARfaHf7/d8DXGYyGUYZFqyKagGUaBxN
arXfzv9gIyc109D8pPMN5QUiEo9K4x3xNpLhABEBAAH/AGUAR05VAbQqcGFzc2Zv
cmlvcyA8ZGV2ZWxvcGVyQHBhc3Nmb3Jpb3MubXNzdW4ubWU+iQFOBBMBCAA4AhsD
BQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEERxIoYnEiDbKZiD6nBi5njaECTa4F
Al0uBY0ACgkQBi5njaECTa5iMgf+I+ygkP4p8n9zsZNItt4y1C24i/awKJJz4GJe
n4QWNs1LuhJwRiIb8VfXO6K+vfC8MZsT+hUu91Mry0Mm8KHXtJllQZ5OZ+WAHKKD
7X+SnklSPbEU4ffFcJUKeH4VYHbhAcuIWnCDMa5mAIoyfjk9xkHtmaj/AmwphvTj
TMqW1BabODytnW84qUyAAaB01A67677w4TrH9151i8ll4+/A0PhG9r4TBL4xoRlk
CfvrKkRuWEWlFmxNvr495Nj4hZGed7vFS9hGZkteGqger9zSFdfPbEAaamKB3nQd
RBFQ5i2y4GJHFcvAUiV8+nOKiYxN2Gc4VUMvpRUsv6OokM8da50DxgRdLgS5AQgA
zCvcj41Sxj4jDLLPoLzjP3SQc+z3M4G8ZzvdOBzvSVcdSSXBBqotKYtsdDOTpiTD
+jWydDw7PZ8CM+UGv3/NYmA6+cUf4WuOl8SmbPhaOajEErrXQkg2QpbgWfhVP82s
Ev0u2Npk4unRcDp+HxNdM6zPzSMOPVU+80Cy7vwUL7NcUO84mlf5sK/e9ps73+KE
ov96a+CrPEMs70hqk98vWs+8KZ9o1nyFFXx5sc5bSlUt/I5ifim/C0v+5ggg2/UJ
gDA4ZVbWy2HyRLwByPhVMOTKe6hvGIsNOk2tFRu3SI+f/acnybWqr2GpaA7bPTVS
2021-08-15 00:46:45 -07:00
RIqu6wOIw0dOccV6mAbw0wARAQAB/gcDAmtaUxdn6/1d9C0fqcKXxn6KaYTStFBh
GFAUEFb8dlM79K6s2a1fA9EOProYYlI6Bxr1dNU2VmpThSlA87Zjx+WkvShybuLB
Q+wL2omGNDitWhn/sx26yeXrUrP6VXd8VL3XkxqlOHLefvf6waGDBEI0mW1k4FHC
UffDI2QG5XB08bKHx8u9OGw4EIz/OxFdaC6ibGPvkmkh+5bP6FXkn0NRnfEImKcl
zygHpidPI23RbrFh0cnbIyWGBFG1L87zG/xxaXfnWqCwQVcxZdmEYOOZOH44RUPW
JFhAxBuH+5+/ddQDv0MbRstSG6Ai9OwWwmjYOutZHd5fxl9kZZWxDwoBKqAiUdJu
fF47o96KIjblknI0QfvXMNn731tpUJxzRUvzvzE04RBI4YJn9RHn1Kggj/UaJtVP
YQT9/FkqtcOMy0k6CN8VQXmQ5HaPgs36l8WhCaxT8AR28gMlHB/n2LZN+CMr2OB8
kJM44UgTA3ax6qoPTLPkUqLDYAPF9OTJFnBE8Xmah/wEN3HRCcC3yZTmZhhsmHDs
N7gpv92AggGRtGiiNrYR4w4Q73YVYqTZPX/5seejuZQcUOZTpeQ75eAdN55kdVtm
l55hRgxk7LnuCLj4ys1YbT5ClOzH8WSyEquJM4dhtH/x9DKBPOgiDO4R8NryARdd
e1wm/1f8HdpZ9GxRtyKoDaoEIIilcv0lCUb7OmI3wYgLmTru8nY0mYO7crKc5Tqj
pZWGw9hrnQDa3tO5p9bqj8K3/f0VTilHa+PUjPX34XuciRfheUQBXfuhJWCNqFI7
wUi2DWuBTLmNvTWWKqOwSCijngYTAExoXwVVzKzp0bZIqUoqiyFNAdDvTihOx3ox
07KgoO4eF7OJwmUvc0WXOo1fDPpCn/Obgqim8V4KEGTEKlU+TOQBvCspSBBH0okB
NgQYAQgAIAIbDBYhBEcSKGJxIg2ymYg+pwYuZ42hAk2uBQJhGMLoAAoJEAYuZ42h
Ak2u7k4IAJvwGq9HR3+rDme6Vd15z4G5MNmKRSDe778qJneGB3xYbQi8hRDAgAgm
WZx/6yniYLiQSkkLSSphcFTOYIZi4RntieNEXvsQ4h90IhD0RWaxjitG13tCHPQK
8Eg2twQVt49Ogp8X7EiLd0S2yfP9feqIvnSraKo7/4W6hboHRNvcvPrrX7aLU/dP
efPjAjQT/jRlb/0IP97Y4KWcJSGVuOySm/bg9pssiPS9hbxUO8yfvse3wnMOic39
0C1KXRArtS1FkDo61a9tlM/2DLmMm21SfSHVSKWxNDrra8RjXjHHUovORm1GQ9FF
ifyWx5/0YvfeT8H1GWI1xkSiJLnW4zc=
=Gxx5
-----END PGP PRIVATE KEY BLOCK-----
"""
let PGP_RSA3072_PUBLIC_KEY_NO_PASSPHRASE = """
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
dsDN96T3b3dNsR/uHBUhQKv54B58lQ==
=w+7J
-----END PGP PUBLIC KEY BLOCK-----
"""
let PGP_RSA3072_PRIVATE_KEY_NO_PASSPHRASE = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
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
=/IMN
-----END PGP PRIVATE KEY BLOCK-----
"""
2020-04-11 23:23:38 -07:00
let PGP_RSA4096_PUBLIC_KEY = """
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
ERIDrUdG
=N0dj
-----END PGP PUBLIC KEY BLOCK-----
"""
let PGP_RSA4096_PRIVATE_KEY = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
lQdGBF6SL3wBEACw85Gzn3qbldFHEfAD8W0jYTOMJ8D4Fy0Q3o/FYMU50Qllaiwa
vGRRbpgTEE2U0/uhlqPIHICUNBAzCHPxvgSD/suv0sMqeccdumgJ+V5wfF4AaO85
vTrYujOragKjhf+ZOvO8IlvpFBm9XXOF0wll1yicKVkdflq7GSMN9FC+VCDL/V9k
mN9m9L4VfYhRC9gPd7e7338E+CuPDs+B58uWwmtxB1Gtziv+8PdTPhQCFQlcz4p0
HTnxr+87H/6RPfyOXjquZnNuItigAvYkhiBIVIVrimxxdf1NcosM1A1Z+Q2+LNZ5
6a9FWdyZfyPb6HT4inqqSsGx/7xaf4ebOFTiAOs+YChKkgztkGkDSnmc0yfTtYJ2
bT+in8C0WL/IODlrZKqQ8UmJRSzl1r2I+BvgqtzEhYHE/WluWGjbLEQBQ6zr9fng
rR5FFsY9ej91y1WIDu9cE2c/mGyMMrezw89fmFc7JlmoLmxNe7b0c3qPRu5kn2jb
7Y2Ra7P4OvLpKBcGvMXLhkTPP83962cx9649bB7oTzfyaFCYgSKKKgLAPBjxGl5a
q3sX4MEI/927sJULgJdZnXKo6J35Ik0ZXk/ttqPOy0O5YXCciAzoOHjds3DJQjsa
opcpbbJS1L7MG73JQvzsxCuymbRaAslyd8Op1IUFBrDP9mfNtJDW230SxwARAQAB
/gcDAkGV5x461pgp5sV+5O+qSOzWBboUd9CTsXWqdAQ8uUgxEJU5vp+uLNbTiF7Q
wgNQf1N4U8Ar6TlslNGE+8PYzWeu+peq4Kz/LIvYboPXt/mEcmjhKuQ04uBpxEko
pSKBhLO814Jsa11YOX4iYCA3zoTvutdtPSvWu7fvRiUamA1CVmTwjjyddi3Nbnnu
d0umtcd7foZ4xZflYPriB0JGOIjn+j8vzCKgrl5j6TimeETqgFqgfA+1IbBNLqVe
M5SFICG3Fr7se44IEM/HBT31U2J3dqFQGqP0m9n/vs5cEIRfRTfhwBmRf2Ryda0V
LpVQi+eKebRz99DqHY9v83whBaeAYICdVonwPX7+FTPB7fmXZQzDp2zOevKiNkKp
cVElllDKzFvVsNZ5TgSwvMCVi3z24F0ncuTWyECCtkYokWcN1drwr74Ws/uNpMxh
xi2MlUeHySDnxSaCe6YrvCyErmF8BAEKDKATXNDn4bhghu+RdX1oo+9mXA2cUIE/
S3ho+ioKZD2TwGy38vXEGe7CbvmyMa5vPnorUNaELiSWiKzUEr65uG0UX2x2ghCo
l3JcmmnSiQZXtB3rph8kQAE2oL+nEhvNb35McmYMnd4hTPQtq/mLA8IByhK9UVMS
YJo0EaPxkRgdtEKHvy1ZgiEnUT84gXhAXu4sZrn/85ViuIZahNo7/rX2YLSHPhk9
hrv5d0S4KqsoJX4z7FqKxmQTkR1KiqqVSrIyEYIFoySFARbiFx9ALPquGmUow9MX
Qi+iTCAAk09q4ivTujeTOOJmgQHGf/4+D27MmvbLi3nyc0qpkzbRwhFN9vD5qNpQ
XShtB7ppdm3dj5UEl4H1s+h4aobDrREqw/pvDdjt2vOIBb8xNldYO616iNtr65px
4p+S5oV6KIIfl7IyZM+6S9RzmwSZVn88QnY6vIPHCQJiILD9dDM5At/rhl4GnBYB
UOlZyebf9WsYXQ5AbmRdEqNBoM9JgVEuZDcAF909C6SWAZGll/9qoWnXfs3Fc4jP
SrbqKWQQysCZPA5hwMRg6iCQm6ijUSZgDN5t/iJpNQoIti21kTtB231JQ8BNDmRd
OmFlQuC9Woa7xcgd/Ie+UmaRBo/qvMEJovLkqzSMWkWfyOB6ZuIltdTnbkyFCNF0
sQ2TXpYS0wg2+quntsq6eXNc3mLGjitXcMfl2M1QCC/LvTBWuaSogzyeprJHr8ju
nN8JizzLHE5NhDtTEo5oyZ7dCDiRKjw9/dno7hJ0EBKLKNOiF9J9iJ+r29xplomX
Js4j0IZeMJ7QEMN39mgW9sEmvXiik7pMV1ax09Y8AeUeKPCv9zc+mLdfEry9sKRw
JWxHbmhOzVvlnBWHtI3EC0bLJ9cpdBJksC4vhEQzq5MeauAkthIAh2ByN3Ztecx+
sjOAs6TdMadamgEiQOfR/qrIOJ/AdS6fz3mXmFQsxyk4XUZ6rtjc/TIb+ecJSpDl
FE7BQY//qWQbHQZFO4ZU7RdK5RN4itJyWGAxghuQa8JiCLmR8loreArr/HdRpexH
JtG8bLOSg88NBTrk92Fc4EaUMhsyDm99+ELeprJGNN8nTXVMMAQwL/hVy4Ycn6cI
28XxXtHzVqHLYv3e0ZJOvEFJBzbPVyteGITWX+6tmSAonJl7cOd87/1CyuVR19Gz
47z2wjFX6y7okvEsYDfFUJ5vr8F1gLYlvKamJoKulZLvdEeoi9088i3ScQ7Nq0CH
JyV6qvgs5pXN8qvP5Y4oUiqmeBBv+Lxiv00MC5UfhwqRMtaoqtSP4xu0KnBhc3Nm
b3Jpb3MgPGRldmVsb3BlckBwYXNzZm9yaW9zLm1zc3VuLm1lPokCTgQTAQgAOBYh
BHh+rhpfo+dJqjTMaqBkXr7YYgJ+BQJeki98AhsDBQsJCAcCBhUKCQgLAgQWAgMB
Ah4BAheAAAoJEKBkXr7YYgJ+P94P/2vn/WM6ekhqOso9Z2SMqf46Y7taq+TEoBxS
jkLIT6al9cS4I3UxeRZ9X6jE1WW/im+sSJ67bUunGbd5O2e9I+c+ora4LG21ZLlt
iKh9BkcXNGy6oEy6h7Hc42ga8G9rHUe8/jNIr84IYtOz2qiEDjY/lYkRpfiCWiuk
zhGLoT/DDtCdG2v0760znKTifB9A39aR1tCGg2A2l1K0jRMxFSSNw0wgktyXxX9r
HvQHD7kpvuqis78BQ4wYzlbw69aam22jkvtyKvc7GQBMz/Ll/y0XMzTWYhDI63PR
bd8onXVTCgGzIyVjg1kxnddqb8dZdKtwegLo6vEWRHFYocgakibsQmJX6S0w6Jqp
WndesadpgjTbU1n+QkI8dHEKMY+G39rJGFaInswLuTujDjzBE8k6/7QH+n7MnJvQ
G9bR2BWv0iLpMZeh7JriM8dq9fNkENLtsbh1aAar38uiiLAWjFZbfpvbLkM2AKiB
RiyFBxlL482UMTAhGnHcAtE1iGYITB3ouUDXI57Qf8EoymJmQpCVHF8eJfDp7Ye2
C08X3dUle5KjGqDzAa5kT9W4yM2OA1EV4bM4Dl5BiyXNecAMgWd+Z86H7JEtblV4
vPIbERrkXbRKbdO5Z0LkoeIU6ql8918z1/3XvTtvkkErntPtxbw9nJiiYA99+lwW
OEushuVYnQdGBF6SL3wBEACvRrGqjzyhmc9DIPnth4zaCeB60En8qjJlvy4jko33
BOv9eSgEbl4OD7IuXEjuaT4AX97mz8GNO4CsgcKHJGZWU561T5E6SCVCD5nWrcKu
sKLhCZHwTIeP2a7t+u0SFsP0jQS08f33Vfkx4nTP6KFOz0ea04Zpuy7bi81gQ88+
Jmgwu4M3lXRGpH5bs9wLkKBxpAyTHTltz17JxJSGLGUkvUa81cyVpwBp/pjWFgSx
/n2TKgW1S14rh+Ng85OARtxm17Gt6NWLERS1d+O7Q95LiXzx5cH+Mtd8GD/J730l
KiNaWyDCdTEuEg6j/AK7VcJzj5ZpgyQIfuDyCi0olYwYpgMgKTRltuascWTkmnAo
yksJ8ybbz5SyGSxSGXTjIncF4Gj52cYzsMRMncUG1RX9ZpmaSsfEhDRKBeFDPqJW
eJpyjvZFtEb78qPld2iY1Uu9bln0VamV7HdE4ELwwa/dMjKgGWKp0Qcw2mmoBeQX
+T5DttlKuJTnTCeymzZ79N3rKIRTgx1waK9uZ8AbY8sZZ5ZymHfBZAV08UFnkJzH
yMYJu/HU9Lipk0ZqwA/ixN5gRCxXg6Y90GB4j50F0c/ndDBA3iVCTBt8qSYL2yGN
qllnlW+O02ZGIxgEmDw70qSfAja93egAiTI6SrADlN2e9eaLIAjzQ1wtNkK+lVQr
GwARAQAB/gcDAki6YNPSSqc/5mDtu+Ym2BAUsXAFwtfiRkP/B4lXIpspvqFjQ4g0
jphk7JF6cONxuoZBPDY6rAk0GNsuv2OPerU9iuU+uoH30rk+lyS2fYQnG/Rskk9U
w+Ru+15gpQfJPHayamtJbZ+iuC1mb33IObOl7E0txHnB3EZR9Ba2Jb79ycgoXMVt
IAh5m/S7r8dlhN5zGyCIZr/BPVVJlVVsCW9yrzuWyWBp668WY1LQpCjvalJpcy+d
6ttVpUpinXiKFTy4r4eWm1mSzKc+rqowbPbuwTMpBrX4f+Y4EKU1SAT/2LtrZ7S9
S5btlxhjfi1NCBYrmNWkKc+uNXwZPHbZe0QYASirpb9NVXRv6GRT/USF2WtKYyL5
Sijmq2zvzlQPzApgxZcTChjKw4gZ+/kcUfO9WIJyCNVO57LqHAbQl+iqfG5x50yI
WFoY3CMJsjvxHlPJ1SV6yieGqNw/AaT69Dxw8OTm1Ypwq6ir1fX81gUg7VAZzUCE
zTMZoeAtWZL1VsswIJBaJ0ti/T+6yI0Sa0TyKMQRti5XZB58nYHOrN40XcDHDvlN
7fLmpZFUi0CseQMRYsvX5pjGASwbfsdYM1bQ39nPwWfvU+hVM/40pLuhRtIlab2Z
kznGYBz2o016cITCu2JPyXwAXe9HBgWg3adCKmuD9w6tSM8JIFsFm8POZmnzNh3U
TCbfQTNdV3Gis6DZgxzMKDYt19BH7DFa6SgBTRnpI/585jsw03c0DqGiAVC6pY9V
UrzHKi1yjY60xTgMrKlY/YbdkcC4mSoMgAWfG0b+QmOcwOBMx0ihqyigkgJIsWCy
LdlGkNZgkWJmSzgtQBGsuWh4fAyykwp6sPqL6ksGi7IcKKAdq1X/BIb930U+pAyK
R2ddqcJLQXubbHO6PrxYca27eNfO67LWwEiJA5Bqw25Q0fC6Oia4wmJxf5cNjfUd
y9GuxjrEIEXk5Iv8Fj6/Qluo6H269kBUcjg7ulcIuT7Sytrd2o3WYgyCuJ2EVTEb
u/ScIPHtCnxcb5h6NlX+ZfNi/zQSQsA4q5lJSww1Q0we/PkZ0DgJ222KlsZw5r1m
GxkBnf0RpHZBnjl/CO7CAZgwsUwfZFLVoOEbu+dbiNuBH09wUG57DJJ5ErAUGdyL
KfsNOk1kDARZKsLq6GEQLhOnKkkZ89E2RLPx5nh8ammncdoGyeVFCVbAwQcc3F03
kdECVuOgIMnbErQQl7qG/3IhSqWozrtklP2C7Cs2VQZvRGTTlaPeFg2u+8YGikLe
OhmPLwP2vJEdMl2DO7vBDTuy2DZ8YFpkmbaTMB1y672fZ/LYkzSjyqdYWYvDIJ+D
lB7n8to3YZBFVsOQsxiXYXbcRMBkhjjWJed196C7orEaQkvcZRfR0DRH4XzePce2
RMOIVl/lcBUK5poZvNBcWGctQJrINkFvmE/epML9b19r+EKcab1BpQdpuo02ANUD
xF/FUu+lK7Am1yP67PesVuPsJDCfa7ZNAZOD2joqYr4CKl7z9CajyZ8IxX7kxbq0
g61V962OXfox/ZUqkT8OeyJsAOytyd8ccqK4g/wSt1BWEOWOq9Eh+tZ9p6pDz6Z+
BTpaDBGD58KXHgE98jH+A7QkP6J3JqdRoeHKaAhVvEtPsLLZi3IvvqnZYxrzUiTW
F1nyAt3vXqi9N2dMrqDnhNucoYjJynSLM0aV9VFGyzu0O/0LDYflFMkg6NXYq6bE
ZAWGCBZzoIG9O8ftLnxjCje34ASeAPX/6nn69UfZzSuW3+lcp7uAEsq6qNF0jIeJ
AjYEGAEIACAWIQR4fq4aX6PnSao0zGqgZF6+2GICfgUCXpIvfAIbDAAKCRCgZF6+
2GICfv68D/0ettf8g0c/STL/l0rr0GslmW/dhhaYkLTn1hvh5/Sr5wzvqXX0jhna
0qoINndSPr0AfatY4oF97fKaNNqlre4fe2kywC5wGoRsc7qV12GxSAkBrDVmuml/
M+XQwkMskLq7waUe+Hjr1+6axK8YB0s2ltNCi203jHbF7aetnhVCt94V3VP9GAo/
E8kteOGr7nKps0T8UoivfliJdOU52o0OKHcYHjEmCv9zY7hJ8rcX0DaLAmnl6WXX
PeHLaagDQBPeSAcbTbfudXrnTmyIwSfuu3v0IMDEcKCOyhywpmXHaR8Vspf2yx4K
4wRzOj3snzrZN/hZT1Dsoz5Zk2bGBZJwPTnmQhzTqtQOQbJqESsMNHcoW+SULplY
0F/rp5+ifW9ezbDVfBRTtE6HOA0NiR6EthSzUeJrnSrVr6b4csDpYSRpCaPQCJYX
qeQCvGlsIFwVPx4FYxF4ydGbDaL4pGUXh8byFcFNHX+NT1LTfI1WgdQW5m4FMj2o
b4QWrAo/xV5luB+0VI3Il+OzDBIbjLIgRarID9Og3MEmfzfCKE3JHxovajN+0FDn
9l3JvBitbRnMnwbyQGhXF93nEczAz1B9CYqZca1+uvDiwtlehc82JEhnqolVt9yX
VFOhGxQwNgv9665cH9/3W6STnUiM7V9RkG93OALOLxdTghESA61HRg==
=Ql28
-----END PGP PRIVATE KEY BLOCK-----
"""
2020-04-12 19:32:58 -07:00
let PGP_RSA4096_PRIVATE_SUBKEY = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
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
ghESA61HRg==
=DFUr
-----END PGP PRIVATE KEY BLOCK-----
"""
let PGP_ED25519_PUBLIC_KEY = """
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEXS4TMRYJKwYBBAHaRw8BAQdAW/U3l3/bMWFxHaCQ3Kr8Wel5322hgiVGO39K
mk+NLYO0KnBhc3Nmb3Jpb3MgPGRldmVsb3BlckBwYXNzZm9yaW9zLm1zc3VuLm1l
PoiQBBMWCAA4FiEEX8ywgauK9IlymZ4q51Csv+lERIMFAl0uEzECGwMFCwkIBwIG
FQoJCAsCBBYCAwECHgECF4AACgkQ51Csv+lERIM0RgEAtw6VI0hbhIiSCZuHfePn
3XmXQnSkfYw6OrND86vNPEgBAIcymV45aM3IUMi7cczlNemdc4vzvZ2sahN4I9bp
zygDuDgEXS4TMRIKKwYBBAGXVQEFAQEHQDEc6qSqOJHTY/QBMBCuH2NPbc3jfJKe
3zN15IWfji9hAwEIB4h4BBgWCAAgFiEEX8ywgauK9IlymZ4q51Csv+lERIMFAl0u
EzECGwwACgkQ51Csv+lERIMOsAEA43pkVP9br/TmESz/IuTZBfVAexAA3Q9DRL7M
NcZVu2wA/js8TfomM2QBmZYPSZFPzA1nI1FzzgPhFgy6fGLgpZUL
=4EF6
-----END PGP PUBLIC KEY BLOCK-----
"""
let PGP_ED25519_PRIVATE_KEY = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
lIYEXS4TMRYJKwYBBAHaRw8BAQdAW/U3l3/bMWFxHaCQ3Kr8Wel5322hgiVGO39K
mk+NLYP+BwMCw1EywRMGVRHmRf963xPpOVBluE38pFvriDQXbceoPZVdgyr+M2Ef
3HFn8t/ZyTzeZQZIgmlAFNgiDaz3I+CISN89uVFt7yJVGzbuvjgVSrQqcGFzc2Zv
cmlvcyA8ZGV2ZWxvcGVyQHBhc3Nmb3Jpb3MubXNzdW4ubWU+iJAEExYIADgWIQRf
zLCBq4r0iXKZnirnUKy/6UREgwUCXS4TMQIbAwULCQgHAgYVCgkICwIEFgIDAQIe
AQIXgAAKCRDnUKy/6UREgzRGAQC3DpUjSFuEiJIJm4d94+fdeZdCdKR9jDo6s0Pz
q808SAEAhzKZXjlozchQyLtxzOU16Z1zi/O9naxqE3gj1unPKAOciwRdLhMxEgor
BgEEAZdVAQUBAQdAMRzqpKo4kdNj9AEwEK4fY09tzeN8kp7fM3XkhZ+OL2EDAQgH
/gcDAsJwqoLIpKyw5lJwU83TfgSJJLrBR6KGLB1oZigRAasw++69iC19yUS6FY3M
mRiOrYeBatYCoXY8xolbStkhZl2y9KYlPcFNWOQvVKtuUT2IeAQYFggAIBYhBF/M
sIGrivSJcpmeKudQrL/pRESDBQJdLhMxAhsMAAoJEOdQrL/pRESDDrABAON6ZFT/
W6/05hEs/yLk2QX1QHsQAN0PQ0S+zDXGVbtsAP47PE36JjNkAZmWD0mRT8wNZyNR
c84D4RYMunxi4KWVCw==
=nV4i
-----END PGP PRIVATE KEY BLOCK-----
"""
let PGP_ED25519_PRIVATE_SUBKEY = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
lDsEXS4TMRYJKwYBBAHaRw8BAQdAW/U3l3/bMWFxHaCQ3Kr8Wel5322hgiVGO39K
mk+NLYP/AGUAR05VAbQqcGFzc2ZvcmlvcyA8ZGV2ZWxvcGVyQHBhc3Nmb3Jpb3Mu
bXNzdW4ubWU+iJAEExYIADgWIQRfzLCBq4r0iXKZnirnUKy/6UREgwUCXS4TMQIb
AwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDnUKy/6UREgzRGAQC3DpUjSFuE
iJIJm4d94+fdeZdCdKR9jDo6s0Pzq808SAEAhzKZXjlozchQyLtxzOU16Z1zi/O9
naxqE3gj1unPKAOciwRdLhMxEgorBgEEAZdVAQUBAQdAMRzqpKo4kdNj9AEwEK4f
Y09tzeN8kp7fM3XkhZ+OL2EDAQgH/gcDAk55ulCfKROW5kyrg18FeoHR+DNPhKVV
7R2CyAinW5c4+SiLk+P4Zbgue1JEmCNqhckywVx6LOFoR3OdJRFumfuacB82QUY+
p9VjMutDAO+IeAQYFggAIBYhBF/MsIGrivSJcpmeKudQrL/pRESDBQJdLhMxAhsM
AAoJEOdQrL/pRESDDrABAON6ZFT/W6/05hEs/yLk2QX1QHsQAN0PQ0S+zDXGVbts
AP47PE36JjNkAZmWD0mRT8wNZyNRc84D4RYMunxi4KWVCw==
=4Sfz
-----END PGP PRIVATE KEY BLOCK-----
"""
2020-04-13 21:06:19 -07:00
let PGP_NISTP384_PUBLIC_KEY = """
-----BEGIN PGP PUBLIC KEY BLOCK-----
mG8EXpUo3hMFK4EEACIDAwQXzJVx15CZgw9lpJPlFaAaFIJtxc4RevL8LitUdRZF
nVmPpYpgZwoROtSEb+JPKrYR9xVFTOzf+BYXWTyq4YXFfxQrea2hRx7RZUMj3tex
A+tOTnA0ruqCzMIsLYGglcK0KnBhc3Nmb3Jpb3MgPGRldmVsb3BlckBwYXNzZm9y
aW9zLm1zc3VuLm1lPoiwBBMTCQA4FiEEvNNkwHhYXAYH4ZxnFxwH0lrzwIUFAl6V
KN4CGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQFxwH0lrzwIV2FQF/X3sS
rP8f20TOpqI4Ng/5Du6QKcdje05VWVDpBVnT/f40aT8jQi6ykqrHLsWek2yFAYDn
3UD8FchlUlSbvVofgipPkPp+nSsm92D+e1r4XtHT+u+8eYtMbf8iVB8qX0B3ufC4
cwRelSjeEgUrgQQAIgMDBC8+ymFhSwUs95FmaFe52FruXlFsRgwcOfsu2MI1oMh4
xjX0uh+lwzIndDM7zbrRjkVdUijydV47TebANUwJ9S9uroOj9yxAHpg7CVRI0Kcb
NhoF3eBfNDYe5YydQvJqGgMBCQmImAQYEwkAIBYhBLzTZMB4WFwGB+GcZxccB9Ja
88CFBQJelSjeAhsMAAoJEBccB9Ja88CFqwsBgKrjm2MeRnIYpSdzWEfuW9QCvaD5
bklFOfAbrdBTp39u/3iO+maLmA7/AgFFcO+AAgF/Vb/tUBdvu/pn/viWagGzK/pk
cacCQ5/PGk4Ln2CosOS1atZpkmX5JJLr034tKMr6
=TMCI
-----END PGP PUBLIC KEY BLOCK-----
"""
let PGP_NISTP384_PRIVATE_KEY = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
lNIEXpUo3hMFK4EEACIDAwQXzJVx15CZgw9lpJPlFaAaFIJtxc4RevL8LitUdRZF
nVmPpYpgZwoROtSEb+JPKrYR9xVFTOzf+BYXWTyq4YXFfxQrea2hRx7RZUMj3tex
A+tOTnA0ruqCzMIsLYGglcL+BwMCgmXDbtpRcF//w9wVoIqLBqlBfcfbPN35l+eo
pTLlOEQq8ioYjXotSysjocxyW1urNKq3g5Np0ZEU8iXtD0LGdtOWq7a9UnI+90vc
gq1UVxYhIWdtH5Tssshrfi6E26y0KnBhc3Nmb3Jpb3MgPGRldmVsb3BlckBwYXNz
Zm9yaW9zLm1zc3VuLm1lPoiwBBMTCQA4FiEEvNNkwHhYXAYH4ZxnFxwH0lrzwIUF
Al6VKN4CGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQFxwH0lrzwIV2FQF/
X3sSrP8f20TOpqI4Ng/5Du6QKcdje05VWVDpBVnT/f40aT8jQi6ykqrHLsWek2yF
AYDn3UD8FchlUlSbvVofgipPkPp+nSsm92D+e1r4XtHT+u+8eYtMbf8iVB8qX0B3
ufCc1gRelSjeEgUrgQQAIgMDBC8+ymFhSwUs95FmaFe52FruXlFsRgwcOfsu2MI1
oMh4xjX0uh+lwzIndDM7zbrRjkVdUijydV47TebANUwJ9S9uroOj9yxAHpg7CVRI
0KcbNhoF3eBfNDYe5YydQvJqGgMBCQn+BwMC3cQgKP9rMPr/RlmS+ANayfPVjNUs
bq/6y9YWmUTN7kppKTMU6VYYMxHNSX1GIZ7RWrsWr0h5DQRrWaSef9tsyGMl0cl5
scuDku5Yzmt4meoaqZJaRLaP4EuypaGGpKOImAQYEwkAIBYhBLzTZMB4WFwGB+Gc
ZxccB9Ja88CFBQJelSjeAhsMAAoJEBccB9Ja88CFqwsBgKrjm2MeRnIYpSdzWEfu
W9QCvaD5bklFOfAbrdBTp39u/3iO+maLmA7/AgFFcO+AAgF/Vb/tUBdvu/pn/viW
agGzK/pkcacCQ5/PGk4Ln2CosOS1atZpkmX5JJLr034tKMr6
=vn6S
-----END PGP PRIVATE KEY BLOCK-----
"""