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.11 by pcg, Wed Oct 22 01:05:23 2003 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);
48/* 52/*
49 * check wether the given path is an absolute pathname 53 * check wether the given path is an absolute pathname
50 */ 54 */
51#define ABSOLUTE_PATH(c) ((c)[0] == '/') 55#define ABSOLUTE_PATH(c) ((c)[0] == '/')
52 56
53static inline void 57/*****************************************************************************/
54id2mac (unsigned int id, void *m)
55{
56 mac &p = *(mac *)m;
57 58
58 p[0] = 0xfe; 59typedef 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 60
61extern void id2mac (unsigned int id, void *m);
62
66#define mac2id(p) (p[0] & 0x01 ? 0 : (p[4] << 8) | p[5]) 63#define mac2id(p) ((p)[0] & 0x01 ? 0 : ((p)[4] << 8) | (p)[5])
67 64
68struct sliding_window { 65struct sliding_window {
69 u32 v[(WINDOWSIZE + 31) / 32]; 66 u32 v[(WINDOWSIZE + 31) / 32];
70 u32 seq; 67 u32 seq;
71 68
113 } 110 }
114 } 111 }
115 } 112 }
116}; 113};
117 114
118typedef callback<const char *, int> run_script_cb; 115typedef callback0<const char *> run_script_cb;
119 116
120// run a shell script (or actually an external program). 117// run a shell script (or actually an external program).
121void run_script (const run_script_cb &cb, bool wait); 118void run_script (const run_script_cb &cb, bool wait);
122 119
120#if ENABLE_HTTP_PROXY
121u8 *base64_encode (const u8 *data, unsigned int len);
123#endif 122#endif
124 123
124/*****************************************************************************/
125
126typedef u8 rsaclear[RSA_KEYLEN - RSA_OVERHEAD]; // challenge data;
127typedef u8 rsacrypt[RSA_KEYLEN]; // encrypted challenge
128
129static inline void
130rsa_encrypt (RSA *key, const rsaclear &chg, rsacrypt &encr)
131{
132 if (RSA_public_encrypt (sizeof chg,
133 (unsigned char *)&chg, (unsigned char *)&encr,
134 key, RSA_PKCS1_OAEP_PADDING) < 0)
135 fatal ("RSA_public_encrypt error");
136}
137
138static inline bool
139rsa_decrypt (RSA *key, const rsacrypt &encr, rsaclear &chg)
140{
141 return RSA_private_decrypt (sizeof encr,
142 (unsigned char *)&encr, (unsigned char *)&chg,
143 key, RSA_PKCS1_OAEP_PADDING) > 0;
144}
145
146#endif
147

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines