OPENSSL-ECPARAM(1ossl)

πŸ“¦
version 15.1 Β· 2 versions
, in freebsd 15.1

πŸ’… OPENSSL-ECPARAM (1ossl) β€” like, the OpenSSL manual, bestie edition ✨

okay so real talk, this is the openssl-ecparam page from the OpenSSL manual. it's giving "niche but iconic" β€” if you've ever needed to poke at elliptic curve parameters, this is your girl. let's go πŸŽ€


🌸 NAME 🌸

openssl-ecparam β€” EC parameter manipulation and generation. yes bestie, manipulation. we're out here doing things to elliptic curves πŸ’…


✨ SYNOPSIS ✨

openssl ecparam [-help] [-inform DER|PEM] [-outform DER|PEM] [-in
filename] [-out filename] [-noout] [-text] [-check] [-check_named]
[-name arg] [-list_curves] [-conv_form arg] [-param_enc arg] [-no_seed]
[-genkey] [-engine id] [-rand files] [-writerand file] [-provider name]
[-provider-path path] [-provparam [name:]key=value] [-propquery propq]

πŸ¦‹ DESCRIPTION πŸ¦‹

so what does this command do, you ask? it manipulates or generates EC parameter files. that's the whole vibe. 🫢

but here's the tea, and it's important: OpenSSL is currently not able to generate new groups, so this command can only create EC parameters from known (named) curves. no inventing new curves from scratch, bestie β€” we work with what we've got 😭


πŸ’– OPTIONS πŸ’–

bestie there are a LOT of these and we are NOT skipping any. every single one, periodt. πŸ“‹

  • -help β€” prints out a usage message. the classic "what do i even do here" button πŸ™ˆ
  • -inform DER|PEM β€” the EC parameters input format. unspecified by default. see openssl-format-options(1) for the deets πŸ’…
  • -outform DER|PEM β€” the EC parameters output format, and the default is PEM. also see openssl-format-options(1) for details. parameters get encoded as EcpkParameters as specified in IETF RFC 3279. iykyk ✨
  • -in filename β€” specifies the input file to read parameters from, or standard input if you don't specify this option. no file? stdin it is πŸŽ€
  • -out filename β€” specifies the output filename for parameters. standard output is used if this option isn't present. here's the spicy bit: the output filename can be the same as the input filename, which leads to replacing the file contents. ⚠️ oh and heads up β€” file I/O is not atomic: the output file is truncated and then written. so like, don't come for me if something goes sideways mid-write πŸ’€
  • -noout β€” inhibits the output of the encoded version of the parameters. so you get to skip the ugly blob 🌸
  • -text β€” prints out the EC parameters in human readable form. for when you want to actually read them, imagine that πŸ‘‘
  • -check β€” validates the elliptic curve parameters. a little vibe check for your curve, lowkey essential ⭐
  • -check_named β€” validates the elliptic name curve parameters by checking if the curve parameters match any built-in curves. basically "do i know you?" but for curves 🧚
  • -name arg β€” use the EC parameters with the specified 'short' name. pro tip from me to you: use -list_curves to get a list of all currently implemented EC parameters πŸ¦‹
  • -list_curves β€” prints out a list of all currently implemented EC parameters names and exits. window shopping for curves, we love to see it πŸ’œ
  • -conv_form arg β€” specifies how the points on the elliptic curve get converted into octet strings. possible values are: compressed, uncompressed (that's the default, bb) and hybrid. for more info on point conversion forms, please read the X9.62 standard. πŸ“š
note: due to patent issues the compressed option is disabled by default for binary curves and can be enabled by defining the preprocessor macro OPENSSL_EC_BIN_PT_COMP at compile time. yes, patents. it's giving old drama 😭
  • -param_enc arg β€” specifies how the elliptic curve parameters are encoded. possible values are: named_curve (the ec parameters are specified by an OID) or explicit (where the ec parameters are explicitly given β€” see RFC 3279 for the definition of the EC parameters structures). the default value is named_curve. 🌈
note: the implicitlyCA alternative, as specified in RFC 3279, is currently not implemented in OpenSSL. not us forgetting, it's just not there πŸ™ˆ
  • -no_seed β€” inhibits the 'seed' for the parameter generation from being included in the ECParameters structure (see RFC 3279). seed? don't know her πŸ’…
  • -genkey β€” will generate an EC private key using the specified parameters. two for one, we love efficiency πŸ”₯
  • -engine id β€” see "Engine Options" in openssl(1). this option is deprecated, bestie. it's giving legacy πŸ’€
  • -rand files, -writerand file β€” see "Random State Options" in openssl(1) for details. randomness is a whole thing, go read it 🎲
  • -provider name
  • -provider-path path
  • -provparam [name:]key=value
  • -propquery propq β€” see "Provider Options" in openssl(1), provider(7), and property(7). provider lore, there's a lot of it πŸ“–

πŸ’‘ okay so quick PSA: the openssl-genpkey(1) and openssl-pkeyparam(1) commands are capable of performing all the operations this command can, plus they support other public key types. so like... they're kind of the upgraded versions. just saying πŸ‘€

🌟 EXAMPLES 🌟

the docs for openssl-genpkey(1) and openssl-pkeyparam(1) contain examples equivalent to the ones listed here. so you're getting the whole set, don't worry 🫢

to create EC parameters with the group 'prime192v1':

openssl ecparam -out ec_param.pem -name prime192v1

to create EC parameters with explicit parameters:

openssl ecparam -out ec_param.pem -name prime192v1 -param_enc explicit

to validate given EC parameters:

openssl ecparam -in ec_param.pem -check

to create EC parameters and a private key:

openssl ecparam -out ec_key.pem -name prime192v1 -genkey

to change the point encoding to 'compressed':

openssl ecparam -in ec_in.pem -out ec_out.pem -conv_form compressed

to print out the EC parameters to standard output:

openssl ecparam -in ec_param.pem -noout -text

slay, you did it πŸ’…βœ¨


πŸŽ€ SEE ALSO πŸŽ€

openssl(1), openssl-pkeyparam(1), openssl-genpkey(1), openssl-ec(1), openssl-dsaparam(1)

go read them, they're all part of the family 🌸


πŸ”₯ HISTORY πŸ”₯

  • the -engine option was deprecated in OpenSSL 3.0. rip to a real one πŸ•―οΈ
  • the -C option was removed in OpenSSL 3.0. literally gone, don't look for it πŸ’€

Copyright 2003-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.


and that's the whole page bestie!! πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ«Ά

this iconic piece of documentation is from OpenSSL 3.5.6, dated 2026-04-07, and honestly? it ate. no cap. see you in the next manpage, mwah 😘

πŸ“¦ where this page comes from