mirror of https://github.com/openssl/openssl.git
59 lines
2.0 KiB
C
59 lines
2.0 KiB
C
/*
|
|
* Copyright 2024 The OpenSSL Project Authors. All Rights Reserved.
|
|
* Licensed under the OpenSSL license (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
|
|
*/
|
|
|
|
/*
|
|
* These functions are ECH helpers that are used within the library but
|
|
* also by ECH test code.
|
|
*/
|
|
|
|
#ifndef OPENSSL_ECH_HELPERS_H
|
|
# define OPENSSL_ECH_HELPERS_H
|
|
# pragma once
|
|
|
|
# ifndef OPENSSL_NO_ECH
|
|
|
|
/*
|
|
* the max HPKE 'info' we'll process is the max ECHConfig size
|
|
* (OSSL_ECH_MAX_ECHCONFIG_LEN) plus OSSL_ECH_CONTEXT_STRING(len=7) + 1
|
|
*/
|
|
# define OSSL_ECH_MAX_INFO_LEN (OSSL_ECH_MAX_ECHCONFIG_LEN + 8)
|
|
|
|
int ossl_ech_make_enc_info(const unsigned char *encoding,
|
|
size_t encoding_length,
|
|
unsigned char *info, size_t *info_len);
|
|
|
|
/*
|
|
* Given a CH find the offsets of the session id, extensions and ECH
|
|
* ch is the encoded client hello
|
|
* ch_len is the length of ch
|
|
* sessid_off returns offset of session_id length
|
|
* exts_off points to offset of extensions
|
|
* exts_len returns length of extensions
|
|
* ech_off returns offset of ECH
|
|
* echtype returns the ext type of the ECH
|
|
* ech_len returns the length of the ECH
|
|
* sni_off returns offset of (outer) SNI
|
|
* sni_len returns the length of the SNI
|
|
* inner 1 if the ECH is marked as an inner, 0 for outer
|
|
* return 1 for success, other otherwise
|
|
*
|
|
* Offsets are set to zero if relevant thing not found.
|
|
* Offsets are returned to the type or length field in question.
|
|
*
|
|
* Note: input here is untrusted!
|
|
*/
|
|
int ossl_ech_helper_get_ch_offsets(const unsigned char *ch, size_t ch_len,
|
|
size_t *sessid_off, size_t *exts_off,
|
|
size_t *exts_len,
|
|
size_t *ech_off, uint16_t *echtype,
|
|
size_t *ech_len, size_t *sni_off,
|
|
size_t *sni_len, int *inner);
|
|
|
|
# endif
|
|
#endif
|