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).


pub   1024D/58812457 2005-07-19
uid                  Rahul Akolkar (Sign jakarta.apache.org distributions) <rahul@apache.org>
sig 3        58812457 2005-07-19  Rahul Akolkar (Sign jakarta.apache.org distributions) <rahul@apache.org>
sub   2048g/BBB9168D 2005-07-19
sig          58812457 2005-07-19  Rahul Akolkar (Sign jakarta.apache.org distributions) <rahul@apache.org>

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (MingW32)

mQGiBELdY8cRBACEN8KuZtEOAREEeVmiPF3rrF5mCXnIFaZwBHOa43pe8tUo0Rxc
lwhWydL6FkxniZfXUpbxP9umJ7NAJ3w3kGYIFjaVOdYdx+dkvb+hNwrsaBJaFfHz
3XUzDXvQ9feWRO3+k3zFT+fJYjLmRfj5/0wQVoqCYfhvVJ9YV+auV75WHwCgq7db
LbujmyVPqZI9HbKB8siRSZsD/j7LnuaTdy11NORvRBHOtX0U+WqYPjTlwY6Zjf3w
TzFv95sZlKEjRuDSrUDAjLJ27q3uZU+MNoY+C+diRQOYbqKYED33IjmRD/pDjKFu
rwjsiUGf+mslNgrKW65iokRN2rziJreCL8+mpq77ibqOxKQhsu6lPaLdCaOw7uk/
WXpRBACChTD9fWXlpNmSU6QsgICh4Vz1UlqG1AnldnF93LhHcLdGWeG59NMz7CHF
16nsR1PUSn+UIq5K/uWBbiLEY94mZ6aLafrgqR1+lXZQBhVLJ46rVz+5oYyXa+Ic
ltqaoxIR56t0edAyIuhZTAFm/mL3PxFdfdEoGpCqZ1Y4JyFlqLRIUmFodWwgQWtv
bGthciAoU2lnbiBqYWthcnRhLmFwYWNoZS5vcmcgZGlzdHJpYnV0aW9ucykgPHJh
aHVsQGFwYWNoZS5vcmc+iF4EExECAB4FAkLdY8cCGwMGCwkIBwMCAxUCAwMWAgEC
HgECF4AACgkQUL3OIliBJFd+LQCfY6jNIFHbvdzAeHmDhvRlKjPV5XUAn2vMRjtW
Wu6sBhzXrgrKUz6R4L/GuQINBELdY9cQCADZ2DQIXGjjyPZswkO5nQYGSVf1mSms
SyioIpYiWTx0UGQbWeVXb2QIhPQ1Ti6wBsFSSmx1EDb9HXE9GzPbjrq/c5+tz39h
IzZNwZ1ddQ11z8h9JBoIZ8e46645ak9Wa5GjHX7nJ01fGmncnT72rQc1X7IsJQAj
oikiQlVpIeHJZHC3PLgwfppjiD9RSWzrMQhIe1pAKxMvW44rTV4ZaC8HlwRxLVWO
2l3OSFL0ggwMAePH2xzsWT3AEz4oz7vIon9IcvoonE5nmN97aJDbSk+Iy979awLI
TfLYf5slIHpv7mg23FYvXrIqVdGcc8fxijzClBM/DUZHW9xqX6Ydjoq3AAMHB/42
82229hxAOzXCj2i0kZHe1EMZJYvA9JTv6OideupkPL3fkkSY2BTXKQYe44ICmHUz
/vr4jGULpte7VMTLOJIX8fCb1mzWjhpWGkqIbLMCFVowRphzE5svj6Va5mNDpZwL
WI1/7AZeYss8mFztLJe5l7njzj4s1mBH9WcvSL7LQjQnqmS8mkywt7oEZLQxZ9Ib
5slgr74UXgq502uQXwsAxIOeEXUCjphVpwggvBnSXBxgXT96N4U3OKXMswWItqPC
FJZZuF4PrImYImQGfWHP0M8JlS8ywAixtmCHKghvrW1ZA1+stA7tYsD/vK8qsxhC
Fupr5ytIA3Gv3TVGupQ1iEkEGBECAAkFAkLdY9cCGwwACgkQUL3OIliBJFdFywCf
TpBnwib73+MI+nazOyU++sNWjsgAoJCVKCTVWoEC3XvF4repMXT9Bxm7
=PT52
-----END PGP PUBLIC KEY BLOCK-----



