i trying generate shared secret in app this:
public static byte[] generatesharedsecret(privatekey privatekey publickey publickey) { keyagreement keyagreement = keyagreement.getinstance("ecdh", "sc"); keyagreement.init(privatekey); keyagreement.dophase(publickey, true); return keyagreement.generatesecret(); }
this working fine, publickey
use here should coming backend.
the backend sends me x
, y
value of point on elliptic curve , supposed generate publickey
that. can't figure out! how can create publickey
instance 2 values?
it's quite simple! need 1 more thing besides x
, y
values. need ecparameterspec
! ecparameterspec
describes elliptic curve using , app has use same ecparameterspec
backend does!
with x
, y
values can create ecpoint
instance , ecparameterspec
can create ecpublickeyspec
:
ecparameterspec ecparameters = ...; biginteger x = ...; biginteger y = ...; ecpoint ecpoint = new ecpoint(x, y); ecpublickeyspec keyspec = new ecpublickeyspec(ecpoint, ecparameters);
and ecpublickeyspec
can generate publickey
using keyfactory
:
keyfactory keyfactory = keyfactory.getinstance("ec"); publickey publickey = keyfactory.generatepublic(keyspec);
you can find more information topic here.
Comments
Post a Comment