I tried searching online but can't seem to find whether or not OpenSSL support both NamedCurve.arbitrary_explicit_prime_curves and NamedCurve.arbitrary_explicit_char2_curves? As far as I can tell bouncy castle are the only SSL/TLS implementation that supports it, any others that anyone known of?

  • 1
    openssl ciphers will list supported ECC ciphers. openssl ecparam -list_curves will list the specific curves. But the names you refer to I don't recognise in the openssl list. Even if openssl does support your curves under a different name, they might only be available for s_client mode (i.e. SSL/TLS but not files). And GnuPG 2.1 with ECC hasn't been released yet. Oct 17, 2013 at 10:46

1 Answer 1


The code for arbitrary curves is in the library; see the source code, file crypto/ec/ec_lcl.h, in particular function ec_GFp_simple_group_set_curve(). The OpenSSL code includes specialized function for some specific curves (in particular NIST curves) but also has functions for the general case.

Code for encoding and decoding arbitrary curve parameters in ASN.1 (e.g. for use with a public key in an X.509 certificate) also appears to be present (in crypto/ec/ec_asn1.c). However, I doubt this code gets much used, since most of the rest of the world supports only a few specific curves; so even if the code is there, it was probably not thoroughly tested.

  • But it seems like we can't use arbitrary curves for SSL/TLS connection. Or am I right?
    – Ryu
    Oct 18, 2013 at 1:28
  • 1
    Arbitrary curves are supported at the protocol level (see RFC 4492, section 5.4) but I am not sure whether OpenSSL implements it. The EC code is there (at least for prime fields), but maybe not the glue at the TLS level. Of course, if you control both sides, you could just define your own "named curve".
    – Tom Leek
    Oct 18, 2013 at 11:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .