Makefile patches by Bruno added
[olsrd.git] / lib / secure / src / olsrd_secure.h
1 /*
2  * Secure OLSR plugin
3  * http://www.olsr.org
4  *
5  * Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or 
9  * without modification, are permitted provided that the following 
10  * conditions are met:
11  *
12  * * Redistributions of source code must retain the above copyright 
13  *   notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above copyright 
15  *   notice, this list of conditions and the following disclaimer in 
16  *   the documentation and/or other materials provided with the 
17  *   distribution.
18  * * Neither the name of olsrd, olsr.org nor the names of its 
19  *   contributors may be used to endorse or promote products derived 
20  *   from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
26  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
32  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
33  *POSSIBILITY OF SUCH DAMAGE.
34  *
35  */
36
37 /*
38  * Dynamic linked library example for UniK OLSRd
39  */
40
41 #ifndef _OLSRD_PLUGIN_TEST
42 #define _OLSRD_PLUGIN_TEST
43
44 #include "olsrd_plugin.h"
45
46 #define KEYFILE "/root/.olsr/olsrd_secure_key"
47
48 /* Schemes */
49 #define ONE_CHECKSUM          1
50
51 /* Algorithm definitions */
52 #define SHA1_INCLUDING_KEY   1
53
54 #define MAXMESSAGESIZE 512
55
56 #define SIGNATURE_SIZE 20
57 #define KEYLENGTH      16
58
59 #define UPPER_DIFF 3
60 #define LOWER_DIFF -3
61
62 char aes_key[16];
63 /* Seconds of slack allowed */
64 #define SLACK 3
65
66 /* Timestamp node */
67 struct stamp
68 {
69   union olsr_ip_addr addr;
70   /* Timestamp difference */
71   int diff;
72   olsr_u32_t challenge;
73   olsr_u8_t validated;
74   struct timeval valtime; /* Validity time */
75   struct timeval conftime; /* Reconfiguration time */
76   struct stamp *prev;
77   struct stamp *next;
78 };
79
80 /* Seconds to cache a valid timestamp entry */
81 #define TIMESTAMP_HOLD_TIME 30
82 /* Seconds to cache a not verified timestamp entry */
83 #define EXCHANGE_HOLD_TIME 5
84
85 struct stamp timestamps[HASHSIZE];
86
87 char checksum_cache[512 + KEYLENGTH];
88
89 /* Input interface */
90 struct interface *olsr_in_if;
91
92 /* Timeout function to register with the sceduler */
93 void
94 olsr_timeout();
95
96
97 /* Event function to register with the sceduler */
98 void
99 olsr_event();
100
101 int
102 send_challenge(union olsr_ip_addr *);
103
104 int
105 ifchange(struct interface *, int);
106
107 int
108 send_cres(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u32_t, struct stamp *);
109
110 int
111 send_rres(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u32_t);
112
113 int
114 parse_challenge(char *);
115
116 int
117 parse_cres(char *);
118
119 int
120 parse_rres(char *);
121
122 int
123 check_auth(char *, int *);
124
125 void
126 ipc_action(int);
127
128 int
129 ipc_send(char *, int);
130
131 int
132 add_signature(char *, int*);
133
134 int
135 validate_packet(char *, int*);
136
137 void
138 packet_parser(int);
139
140 void
141 timeout_timestamps();
142
143 int
144 check_timestamp(union olsr_ip_addr *, time_t);
145
146 struct stamp *
147 lookup_timestamp_entry(union olsr_ip_addr *);
148
149 int
150 read_key_from_file(char *);
151
152 #endif