| =pod |
| {- OpenSSL::safe::output_do_not_edit_headers(); -} |
| |
| =head1 NAME |
| |
| openssl-ech - ECH key generation |
| |
| =head1 SYNOPSIS |
| |
| B<openssl> B<ech> |
| [B<-help>] |
| [B<-verbose>] |
| [B<-in> I<files>] |
| [B<-out> I<file>] |
| [B<-public_name> I<name>] |
| [B<-max_name_len> I<len>] |
| [B<-suite> I<suite_str>] |
| [B<-ech_version> I<version>] |
| [B<-select> I<number>] |
| [B<-text>] |
| |
| =head1 DESCRIPTION |
| |
| The L<openssl-ech(1)> command generates Encrypted Client Hello (ECH) key pairs |
| in the ECHConfig PEM file format as specified in |
| L<https://datatracker.ietf.org/doc/rfc9934>. |
| |
| That format consists of an optional private key in PKCS#8 format and a base64 |
| encoded ECHConfigList containing an entry with a matching public value (and |
| possibly other entries as well). |
| |
| =head1 OPTIONS |
| |
| The following options are supported: |
| |
| =over 4 |
| |
| =item B<-help> |
| |
| Print out a usage message. |
| |
| =item B<-verbose> |
| |
| Print more verbosely. |
| |
| =item B<-in> |
| |
| Provide an input ECH PEM file for printing or merging. Up to five |
| input files can be provided via use of multiple B<in> arguments. |
| |
| =item B<-out> I<file> |
| |
| Name of output ECHConfig PEM file. If a new key pair was generated the output |
| file will contain the private key and encoded ECHConfigList. If one or more |
| input files was provided the output file will contain a set of ECHConfigList |
| values with public keys from the inputs, and no private key(s). |
| |
| =item B<-text> |
| |
| Provide human-readable text output. |
| |
| =item B<-public_name> I<name> |
| |
| The DNS name to use in the "public_name" field of the ECHConfig. |
| |
| =item B<-max_name_len> I<num> |
| |
| Maximum name length field value to use in the ECHConfig. |
| |
| =item B<-suite> I<str> |
| |
| HPKE suite to use in the ECHConfig. |
| |
| =item B<-ech_version> I<version> |
| |
| The ECH version to use in the ECHConfig. Only 0xfe0d is supported in this version. |
| |
| =item B<-select> I<number> |
| |
| Select the N-th ECHConfig/public key from the set of input ECH PEM files and output |
| that. |
| |
| =back |
| |
| =head1 NOTES |
| |
| Ciphersuites are specified using a comma-separated list of IANA-registered |
| codes/numbers e.g. "-c 0x20,1,3" or a comma-separated list of strings from: |
| - KEMs: p256, p384, p521, x25519, x448 |
| - KDFs: hkdf-sha256, hkdf-sha384, hkdf-sha512 |
| - AEADs: aes128gcm, aes256gcm, chachapoly1305 |
| |
| For example the default is: x25519, hkdf-sha256, aes128gcm |
| See L<OSSL_HPKE_CTX_new(3)> for details. |
| |
| =head1 SEE ALSO |
| |
| L<openssl(1)>, |
| L<openssl-s_client(1)>, |
| L<openssl-s_server(1)>, |
| L<SSL_set1_echstore(3)> |
| |
| =head1 HISTORY |
| |
| This functionality described here was added in OpenSSL 4.0. |
| |
| =head1 COPYRIGHT |
| |
| Copyright 2024 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 |
| L<https://www.openssl.org/source/license.html>. |
| |
| =cut |