/[pkg-mixmaster]/trunk/Mix/Src/mix3.h
ViewVC logotype

Diff of /trunk/Mix/Src/mix3.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 188 by weaselp, Mon Aug 26 19:38:51 2002 UTC revision 769 by rabbi, Sun Apr 25 20:48:01 2004 UTC
# Line 1  Line 1 
1  /* Mixmaster version 3  --  (C) 1999 Anonymizer Inc.  /* Mixmaster version 3.0  --  (C) 1999 - 2004 Anonymizer Inc. and others.
2    
3     Mixmaster may be redistributed and modified under certain conditions.     Mixmaster may be redistributed and modified under certain conditions.
4     This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF     This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
# Line 6  Line 6 
6     details.     details.
7    
8     Function prototypes     Function prototypes
9     $Id: mix3.h,v 1.13 2002/08/26 19:38:51 weaselp Exp $ */     $Id$ */
10    
11    
12  #ifndef _MIX3_H  #ifndef _MIX3_H
13  #define _MIX3_H  #define _MIX3_H
14  #define COPYRIGHT "Copyright Anonymizer Inc."  #define COPYRIGHT "Copyright Anonymizer Inc. et al."
15    
16  #include "config.h"  #include "config.h"
17  #include "mix.h"  #include "mix.h"
# Line 19  Line 19 
19  #ifdef WIN32  #ifdef WIN32
20  #ifndef USE_SOCK  #ifndef USE_SOCK
21  #define _WINSOCKAPI_            /* don't include winsock */  #define _WINSOCKAPI_            /* don't include winsock */
22  #endif  #endif /* not USE_SOCK */
23  #include <windows.h>  #include <windows.h>
24  #ifdef _MSC  #ifdef _MSC
25  #define snprintf _snprintf  #define snprintf _snprintf
26  #endif  #endif /* _MSC */
27  #define DIRSEP '\\'  #define DIRSEP '\\'
28  #define DIRSEPSTR "\\"  #define DIRSEPSTR "\\"
29  #else  #else /* end of WIN32 */
30  #define DIRSEP '/'  #define DIRSEP '/'
31  #define DIRSEPSTR "/"  #define DIRSEPSTR "/"
32  #endif  #endif /* else if not WIN32 */
33    
34  #define NOT_IMPLEMENTED {printf("Function not implemented.\n");return -1;}  #define NOT_IMPLEMENTED {printf("Function not implemented.\n");return -1;}
35  #define SECONDSPERDAY 86400  #define SECONDSPERDAY 86400
36    
37    #include <time.h>
38    
39  /* Dynamically allocated buffers */  /* Dynamically allocated buffers */
40    
41  int buf_reset(BUFFER *buffer);  int buf_reset(BUFFER *buffer);
# Line 120  FILE *mix_openfile(const char *name, con Line 122  FILE *mix_openfile(const char *name, con
122  FILE *openpipe(const char *prog);  FILE *openpipe(const char *prog);
123  int closepipe(FILE *fp);  int closepipe(FILE *fp);
124  int maildirWrite(char *maildir, BUFFER *message, int create);  int maildirWrite(char *maildir, BUFFER *message, int create);
125    int write_pidfile(char *pidfile);
126    int clear_pidfile(char *pidfile);
127    time_t parse_yearmonthday(char* str);
128    
129    
130  typedef struct {  typedef struct {
131    char *name;    char *name;
# Line 211  int buf_crypt(BUFFER *b, BUFFER *key, BU Line 217  int buf_crypt(BUFFER *b, BUFFER *key, BU
217    
218  #ifdef USE_IDEA  #ifdef USE_IDEA
219  int buf_ideacrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);  int buf_ideacrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);
220  #endif  #endif /* USE_IDEA */
221  int buf_bfcrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);  int buf_bfcrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);
222  int buf_3descrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);  int buf_3descrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);
223  int buf_castcrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);  int buf_castcrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);
224  #ifdef USE_AES  #ifdef USE_AES
225  int buf_aescrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);  int buf_aescrypt(BUFFER *b, BUFFER *key, BUFFER *iv, int enc);
226  #endif  #endif /* USE_AES */
227    
228  int db_getseckey(byte keyid[], BUFFER *key);  int db_getseckey(byte keyid[], BUFFER *key);
229  int db_getpubkey(byte keyid[], BUFFER *key);  int db_getpubkey(byte keyid[], BUFFER *key);
# Line 231  int seckeytopub(BUFFER *pub, BUFFER *sec Line 237  int seckeytopub(BUFFER *pub, BUFFER *sec
237    
238  /* configuration, general remailer functions */  /* configuration, general remailer functions */
239  int mix_configline(char *line);  int mix_configline(char *line);
240    int mix_config(void);
241  int mix_initialized(void);  int mix_initialized(void);
242  int mix_daily(void);  int mix_daily(void);
243    
# Line 244  int mix_pool(BUFFER *msg, int type, long Line 251  int mix_pool(BUFFER *msg, int type, long
251  int pool_packetfile(char *fname, BUFFER *mid, int packetnum);  int pool_packetfile(char *fname, BUFFER *mid, int packetnum);
252  void pool_packetexp(void);  void pool_packetexp(void);
253  int idexp(void);  int idexp(void);
254    int pgpmaxexp(void);
255  void pop3get(void);  void pop3get(void);
256    
257  typedef struct {  /* added for binary id.log change */  typedef struct {  /* added for binary id.log change */
# Line 263  int stats_out(int); Line 271  int stats_out(int);
271  #define PGP_ARMOR_NYMSIG        4  #define PGP_ARMOR_NYMSIG        4
272  #define PGP_ARMOR_SECKEY        5  #define PGP_ARMOR_SECKEY        5
273    
274    #define PGP_TYPE_UNDEFINED      0
275    #define PGP_TYPE_PRIVATE        1
276    #define PGP_TYPE_PUBLIC         2
277    
278  int pgp_keymgt(int force);  int pgp_keymgt(int force);
279    int pgp_latestkeys(BUFFER* outtxt, int algo);
280  int pgp_armor(BUFFER *buf, int mode);  int pgp_armor(BUFFER *buf, int mode);
281  int pgp_dearmor(BUFFER *buf, BUFFER *out);  int pgp_dearmor(BUFFER *buf, BUFFER *out);
282  int pgp_pubkeycert(BUFFER *userid, char *keyring, BUFFER *pass,  int pgp_pubkeycert(BUFFER *userid, char *keyring, BUFFER *pass,
# Line 309  typedef struct { Line 322  typedef struct {
322    
323      unsigned int post:1;      unsigned int post:1;
324      unsigned int middle:1;      unsigned int middle:1;
325    
326        unsigned int star_ex:1;
327    } flags;    } flags;
328    struct rinfo {    struct rinfo {
329      int reliability;      int reliability;
# Line 320  typedef struct { Line 335  typedef struct {
335  #define CHAINMAX 421  #define CHAINMAX 421
336  #define MAXREM 100  #define MAXREM 100
337  int prepare_type2list(BUFFER *out);  int prepare_type2list(BUFFER *out);
338  int mix2_rlist(REMAILER remailer[]);  int mix2_rlist(REMAILER remailer[], int badchains[MAXREM][MAXREM]);
339  int t1_rlist(REMAILER remailer[]);  int t1_rlist(REMAILER remailer[], int badchains[MAXREM][MAXREM]);
340  int pgp_rlist(REMAILER remailer[], int n);  int pgp_rlist(REMAILER remailer[], int n);
341  int pgp_rkeylist(REMAILER remailer[], int keyid[], int n);  int pgp_rkeylist(REMAILER remailer[], int keyid[], int n);
342    void parse_badchains(int badchains[MAXREM][MAXREM], char *file, char *startindicator, REMAILER *remailer, int maxrem);
343  int chain_select(int hop[], char *chainstr, int maxrem, REMAILER *remailer,  int chain_select(int hop[], char *chainstr, int maxrem, REMAILER *remailer,
344                   int type, BUFFER *feedback);                   int type, BUFFER *feedback);
345  int chain_rand(REMAILER *remailer, int maxrem,  int chain_rand(REMAILER *remailer, int badchains[MAXREM][MAXREM], int maxrem,
346                 int thischain[], int chainlen, int t);                 int thischain[], int chainlen, int t, int ignore_constraints_if_necessary);
347  int chain_randfinal(int type, REMAILER *remailer, int maxrem, int t);  int chain_randfinal(int type, REMAILER *remailer, int badchains[MAXREM][MAXREM],
348                   int maxrem, int rtype, int chain[], int chainlen, int ignore_constraints_if_necessary);
349    
350  float chain_reliability(char *chain, int chaintype,  float chain_reliability(char *chain, int chaintype,
351                          char *reliability_string);                          char *reliability_string);
352    int redirect_message(BUFFER *sendmsg, char *chain, int numcopies, BUFFER *chainlist);
353  int mix2_encrypt(int type, BUFFER *message, char *chainstr, int numcopies,  int mix2_encrypt(int type, BUFFER *message, char *chainstr, int numcopies,
354                   BUFFER *feedback);                  int ignore_constraints_if_necessary, BUFFER *feedback);
355  int t1_encrypt(int type, BUFFER *message, char *chainstr, int latency,  int t1_encrypt(int type, BUFFER *message, char *chainstr, int latency,
356                 BUFFER *ek, BUFFER *feedback);                 BUFFER *ek, BUFFER *feedback);
357    
# Line 343  int t1_decrypt(BUFFER *in); Line 361  int t1_decrypt(BUFFER *in);
361  int t2_decrypt(BUFFER *in);  int t2_decrypt(BUFFER *in);
362    
363  int mix2_decrypt(BUFFER *m);  int mix2_decrypt(BUFFER *m);
 int mix3_decrypt(BUFFER *m);  
   
 /* type 2 */  
 #define MAGIC0 0  
 #define MAGIC1 3  
   
 int v3_magic(byte *b);  
364  int v2body(BUFFER *body);  int v2body(BUFFER *body);
365  int v2body_setlen(BUFFER *body);  int v2body_setlen(BUFFER *body);
366  int v2partial(BUFFER *body, BUFFER *mid, int packet, int numpackets);  int v2partial(BUFFER *body, BUFFER *mid, int packet, int numpackets);
# Line 392  struct dirent { Line 403  struct dirent {
403  DIR *opendir(const char *name);  DIR *opendir(const char *name);
404  struct dirent *readdir(DIR *dir);  struct dirent *readdir(DIR *dir);
405  int closedir(DIR *dir);  int closedir(DIR *dir);
406  #endif  #endif /* _MSC */
407    
408  /* sockets */  /* sockets */
409  #if defined(WIN32) && defined(USE_SOCK)  #if defined(WIN32) && defined(USE_SOCK)
# Line 400  int closedir(DIR *dir); Line 411  int closedir(DIR *dir);
411  int sock_init(void);  int sock_init(void);
412  void sock_exit(void);  void sock_exit(void);
413    
414  #else  #else /* end of defined(WIN32) && defined(USE_SOCK) */
415  typedef int SOCKET;  typedef int SOCKET;
416    
417  #define INVALID_SOCKET -1  #define INVALID_SOCKET -1
418  SOCKET opensocket(char *hostname, int port);  SOCKET opensocket(char *hostname, int port);
419  int closesocket(SOCKET s);  int closesocket(SOCKET s);
420    
421  #endif  #endif /* else if not defined(WIN32) && defined(USE_SOCK) */
422    
423  #ifdef WIN32  #ifdef WIN32
424  int is_nt_service(void);  int is_nt_service(void);
425  void set_nt_exit_event();  void set_nt_exit_event();
426  #endif  #endif /* WIN32 */
427    
428  /* check for memory leaks */  /* check for memory leaks */
429  #ifdef DEBUG  #ifdef DEBUG
# Line 421  void set_nt_exit_event(); Line 432  void set_nt_exit_event();
432  BUFFER *mix3_bufnew(char *, int, char*);  BUFFER *mix3_bufnew(char *, int, char*);
433  #if __GNUC__ >= 2  #if __GNUC__ >= 2
434  # define buf_new() mix3_bufnew(__FILE__, __LINE__, __PRETTY_FUNCTION__)  # define buf_new() mix3_bufnew(__FILE__, __LINE__, __PRETTY_FUNCTION__)
435  #else  #else /* end of __GNUC__ >= 2 */
436  # define buf_new() mix3_bufnew(__FILE__, __LINE__, "file")  # define buf_new() mix3_bufnew(__FILE__, __LINE__, "file")
437  #endif  #endif /* else if not __GNUC__ >= 2 */
438  #endif /* DEBUG */  #endif /* DEBUG */
439    
440  #endif  #endif /* not _MIX3_H */

Legend:
Removed from v.188  
changed lines
  Added in v.769

  ViewVC Help
Powered by ViewVC 1.1.5