2020-01-09 16:52:25 +00:00
|
|
|
/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */
|
2019-09-11 15:27:58 +00:00
|
|
|
/*
|
|
|
|
* Convert from our hexdump format to binary:
|
|
|
|
*
|
|
|
|
* perl -p -ne 's/^[[:xdigit:]]+\s+//;s~ \|.*~~;s/\s+//g;s/([[:xdigit:]]{2})/chr hex$1/ge'
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <assert.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
2020-06-03 04:13:30 +00:00
|
|
|
#ifndef WIN32
|
|
|
|
#include <fcntl.h>
|
2019-09-11 15:27:58 +00:00
|
|
|
#include <unistd.h>
|
2020-06-03 04:13:30 +00:00
|
|
|
#else
|
|
|
|
#include "getopt.h"
|
|
|
|
#endif
|
2019-09-11 15:27:58 +00:00
|
|
|
|
|
|
|
#include <sys/queue.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/stat.h>
|
|
|
|
|
|
|
|
#include "lsquic.h"
|
|
|
|
#include "lsquic_types.h"
|
|
|
|
#include "lsquic_int_types.h"
|
|
|
|
#include "lsquic_packet_common.h"
|
|
|
|
#include "lsquic_packet_gquic.h"
|
|
|
|
#include "lsquic_packet_in.h"
|
|
|
|
#include "lsquic_packet_out.h"
|
|
|
|
#include "lsquic_mm.h"
|
|
|
|
#include "lsquic_hash.h"
|
|
|
|
#include "lsquic_conn.h"
|
|
|
|
#include "lsquic_rtt.h"
|
|
|
|
#include "lsquic_mini_conn.h"
|
|
|
|
#include "lsquic_engine_public.h"
|
|
|
|
#include "lsquic_util.h"
|
|
|
|
#include "lsquic_logger.h"
|
|
|
|
#include "lsquic_str.h"
|
|
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
lsquic_enc_session_decrypt (void *enc_session_p, enum lsquic_version version,
|
|
|
|
uint8_t path_id, uint64_t pack_num,
|
|
|
|
unsigned char *buf, size_t *header_len, size_t data_len,
|
|
|
|
unsigned char *diversification_nonce,
|
|
|
|
unsigned char *buf_out, size_t max_out_len, size_t *out_len)
|
|
|
|
{
|
|
|
|
memcpy(buf_out, buf, *header_len + data_len);
|
|
|
|
*out_len = data_len;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
main (int argc, char **argv)
|
|
|
|
{
|
|
|
|
int opt;
|
|
|
|
int fd = STDIN_FILENO;
|
|
|
|
struct lsquic_engine_public enpub;
|
|
|
|
struct lsquic_conn *lconn;
|
|
|
|
lsquic_packet_in_t packet_in;
|
|
|
|
unsigned char buf[0x1000];
|
|
|
|
ssize_t packet_sz;
|
2020-01-20 14:41:37 +00:00
|
|
|
enum lsquic_version ver = LSQVER_043;
|
2019-09-11 15:27:58 +00:00
|
|
|
|
|
|
|
memset(&enpub, 0, sizeof(enpub));
|
|
|
|
lsquic_mm_init(&enpub.enp_mm);
|
|
|
|
|
|
|
|
lsquic_log_to_fstream(stderr, 0);
|
|
|
|
lsq_log_levels[LSQLM_MINI_CONN] = LSQ_LOG_DEBUG;
|
|
|
|
lsq_log_levels[LSQLM_NOMODULE] = LSQ_LOG_DEBUG;
|
|
|
|
|
|
|
|
while (-1 != (opt = getopt(argc, argv, "v:f:h")))
|
|
|
|
{
|
|
|
|
switch (opt)
|
|
|
|
{
|
|
|
|
case 'v':
|
|
|
|
ver = atoi(optarg);
|
|
|
|
break;
|
|
|
|
case 'f':
|
|
|
|
fd = open(optarg, O_RDONLY);
|
|
|
|
if (fd < 0)
|
|
|
|
{
|
|
|
|
perror("open");
|
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 'h':
|
|
|
|
fprintf(stderr, "usage: %s [-v version] [-f input-file]\n", argv[0]);
|
|
|
|
exit(EXIT_SUCCESS);
|
|
|
|
default:
|
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
packet_sz = read(fd, buf, sizeof(buf));
|
|
|
|
if (packet_sz < 0)
|
|
|
|
{
|
|
|
|
perror("read");
|
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
|
|
|
|
memset(&packet_in, 0, sizeof(packet_in));
|
|
|
|
packet_in.pi_packno = 1;
|
|
|
|
packet_in.pi_header_sz = 0;
|
|
|
|
packet_in.pi_data_sz = packet_sz;
|
|
|
|
packet_in.pi_data = buf;
|
|
|
|
packet_in.pi_refcnt = 1;
|
|
|
|
|
2020-03-12 12:41:53 +00:00
|
|
|
lconn = lsquic_mini_conn_new(&enpub, &packet_in, ver);
|
2019-09-11 15:27:58 +00:00
|
|
|
lconn->cn_if->ci_packet_in(lconn, &packet_in);
|
|
|
|
|
|
|
|
exit(EXIT_SUCCESS);
|
|
|
|
}
|