This file contains the PGP keys of various Apache developers.
Please don't use them for email unless you have to. Their main
purpose is code signing.

Apache users: pgp < KEYS
Apache developers: 
        (pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
      or
        (gpg --fingerprint --list-sigs <your name>
             && gpg --armor --export <your name>) >> this file.

Apache developers: please ensure that your key is also available via the
PGP keyservers (such as pgpkeys.mit.edu).

Type bits      keyID      Date       User ID
DSS  2048/1024 0x357AE38C 2002/12/30 *** DEFAULT SIGNING KEY ***
                                     Martin F. N. Cooper <martinc@apache.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGP 6.5.8

mQGiBD4QG2ARBADidho8fyIoGRxNu1rXBtVov8IpHcHCOzqY6C1Phgj+sCkeoLvX
7fBPwLhk+YhrkbhX2Fy0Hg8RzOy7J6XM1GYclPpYc+F7gW7tYqzGoiEeVAx3tIYa
X83Z3d4f3pcwz3MePsFFIMkJzm766DbxEJwUlrNziD7KHOMkSPtt9E1O2QCg/21P
4LIkL6MAiqSoHPi7iXSCcv8D/1Vj4Nw7VpTFYupzDotjTf43G9WpbRjYPwPIpBbK
G72JC8a3BQZmKUXEVHTHfOe4vWFrkrs1WTsBT8q5qo3d+wSxrUVj1wlNqQolQ8RP
7j+dx5zRYDKYD+DGdkF2Qokd3qx2uxcJnRNBeUsAB3aPj9IEqMMMGjEqybCbzTjv
EfiuA/4x7hqPNGirRiNLkGFn9GJg+z/yYkiC2eaQC6VMU+S8JccHE2l4DgUSfKnc
vm+QJGjDbylpZ1P4shtCkkHnoC21oeJrcKYB8jn/TAEGPv955xZDLj5fvvYQreg7
iaQ6Hx5TAnu+7tnET9UmoZe/fMN1jpwT4G3lXsl4AsizTXXZDbQoTWFydGluIEYu
IE4uIENvb3BlciA8bWFydGluY0BhcGFjaGUub3JnPokATgQQEQIADgUCPhAbYAQL
AwIBAhkBAAoJEJhjoec1euOM5g4An1/g/v4GZcqxsMWRpGsZRGJYASDSAKCKAIlZ
RMiKyomfYl43R8HtgNNp0rkCDQQ+EBtgEAgA9kJXtwh/CBdyorrWqULzBej5UxE5
T7bxbrlLOCDaAadWoxTpj0BV89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/c
dlJPPT2N286Z4VeSWc39uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaCl
cjrUGvC/RgBYK+X0iP1YTknbzSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD
8KVbGI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZ
yAcpesqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV6TILOwACAgf8
D0YiROjHXpHdBHkBaSoL9DmHT+JoUA5XLaLekQ2j4aNpGVHrPpRIEUUVLZFlfiTm
IYVt4sMhh8prmqo7Yr4o1vG4cKJbqkiD+wCMntc4WTAifR9Py2I2G8D8aBQt2oRY
fJdjEM41NX6B6k5swiCYjqEIHR1fh10cc/jeCwjcb2S65JK+UlTPBjjUNbbwVgmo
VB2VOfjpas8yXTPZB0MOaxQqLP6+LPwUBLeNPvl+19Pfnaf6vSoObz4/OlO4FXET
Q3wj/kipicoWaUj4Wq0bNETIeaKOnNkKn0Vvk8/yTn1RSzYb2xLFSm2wJBJAazfD
g6pbPTWu532wXg1ErKCgm4kARgQYEQIABgUCPhAbYAAKCRCYY6HnNXrjjOvSAKC5
2FwUjvHy9zKbEV458B6p/BxtXwCg1xYG1Ad4mNDb5udKpQtMMzM28Ik=
=noY8
-----END PGP PUBLIC KEY BLOCK-----


pub  1024D/F2A46D40 2003-08-27 Rob Leland (For Uploading Builds/Releases) <rleland@apache.org>
     Key fingerprint = A20A A262 E293 2AB1 889A  7CFB 7F77 23FE F2A4 6D40
sig 3       F2A46D40 2003-08-27   Rob Leland (For Uploading Builds/Releases) <rleland@apache.org>
sub  1056g/EF8E1258 2003-08-27 [expires: 2005-08-26]
sig         F2A46D40 2003-08-27   Rob Leland (For Uploading Builds/Releases) <rleland@apache.org>

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.2 (Cygwin)

mQGiBD9MWnURBADIx7Q8AIe+NTbRiCxM2pkgeMFZN/3mO4vd1mW5R9TD5PcpisUv
htxykhVyQb5ifHBRK732nE+2nGGAqDP2I0lKKt9EhYXIUUU1UYrveK2gFXA31m0d
L+Ghoa8Ugm11uPJz5IYjTLU9LOIu3sBLo25BCOi5dZ1E0oEP+iU52NLuNwCgkK59
ZdbDVqWyrO5a86EwbHiyhk8D/0Wyn9isVS7vw5CQh9/u3WCvbh4MovZYZ6/3sy//
4X4Uy8wBKAjZQhJQuFsQY2tcIj/MEE8g9nqpF3QGJIinbt7DNW80w439+MczoSmJ
Ck33GqMffniaSWOBW+Xlsm379vdCZR+DFZeOoaXzKeBCu/SRnpRYMR3UoQHw9hyO
ReA3A/9f0DcwumJ2ofpRIAbTRMnDvXUSfc95qtiCm4JHaRMbFdD10L2swE76N+/A
I1fhQdcBv5I1hm0DGBo9++6TItGYpP+IJxoIpETAOahM/jg64ZPRmtoCTYbnWqig
lTuAs1xIwR1L43mH70dxaE8Coge/V5HBi5rz/gwTRyP3/9pUk7Q/Um9iIExlbGFu
ZCAoRm9yIFVwbG9hZGluZyBCdWlsZHMvUmVsZWFzZXMpIDxybGVsYW5kQGFwYWNo
ZS5vcmc+iGEEExECACEFAj9MWnUFCQPCZwAGCwkIBwMCAxUCAwMWAgECHgECF4AA
CgkQf3cj/vKkbUDCLACffF7f0Rel07bxCSGLrg9fzMsHIL8AoI9rVGqq8ID+4VgA
0AiyP1k99BPNuQEVBD9MWncQBCDlujLhU6jr+pkF/EA7n+9yVennnev9GMLts91k
7vla47VV2Uxdywd+sEE7nW5Ld+oHhFTPIWOF9aezKyGseob0sjmp95dp5q5rLk8X
f0V+IsVCWyevRIXxNoKiCpWUuWwBcHzsbgOoNnnuxxC/QSkP4sHr8bax3inBoCfd
3YFLb1i5TuMAAwUEHRjnW05hHCVl+SyCzVAV+/UvJDKE9UXM0Is6yIOd1jwqUnNQ
xMjuMLjnRHIXt79UHYV8GXkgxWjdx+w1eW9KDpUSy2TcTAD6l6tXBIBI24dzGxHl
tDbTAX1kNl1Qmw8qUiu1qc8nSDTD0B26tGveTyp15Zb80uN3zNjC9qDsuVdfiu6D
7YhMBBgRAgAMBQI/TFp3BQkDwmcAAAoJEH93I/7ypG1AaSMAn1tMyP0k00bYBKzX
+s7PneFo65zWAJ9g2bgkGaAwByLTuah16xaRLNKC0g==
=xkP8
-----END PGP PUBLIC KEY BLOCK-----


Type Bits/KeyID     Date       User ID 
DSS  1024/C56014B2 2004-11-12  Niall Pemberton (Code signing) <niallp@apache.org>

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGP 8.1 - not licensed for commercial use: www.pgp.com

mQGiBEGVK0ERBADwhGhmOMvSgvGaqHW3ial0NS80ZXyE1EeNL6ke/WrXHB4dT6if
inoAuUgRz3v9Na4rjSQ8YVFjn3NaZq1i8RM2KJOUU8ZkJ2AsrH6fqStjofLTd5ng
iQaq2wLM5rTQfdjLsGQb1iDNDyCXU56+/l4mFZ2JiEGCq3Re9EFHelRBKQCg/7k0
BIfyoFVTHw39PKaDBmCYF2sD/3CMD0J/WldhBM7gLOndH9/YEQaEMy+PJNXcfTWN
WLygGPSOQdNBulyLkvcFIZjUTxFVakh7FbjMq3dsAP1oqthwmK7L8A1zsvRgp/TI
4YMHkZSkgcs0PBBby+h/lpgRrWmtwjTPzql/K5xX4VSRS+umHye/7R+4ZEH7mABa
m/ZABADkPGG2ECvfjNosPQDHZVFuF9oVaske0OjzxI+rU6sR1fJKtbOPl9d+bgz+
df7rZ3mwppkPX2r/muUbd0CM1Se10sK7ZAoPYmWqHX+vB/oj3Jq+iqb6M5mDZzEz
6h4hdnaGERyxbktZvhRV7Psco9CGi8o7RFUQTR79Y5ElnBavqLQyTmlhbGwgUGVt
YmVydG9uIChDb2RlIHNpZ25pbmcpIDxuaWFsbHBAYXBhY2hlLm9yZz6JAF0EEBEC
AB0FAkGVK0EHCwkIBwMCCgIZAQUbAwAAAAUeAQAAAAAKCRAYYcMixWAUsgCiAKCD
27/cQbPNPTEFFK/9wn7TwQIaZgCfbDN9CZ5xJDbQpLNRKDqasXF7g7C5Ag0EQZUr
QRAIAPZCV7cIfwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bL
Q6mUrfdMZIZJ+AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8
g8VHMGHOfMlm/xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3k
kQc2azNsOA1FHQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs
3jMhLLUq/zzhsSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRd
QZ+cfL2JSyIZJrqrol7DVekyCzsAAgIIAMOpC9D4T2fxDyNJj35iGHmilIEwfKuO
5wymOOsA7NZf5rFSRwFcBhAR7sZmwu6/6nwIH0lvvy4+F20iwqmmSFkrupX2ONyD
iGFw+KXuXAp1pEIo/ody8UUerg5ga+XMIXhxLgdrDBVOZSYokEdfnl2JDzSuBYFU
KRy1nm6DgwJU39I/IEUfmk7OXll6n0gPlBLF6Z+uOd232ShC15EZhM52+MchliWi
1tjJZmkZWrmL3OtTOxSvM9eUkmW6uqInLaZxHH5IJwcXDc2t42UFe1jlmdwZQ9Zy
kOutbG5kvNf5y58W6L/QErNuStqJVwbB5BEYYzJxEXnb7+2r5ZgcItaJAEwEGBEC
AAwFAkGVK0EFGwwAAAAACgkQGGHDIsVgFLIZNACfa78K8/MrBG/UVSQ9hHvnWP08
bAMAniQ+3a5yjxqf2k73+ipTq+VlSvfz
=4ydx
-----END PGP PUBLIC KEY BLOCK-----

