"Fossies" - the Fresh Open Source Software Archive

Member "openvpn-2.4.7/src/openvpn/session_id.c" (20 Feb 2019, 1975 Bytes) of package /windows/misc/openvpn-2.4.7.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "session_id.c" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 2.4.4_vs_2.4.5.

    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-2018 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 #elif defined(_MSC_VER)
   36 #include "config-msvc.h"
   37 #endif
   38 
   39 #include "syshead.h"
   40 
   41 #ifdef ENABLE_CRYPTO
   42 
   43 #include "error.h"
   44 #include "common.h"
   45 #include "crypto.h"
   46 #include "session_id.h"
   47 
   48 #include "memdbg.h"
   49 
   50 const struct session_id x_session_id_zero;
   51 
   52 void
   53 session_id_random(struct session_id *sid)
   54 {
   55     prng_bytes(sid->id, SID_SIZE);
   56 }
   57 
   58 const char *
   59 session_id_print(const struct session_id *sid, struct gc_arena *gc)
   60 {
   61     return format_hex(sid->id, SID_SIZE, 0, gc);
   62 }
   63 
   64 #else  /* ifdef ENABLE_CRYPTO */
   65 static void
   66 dummy(void)
   67 {
   68 }
   69 #endif /* ENABLE_CRYPTO */