¿Cómo comprimo o codifico la clave pública de curva elíptica y la coloco en la red?

Estoy desarrollando una firma digital distribuida que firma un documento y lo envía a través de la red al servidor de aplicaciones. Estoy utilizando la programación de socket en Java para hacerlo. Creo que la clave pública debe estar codificada o comprimida, es decir, los valores de x e y de alguna manera se representan como datos binarios únicos y se guardan en un registro público o en una red. Pero no sé cómo hacerlo en java.

        // I have class like this 
           public class CryptoSystem{                  

               EllipticCurve ec = new EllipticCurve(new P192());

               //-------------------
               //--------------------

               public ECKeyPair generatekeyPair()
               {
                  return ECKeyPair(ec);

               }


            }    
        // i don't think i have problem in the above


    CryptoSystem crypto = new CryptoSystem();
    ECKeyPair keyPair = crypto.generateKeyPair();
    BigInteger prvKey = keyPair.getPrivateKey();
    ECPoint pubKey = keyPair.getPublicKey();
     // recommend me here to  compress and send it  the public key to a shared network.

Quiero saber cómo codificar la clave pública y los parámetros del dominio, de modo que el verificador de la firma la decodifique para usarla. Porque cuando los envía a través de la red al verificador, tendrá que codificarlos como una matriz de un solo byte. No estoy usando Bouncy Castle Provider. Toda la implementación del algoritmo ECDSA es mi proyecto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta