netwerk/srtp/src/crypto/include/rdb.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2  * replay-database.h
     3  *
     4  * interface for a replay database for packet security
     5  *
     6  * David A. McGrew
     7  * Cisco Systems, Inc.
     8  */
     9 /*
    10  *	
    11  * Copyright (c) 2001-2006, Cisco Systems, Inc.
    12  * All rights reserved.
    13  * 
    14  * Redistribution and use in source and binary forms, with or without
    15  * modification, are permitted provided that the following conditions
    16  * are met:
    17  * 
    18  *   Redistributions of source code must retain the above copyright
    19  *   notice, this list of conditions and the following disclaimer.
    20  * 
    21  *   Redistributions in binary form must reproduce the above
    22  *   copyright notice, this list of conditions and the following
    23  *   disclaimer in the documentation and/or other materials provided
    24  *   with the distribution.
    25  * 
    26  *   Neither the name of the Cisco Systems, Inc. nor the names of its
    27  *   contributors may be used to endorse or promote products derived
    28  *   from this software without specific prior written permission.
    29  * 
    30  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    31  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    32  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
    33  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
    34  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
    35  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    36  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    37  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    40  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
    41  * OF THE POSSIBILITY OF SUCH DAMAGE.
    42  *
    43  */
    46 #ifndef REPLAY_DB_H
    47 #define REPLAY_DB_H
    49 #include "integers.h"         /* for uint32_t     */
    50 #include "datatypes.h"        /* for v128_t       */
    51 #include "err.h"              /* for err_status_t */
    53 /*
    54  * if the ith least significant bit is one, then the packet index
    55  * window_end-i is in the database
    56  */
    58 typedef struct {
    59   uint32_t window_start;   /* packet index of the first bit in bitmask */
    60   v128_t bitmask;  
    61 } rdb_t;
    63 #define rdb_bits_in_bitmask (8*sizeof(v128_t))   
    65 /*
    66  * rdb init
    67  *
    68  * initalizes rdb
    69  *
    70  * returns err_status_ok on success, err_status_t_fail otherwise
    71  */
    73 err_status_t
    74 rdb_init(rdb_t *rdb);
    77 /*
    78  * rdb_check
    79  *
    80  * checks to see if index appears in rdb
    81  *
    82  * returns err_status_fail if the index already appears in rdb,
    83  * returns err_status_ok otherwise
    84  */
    86 err_status_t
    87 rdb_check(const rdb_t *rdb, uint32_t rdb_index);  
    89 /*
    90  * rdb_add_index
    91  *
    92  * adds index to rdb_t (and does *not* check if index appears in db)
    93  *
    94  * returns err_status_ok on success, err_status_fail otherwise
    95  *
    96  */
    98 err_status_t
    99 rdb_add_index(rdb_t *rdb, uint32_t rdb_index);
   101 /*
   102  * the functions rdb_increment() and rdb_get_value() are for use by 
   103  * senders, not receivers - DO NOT use these functions on the same
   104  * rdb_t upon which rdb_add_index is used!
   105  */
   108 /*
   109  * rdb_increment(db) increments the sequence number in db, if it is 
   110  * not too high
   111  *
   112  * return values:
   113  * 
   114  *    err_status_ok            no problem
   115  *    err_status_key_expired   sequence number too high
   116  *
   117  */
   118 err_status_t
   119 rdb_increment(rdb_t *rdb);
   121 /*
   122  * rdb_get_value(db) returns the current sequence number of db
   123  */
   125 uint32_t
   126 rdb_get_value(const rdb_t *rdb);
   129 #endif /* REPLAY_DB_H */ 

mercurial