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