Is it possible (and then how) to communicate with PGP Key Server, like https://pgp.mit.edu or http://keyserver.pgp.com or private key server: upload a key, search for a key, download a key etc. - using Bouncy Castle OpenPGP API on Java?
Is there any open sourced PGP key server implementation on Java?
I'm not aware Bouncy Castle has support for key server communication, but wouldn't consider this an issue.
The most widely spread protocol used for key server communication is HKP, built upon HTTP. Implementing the protocol as a client does not really require any large libraries, for basic operations some simple HTTP requests will be sufficient.
As an example, the specification proposal lists following requests:
Search for all keys containing the string "dshaw":
http://keys.example.com:11371/pks/lookup?search=dshaw&op=index
Get key 0x99242560 (32-bit key ID):
http://keys.example.com:11371/pks/lookup?op=get&search=0x99242560
Uploading new keys is a simple as sending an HTTP POST request:
Keyserver submissions are done via a HTTP POST URL. Specifically, the abs_path (see [2], section 3.2) is set to "/pks/add", and the key data is provided via HTTP POST as specified in [2], section 8.3, and [3], section 8.2.3. [...]