~noskcaj/ubuntu/saucy/sflphone/merge-1.2.3-2

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject/third_party/srtp/crypto/include/rdb.h

  • Committer: Jackson Doak
  • Date: 2013-07-10 21:04:46 UTC
  • mfrom: (20.1.3 sid)
  • Revision ID: noskcaj@ubuntu.com-20130710210446-y8f587vza807icr9
Properly merged from upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
#ifndef REPLAY_DB_H
12
 
#define REPLAY_DB_H
13
 
 
14
 
#include "integers.h"         /* for uint32_t     */
15
 
#include "datatypes.h"        /* for v128_t       */
16
 
#include "err.h"              /* for err_status_t */
17
 
 
18
 
/*
19
 
 * if the ith least significant bit is one, then the packet index
20
 
 * window_end-i is in the database
21
 
 */
22
 
 
23
 
typedef struct {
24
 
  uint32_t window_start;   /* packet index of the first bit in bitmask */
25
 
  v128_t bitmask;  
26
 
} rdb_t;
27
 
 
28
 
#define rdb_bits_in_bitmask (8*sizeof(v128_t))   
29
 
 
30
 
/*
31
 
 * rdb init
32
 
 *
33
 
 * initalizes rdb
34
 
 *
35
 
 * returns err_status_ok on success, err_status_t_fail otherwise
36
 
 */
37
 
 
38
 
err_status_t
39
 
rdb_init(rdb_t *rdb);
40
 
 
41
 
 
42
 
/*
43
 
 * rdb_check
44
 
 *
45
 
 * checks to see if index appears in rdb
46
 
 *
47
 
 * returns err_status_fail if the index already appears in rdb,
48
 
 * returns err_status_ok otherwise
49
 
 */
50
 
 
51
 
err_status_t
52
 
rdb_check(const rdb_t *rdb, uint32_t index);  
53
 
 
54
 
/*
55
 
 * rdb_add_index
56
 
 *
57
 
 * adds index to rdb_t (and does *not* check if index appears in db)
58
 
 *
59
 
 * returns err_status_ok on success, err_status_fail otherwise
60
 
 *
61
 
 */
62
 
 
63
 
err_status_t
64
 
rdb_add_index(rdb_t *rdb, uint32_t index);
65
 
 
66
 
/*
67
 
 * the functions rdb_increment() and rdb_get_value() are for use by 
68
 
 * senders, not receivers - DO NOT use these functions on the same
69
 
 * rdb_t upon which rdb_add_index is used!
70
 
 */
71
 
 
72
 
 
73
 
/*
74
 
 * rdb_increment(db) increments the sequence number in db, if it is 
75
 
 * not too high
76
 
 *
77
 
 * return values:
78
 
 * 
79
 
 *    err_status_ok            no problem
80
 
 *    err_status_key_expired   sequence number too high
81
 
 *
82
 
 */
83
 
err_status_t
84
 
rdb_increment(rdb_t *rdb);
85
 
 
86
 
/*
87
 
 * rdb_get_value(db) returns the current sequence number of db
88
 
 */
89
 
 
90
 
uint32_t
91
 
rdb_get_value(const rdb_t *rdb);
92
 
 
93
 
 
94
 
#endif /* REPLAY_DB_H */