I am trying to generate a shared secret in my app like this:
public static byte[] generateSharedSecret(PrivateKey privateKey PublicKey publicKey) {
KeyAg
It's actually quite simple! But you need one more thing besides the x
and y
values. You also need an ECParameterSpec
! The ECParameterSpec
describes the elliptic curve you are using and your app has to use the same ECParameterSpec
as your backend does!
With the x
and y
values you can create an ECPoint
instance and together with your ECParameterSpec
you can create an ECPublicKeySpec
:
ECParameterSpec ecParameters = ...;
BigInteger x = ...;
BigInteger y = ...;
ECPoint ecPoint = new ECPoint(x, y);
ECPublicKeySpec keySpec = new ECPublicKeySpec(ecPoint, ecParameters);
And now with that ECPublicKeySpec
you can generate the PublicKey
using a KeyFactory
:
KeyFactory keyFactory = KeyFactory.getInstance("EC");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
You can find more information about this topic here.