ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/src/util.h
(Generate patch)

Comparing gvpe/src/util.h (file contents):
Revision 1.5 by pcg, Wed Apr 2 03:06:22 2003 UTC vs.
Revision 1.12 by pcg, Mon May 10 20:13:10 2004 UTC

1/* 1/*
2 util.h -- process management and other utility functions 2 util.h -- process management and other utility functions
3 Copyright (C) 1998-2002 Ivo Timmermans <ivo@o2w.nl> 3 Copyright (C) 1998-2002 Ivo Timmermans <ivo@o2w.nl>
4 2000-2002 Guus Sliepen <guus@sliepen.eu.org> 4 2000-2002 Guus Sliepen <guus@sliepen.eu.org>
5 2003 Marc Lehmannn <pcg@goof.com> 5 2003 Marc Lehmann <pcg@goof.com>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
20*/ 20*/
21 21
22#ifndef UTIL_H__ 22#ifndef UTIL_H__
23#define UTIL_H__ 23#define UTIL_H__
24 24
25#include <openssl/rsa.h>
26
27#include "gettext.h"
28
29#include "slog.h"
25#include "iom.h" 30#include "iom.h"
26#include "device.h"
27 31
28/* 32/*
29 * check for an existing vped for this net, and write pid to pidfile 33 * check for an existing vped for this net, and write pid to pidfile
30 */ 34 */
31extern int write_pidfile (void); 35extern int write_pidfile (void);
39 * Detach from current terminal, write pidfile, kill parent 43 * Detach from current terminal, write pidfile, kill parent
40 */ 44 */
41extern int detach (int do_detach); 45extern int detach (int do_detach);
42 46
43/* 47/*
44 * Set all files and paths according to netname
45 */
46extern void make_names (void);
47
48/*
49 * check wether the given path is an absolute pathname 48 * check wether the given path is an absolute pathname
50 */ 49 */
51#define ABSOLUTE_PATH(c) ((c)[0] == '/') 50#define ABSOLUTE_PATH(c) ((c)[0] == '/')
52 51
53static inline void 52/*****************************************************************************/
54id2mac (unsigned int id, void *m)
55{
56 mac &p = *(mac *)m;
57 53
58 p[0] = 0xfe; 54typedef u8 mac[6];
59 p[1] = 0xfd;
60 p[2] = 0x80;
61 p[3] = 0x00;
62 p[4] = id >> 8;
63 p[5] = id;
64}
65 55
56extern void id2mac (unsigned int id, void *m);
57
66#define mac2id(p) (p[0] & 0x01 ? 0 : (p[4] << 8) | p[5]) 58#define mac2id(p) ((p)[0] & 0x01 ? 0 : ((p)[4] << 8) | (p)[5])
67 59
68struct sliding_window { 60struct sliding_window {
69 u32 v[(WINDOWSIZE + 31) / 32]; 61 u32 v[(WINDOWSIZE + 31) / 32];
70 u32 seq; 62 u32 seq;
71 63
113 } 105 }
114 } 106 }
115 } 107 }
116}; 108};
117 109
118typedef callback<const char *, int> run_script_cb; 110typedef callback0<const char *> run_script_cb;
119 111
120// run a shell script (or actually an external program). 112// run a shell script (or actually an external program).
121void run_script (const run_script_cb &cb, bool wait); 113void run_script (const run_script_cb &cb, bool wait);
122 114
115#if ENABLE_HTTP_PROXY
116u8 *base64_encode (const u8 *data, unsigned int len);
123#endif 117#endif
124 118
119/*****************************************************************************/
120
121typedef u8 rsaclear[RSA_KEYLEN - RSA_OVERHEAD]; // challenge data;
122typedef u8 rsacrypt[RSA_KEYLEN]; // encrypted challenge
123
124static inline void
125rsa_encrypt (RSA *key, const rsaclear &chg, rsacrypt &encr)
126{
127 if (RSA_public_encrypt (sizeof chg,
128 (unsigned char *)&chg, (unsigned char *)&encr,
129 key, RSA_PKCS1_OAEP_PADDING) < 0)
130 fatal ("RSA_public_encrypt error");
131}
132
133static inline bool
134rsa_decrypt (RSA *key, const rsacrypt &encr, rsaclear &chg)
135{
136 return RSA_private_decrypt (sizeof encr,
137 (unsigned char *)&encr, (unsigned char *)&chg,
138 key, RSA_PKCS1_OAEP_PADDING) > 0;
139}
140
141#endif
142

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines