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