Packages
hackney
3.0.0
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Retired package: Release invalid - Use 3.0.1 instead
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/lsquic/src/liblsquic/lsquic_tokgen.h
/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */
#ifndef LSQUIC_TOKEN_H
#define LSQUIC_TOKEN_H 1
struct lsquic_engine_public;
struct sockaddr;
struct lsquic_packet_in;
struct lsquic_cid;
enum token_type { TOKEN_RETRY, TOKEN_RESUME, N_TOKEN_TYPES, };
struct token_generator;
struct token_generator *
lsquic_tg_new (struct lsquic_engine_public *);
void
lsquic_tg_destroy (struct token_generator *);
/* `reset_token' must be IQUIC_SRESET_TOKEN_SZ bytes in length */
void
lsquic_tg_generate_sreset (struct token_generator *,
const struct lsquic_cid *cid, unsigned char *reset_token);
/* Retry and Resume tokens have identical sizes. Use *RETRY* macros
* for both.
*/
#define RETRY_TAG_LEN 16
/* Type is encoded in the nonce */
#define RETRY_NONCE_LEN 12
#define MAX_RETRY_TOKEN_LEN (RETRY_NONCE_LEN + 1 /* version */ + \
sizeof(time_t) /* time */ + 1 /* IPv4 or IPv6 */ + \
16 /* IPv6 or IPv4 address */ + 2 /* Port number */ + MAX_CID_LEN + \
RETRY_TAG_LEN)
/* Need this to make sure we have enough bytes for Bloom filter functions */
#define MIN_RESUME_TOKEN_LEN (RETRY_NONCE_LEN + 1 /* version */ + \
sizeof(time_t) /* time */ + 1 /* IPv4 or IPv6 */ + \
4 /* IPv4 address */ + 0 /* No port number */ + 0 /* No CID */ + \
RETRY_TAG_LEN)
ssize_t
lsquic_tg_generate_retry (struct token_generator *,
unsigned char *buf, size_t bufsz,
const unsigned char *scid_buf, size_t scid_len,
const struct sockaddr *sa_peer, const struct lsquic_cid *odcid);
ssize_t
lsquic_tg_generate_resume (struct token_generator *,
unsigned char *buf, size_t bufsz,
const struct sockaddr *sa_peer);
int
lsquic_tg_validate_token (struct token_generator *,
const struct lsquic_packet_in *, const struct sockaddr *,
struct lsquic_cid *);
size_t
lsquic_tg_token_size (const struct token_generator *tokgen,
enum token_type token_type, const struct sockaddr *sa_peer);
#endif