Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Release 1.0
[palacios.git] / geekos / src / lwip / netif / ppp / randm.h
1 /*****************************************************************************
2 * randm.h - Random number generator header file.
3 *
4 * Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.
5 * Copyright (c) 1998 Global Election Systems Inc.
6 *
7 * The authors hereby grant permission to use, copy, modify, distribute,
8 * and license this software and its documentation for any purpose, provided
9 * that existing copyright notices are retained in all copies and that this
10 * notice and the following disclaimer are included verbatim in any 
11 * distributions. No written agreement, license, or royalty fee is required
12 * for any of the authorized uses.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR
15 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
17 * IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 *
25 ******************************************************************************
26 * REVISION HISTORY
27 *
28 * 03-01-01 Marc Boucher <marc@mbsi.ca>
29 *   Ported to lwIP.
30 * 98-05-29 Guy Lancaster <glanca@gesn.com>, Global Election Systems Inc.
31 *   Extracted from avos.
32 *****************************************************************************/
33
34 #ifndef RANDM_H
35 #define RANDM_H
36
37 /***********************
38 *** PUBLIC FUNCTIONS ***
39 ***********************/
40 /*
41  * Initialize the random number generator.
42  */
43 void avRandomInit(void);
44
45 /*
46  * Churn the randomness pool on a random event.  Call this early and often
47  * on random and semi-random system events to build randomness in time for
48  * usage.  For randomly timed events, pass a null pointer and a zero length
49  * and this will use the system timer and other sources to add randomness.
50  * If new random data is available, pass a pointer to that and it will be
51  * included.
52  */
53 void avChurnRand(char *randData, u32_t randLen);
54
55 /*
56  * Randomize our random seed value.  To be called for truely random events
57  * such as user operations and network traffic.
58  */
59 #if MD5_SUPPORT
60 #define avRandomize() avChurnRand(NULL, 0)
61 #else  /* MD5_SUPPORT */
62 void avRandomize(void);
63 #endif /* MD5_SUPPORT */
64
65 /*
66  * Use the random pool to generate random data.  This degrades to pseudo
67  * random when used faster than randomness is supplied using churnRand().
68  * Thus it's important to make sure that the results of this are not
69  * published directly because one could predict the next result to at
70  * least some degree.  Also, it's important to get a good seed before
71  * the first use.
72  */
73 void avGenRand(char *buf, u32_t bufLen);
74
75 /*
76  * Return a new random number.
77  */
78 u32_t avRandom(void);
79
80
81 #endif /* RANDM_H */