OpenVPN
src
openvpn
session_id.c
Go to the documentation of this file.
1
/*
2
* OpenVPN -- An application to securely tunnel IP networks
3
* over a single UDP port, with support for SSL/TLS-based
4
* session authentication and key exchange,
5
* packet encryption, packet authentication, and
6
* packet compression.
7
*
8
* Copyright (C) 2002-2024 OpenVPN Inc <sales@openvpn.net>
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License version 2
12
* as published by the Free Software Foundation.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the GNU General Public License along
20
* with this program; if not, write to the Free Software Foundation, Inc.,
21
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22
*/
23
24
/*
25
* Each session is identified by a random 8-byte session identifier.
26
*
27
* For efficiency, the session id is only transmitted over the control
28
* channel (which only sees traffic occasionally when keys are being
29
* negotiated). The data channel sees a smaller version of the session-id --
30
* it is called the key_id and is currently 2 bits long.
31
*/
32
33
#ifdef HAVE_CONFIG_H
34
#include "
config.h
"
35
#endif
36
37
#include "
syshead.h
"
38
39
#include "
error.h
"
40
#include "
common.h
"
41
#include "
crypto.h
"
42
#include "
session_id.h
"
43
44
#include "
memdbg.h
"
45
46
const
struct
session_id
x_session_id_zero
;
47
48
void
49
session_id_random
(
struct
session_id
*sid)
50
{
51
prng_bytes
(sid->
id
,
SID_SIZE
);
52
}
53
54
const
char
*
55
session_id_print
(
const
struct
session_id
*sid,
struct
gc_arena
*gc)
56
{
57
return
format_hex
(sid->
id
,
SID_SIZE
, 0, gc);
58
}
error.h
session_id_print
const char * session_id_print(const struct session_id *sid, struct gc_arena *gc)
Definition:
session_id.c:55
prng_bytes
void prng_bytes(uint8_t *output, int len)
Definition:
crypto.c:1604
session_id.h
session_id
Definition:
session_id.h:38
SID_SIZE
#define SID_SIZE
Definition:
session_id.h:45
crypto.h
syshead.h
session_id::id
uint8_t id[8]
Definition:
session_id.h:40
gc_arena
Garbage collection arena used to keep track of dynamically allocated memory.
Definition:
buffer.h:116
common.h
config.h
session_id_random
void session_id_random(struct session_id *sid)
Definition:
session_id.c:49
format_hex
static char * format_hex(const uint8_t *data, int size, int maxoutput, struct gc_arena *gc)
Definition:
buffer.h:510
memdbg.h
x_session_id_zero
const struct session_id x_session_id_zero
Definition:
session_id.c:46
Generated by
1.8.17