Estoy tratando de convertir una clave publica en formato PEM a clave publica en JAVA.
Este es un chat simple para Android. El servidor está hecho en Go y el cliente, como no, en JAVA. El problema que se me plantea es el siguiente:
Yo envío la clave pública del cliente y luego recibo la del servidor en formato PEM. La función para generar la clave PEM en Go es esta:
Código:
func getPEMPublicKey(privateKey *rsa.PrivateKey) ([]byte, error) {
publicKey := privateKey.PublicKey
bytes, err := x509.MarshalPKIXPublicKey(&publicKey)
if err != nil {
return []byte(""), nil
}
block := &pem.Block{
Type: "PUBLIC KEY",
Bytes: bytes,
}
return pem.EncodeToMemory(block), nil
}
Y la funcion en Java para recoger esa clave es esta:
Código
PEMParser reader = new PEMParser(in); PemObject pemObject = reader.readPemObject(); reader.close(); X509EncodedKeySpec spec = return kf.generatePublic(spec); }
Mi principal problema, como he dicho es la funcion en Java. Ya que he creado un cliente en Go que funciona a la perfección, y en Java puedo cifrar y descifrar perfectamente cuando genero con las claves propias generadas en el cliente.
El problema es que al cifrar con la clave publica del servidor, Go no puede descrifrar el contenido porque el bloque generado está mal.
Gracias de antemano.