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.27 by pcg, Sun Aug 10 01:34:36 2008 UTC vs.
Revision 1.32 by root, Wed Jul 17 05:34:17 2013 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-2008 Marc Lehmann <gvpe@schmorp.de> 5 2003-2013 Marc Lehmann <gvpe@schmorp.de>
6 6
7 This file is part of GVPE. 7 This file is part of GVPE.
8 8
9 GVPE is free software; you can redistribute it and/or modify it 9 GVPE is free software; you can redistribute it and/or modify it
10 under the terms of the GNU General Public License as published by the 10 under the terms of the GNU General Public License as published by the
42#include "gettext.h" 42#include "gettext.h"
43 43
44#include "slog.h" 44#include "slog.h"
45#include "ev_cpp.h" 45#include "ev_cpp.h"
46#include "callback.h" 46#include "callback.h"
47#include "global.h"
47 48
48typedef ev_tstamp tstamp; 49typedef ev_tstamp tstamp;
49 50
50/* 51/*
51 * check for an existing gvpe for this net, and write pid to pidfile 52 * check for an existing gvpe for this net, and write pid to pidfile
84 { 85 {
85 memset (v, -1, sizeof v); 86 memset (v, -1, sizeof v);
86 seq = seqno; 87 seq = seqno;
87 } 88 }
88 89
89 // 0 == ok, 1 == silently ignore, 2 == error, reset 90 // 0 == ok, 1 == far history, 2 == duplicate in-window, 3 == far future
90 int seqno_classify (u32 seqno) 91 int seqno_classify (u32 seqno)
91 { 92 {
92 if (seqno <= seq - WINDOWSIZE) 93 if (seqno <= seq - WINDOWSIZE)
93 return 1; 94 return 1;
94 else if (seqno > seq + WINDOWSIZE * 16) 95 else if (seqno > seq + WINDOWSIZE * 16)
95 return 2; 96 return 3;
96 else 97 else
97 { 98 {
98 while (seqno > seq) 99 while (seqno > seq)
99 { 100 {
100 seq++; 101 seq++;
109 u32 s = seqno % WINDOWSIZE; 110 u32 s = seqno % WINDOWSIZE;
110 u32 *cell = v + (s >> 5); 111 u32 *cell = v + (s >> 5);
111 u32 mask = 1 << (s & 31); 112 u32 mask = 1 << (s & 31);
112 113
113 if (*cell & mask) 114 if (*cell & mask)
114 return 1; 115 return 2;
115 else 116 else
116 { 117 {
117 *cell |= mask; 118 *cell |= mask;
118 return 0; 119 return 0;
119 } 120 }
120 } 121 }
121 } 122 }
122}; 123};
123 124
124typedef callback<const char * ()> run_script_cb; 125typedef callback<const char *()> run_script_cb;
125 126
126// run a shell script (or actually an external program). 127// run a shell script (or actually an external program).
127pid_t run_script (const run_script_cb &cb, bool wait); 128pid_t run_script (const run_script_cb &cb, bool wait);
129
130void hexdump (const char *header, void *data, int len);
128 131
129#if ENABLE_HTTP_PROXY 132#if ENABLE_HTTP_PROXY
130u8 *base64_encode (const u8 *data, unsigned int len); 133u8 *base64_encode (const u8 *data, unsigned int len);
131#endif 134#endif
132 135
133/*****************************************************************************/ 136/*****************************************************************************/
134 137
135typedef u8 rsaclear[RSA_KEYLEN - RSA_OVERHEAD]; // challenge data; 138// run work_cb in another thread, call done_cb in main thread when finished
136typedef u8 rsacrypt[RSA_KEYLEN]; // encrypted challenge 139// only one work_cb will execute at any one time.
137 140void async (callback<void ()> work_cb, callback<void ()> done_cb);
138static inline void
139rsa_encrypt (RSA *key, const rsaclear &chg, rsacrypt &encr)
140{
141 if (RSA_public_encrypt (sizeof chg,
142 (unsigned char *)&chg, (unsigned char *)&encr,
143 key, RSA_PKCS1_OAEP_PADDING) < 0)
144 fatal ("RSA_public_encrypt error");
145}
146
147static inline bool
148rsa_decrypt (RSA *key, const rsacrypt &encr, rsaclear &chg)
149{
150 return RSA_private_decrypt (sizeof encr,
151 (unsigned char *)&encr, (unsigned char *)&chg,
152 key, RSA_PKCS1_OAEP_PADDING) > 0;
153}
154 141
155#endif 142#endif
156 143

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines