Como faço para compactar ou codificar a chave pública da curva elíptica e colocá-la na rede?

Estou desenvolvendo assinatura digital distribuída que assina um documento e enviá-lo através da rede para o servidor de aplicativos.Estou usando a programação de soquete em java para fazê-lo. Acho que a chave pública deve ser codificada ou comprimida, ou seja, os valores x e y são representados de alguma forma como um único dado binário e salvos em um registro ou rede pública. Mas eu não sei como fazer isso em 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.

Eu quero saber como codificar a chave pública e os parâmetros de domínio, para que o verificador da assinatura decodifique para usá-lo. Porque quando você os envia pela rede para o verificador vc vai ter que codificar o como um array de byte único Eu não estou usando o Bouncy Castle Provider. Toda a implementação do algoritmo ECDSA é o meu projeto

questionAnswers(2)

yourAnswerToTheQuestion