LibreSSL

Version: v3.8.2
Docs:

Primitives

Supports ECDH, ECDSA as well as x25519 and Ed25519.

ECDH

KeyGen:
  • Short-Weierstrass

  • Simple Ladder via kmethod.keygen -> ec_key_gen -> EC_POINT_mul -> method.mul_generator_ct -> ec_GFp_simple_mul_generator_ct -> ec_GFp_simple_mul_ct. Also does coordinate blinding and fixes scalar bit-length.

  • Jacobian coordinates.

  • Unknown formulas: add-libressl-v382, dbl-libressl-v382

Derive:
  • Short-Weierstrass

  • Simple Ladder via kmethod.compute_key -> ecdh_compute_key -> EC_POINT_mul -> method.mul_single_ct -> ec_GFp_simple_mul_single_ct -> ec_GFp_simple_mul_ct. Also does coordinate blinding and fixes scalar bit-length.

  • Same as KeyGen.

ECDSA

KeyGen:
  • Same as ECDH.

Sign:
  • Short-Weierstrass

  • Simple Ladder via ECDSA_sign -> kmethod.sign -> ecdsa_sign -> ECDSA_do_sign -> kmethod.sign_sig -> ecdsa_sign_sig -> ECDSA_sign_setup -> kmethod.sign_setup -> ecdsa_sign_setup -> EC_POINT_mul -> method.mul_generator_ct -> ec_GFp_simple_mul_generator_ct -> ec_GFp_simple_mul_ct.

  • Same as ECDH.

Verify:

X25519

Based on ref10 of Ed25519. See BoringSSL. Not exactly the same.

Ed25519

Based on ref10 of Ed25519. See BoringSSL. Not exactly the same.