BoringSSL

Primitives

Supports P-224, P-256, P-384 and P-521. Also Curve25519. Uses fiat-crypto for the SECP curve field arithmetic and x25519.

P-224

P-256

P-384

  • Uses defaults (described below).

P-521

  • Uses defaults (described below).

ECDH

KeyGen:
Derive:

ECDSA

KeyGen:
Sign:
Verify:

X25519

KeyGen:
  • Twisted-Edwards

  • ?? via X25519_keypair -> X25519_public_from_private -> x25519_ge_scalarmult_base.

  • Has multiple coordinate systems: projective, extended, completed, Duif

  • Unknown formulas. dbl, add

Derive:
  • Montgomery

  • Ladder via X25519 -> x25519_scalar_mult -> x25519_NEON/x25519_scalar_mult_adx/x25519_scalar_mult_generic

  • xz.

  • Unknown formula: ladd-boringssl-x25519 from fiat-crypto.

Ed25519

Based on ref10 of Ed25519.

KeyGen:
  • Twisted-Edwards

  • ?? via ED25519_keypair -> ED25519_keypair_from_seed -> x25519_ge_scalarmult_base.

  • Has multiple coordinate systems: projective, extended, completed, Duif

  • Unknown formulas. dbl, add

Sign:
  • Twisted-Edwards

  • ?? via ED25519_sign -> ED25519_keypair_from_seed -> x25519_ge_scalarmult_base.

  • Has multiple coordinate systems: projective, extended, completed, Duif

  • Unknown formulas. dbl, add

Verify:
  • Twisted-Edwards

  • Sliding window (signed) with interleaving? via ED25519_verify -> ge_double_scalarmult_vartime.

  • Has multiple coordinate systems: projective, extended, completed, Duif

  • Unknown formulas. dbl, add