I want to make DH-like key exchange calculating something like this:

b = H(b0B1B2)

But the problem is multiplication between two ec-points is not defined on ec-curve.

I know monero makes some transformations like public key -> secret key here https://github.com/monero-project/monero/blob/4b728d7dd48584987f53995a141baac4f886f017/src/multisig/multisig.cpp#L77:

  rct::key sk = rct::scalarmultKey(rct::pk2rct(k), rct::sk2rct(blinded_skey));
  crypto::secret_key msk = get_multisig_blinded_secret_key(rct::rct2sk(sk));

Can I use the same trick? Is it secure?

  • 2
    There is no such thing as multiplying two EC points together. You can only add EC points, or multiply an EC point with a scalar. You can hash an EC point to produce a scalar. Can you elaborate on what you're trying to achieve? A 3-way DH exchange? If so, see crypto.stackexchange.com/questions/1025/…
    – knaccc
    May 17, 2018 at 15:35

1 Answer 1


knacc is right - there's no way no just multiply to ec-points. I solved my problem by making key exchange:

b = b0b1B2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.