| 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 |
| 6 |
details. |
details. |
| 7 |
|
|
| 8 |
Function prototypes |
Function prototypes |
| 9 |
$Id: mix3.h,v 1.16 2002/09/18 23:26:16 rabbi 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" |
| 126 |
int clear_pidfile(char *pidfile); |
int clear_pidfile(char *pidfile); |
| 127 |
time_t parse_yearmonthday(char* str); |
time_t parse_yearmonthday(char* str); |
| 128 |
|
|
| 129 |
|
int url_download(char* url, char* dest); |
| 130 |
|
int download_stats(char *sourcename); |
| 131 |
|
|
| 132 |
typedef struct { |
typedef struct { |
| 133 |
char *name; |
char *name; |
| 209 |
int digest_sha1(BUFFER *b, BUFFER *md); |
int digest_sha1(BUFFER *b, BUFFER *md); |
| 210 |
int digest_rmd160(BUFFER *b, BUFFER *md); |
int digest_rmd160(BUFFER *b, BUFFER *md); |
| 211 |
|
|
| 212 |
|
#define KEY_ID_LEN 32 |
| 213 |
int keymgt(int force); |
int keymgt(int force); |
| 214 |
int key(BUFFER *b); |
int key(BUFFER *b); |
| 215 |
int adminkey(BUFFER *b); |
int adminkey(BUFFER *b); |
| 240 |
|
|
| 241 |
/* configuration, general remailer functions */ |
/* configuration, general remailer functions */ |
| 242 |
int mix_configline(char *line); |
int mix_configline(char *line); |
| 243 |
|
int mix_config(void); |
| 244 |
int mix_initialized(void); |
int mix_initialized(void); |
| 245 |
int mix_daily(void); |
int mix_daily(void); |
| 246 |
|
|
| 254 |
int pool_packetfile(char *fname, BUFFER *mid, int packetnum); |
int pool_packetfile(char *fname, BUFFER *mid, int packetnum); |
| 255 |
void pool_packetexp(void); |
void pool_packetexp(void); |
| 256 |
int idexp(void); |
int idexp(void); |
| 257 |
|
int pgpmaxexp(void); |
| 258 |
void pop3get(void); |
void pop3get(void); |
| 259 |
|
|
| 260 |
typedef struct { /* added for binary id.log change */ |
typedef struct { /* added for binary id.log change */ |
| 274 |
#define PGP_ARMOR_NYMSIG 4 |
#define PGP_ARMOR_NYMSIG 4 |
| 275 |
#define PGP_ARMOR_SECKEY 5 |
#define PGP_ARMOR_SECKEY 5 |
| 276 |
|
|
| 277 |
|
#define PGP_TYPE_UNDEFINED 0 |
| 278 |
|
#define PGP_TYPE_PRIVATE 1 |
| 279 |
|
#define PGP_TYPE_PUBLIC 2 |
| 280 |
|
|
| 281 |
int pgp_keymgt(int force); |
int pgp_keymgt(int force); |
| 282 |
|
int pgp_latestkeys(BUFFER* outtxt, int algo); |
| 283 |
int pgp_armor(BUFFER *buf, int mode); |
int pgp_armor(BUFFER *buf, int mode); |
| 284 |
int pgp_dearmor(BUFFER *buf, BUFFER *out); |
int pgp_dearmor(BUFFER *buf, BUFFER *out); |
| 285 |
int pgp_pubkeycert(BUFFER *userid, char *keyring, BUFFER *pass, |
int pgp_pubkeycert(BUFFER *userid, char *keyring, BUFFER *pass, |
| 325 |
|
|
| 326 |
unsigned int post:1; |
unsigned int post:1; |
| 327 |
unsigned int middle:1; |
unsigned int middle:1; |
| 328 |
|
|
| 329 |
|
unsigned int star_ex:1; |
| 330 |
} flags; |
} flags; |
| 331 |
struct rinfo { |
struct rinfo { |
| 332 |
int reliability; |
int reliability; |
| 338 |
#define CHAINMAX 421 |
#define CHAINMAX 421 |
| 339 |
#define MAXREM 100 |
#define MAXREM 100 |
| 340 |
int prepare_type2list(BUFFER *out); |
int prepare_type2list(BUFFER *out); |
| 341 |
int mix2_rlist(REMAILER remailer[]); |
int mix2_rlist(REMAILER remailer[], int badchains[MAXREM][MAXREM]); |
| 342 |
int t1_rlist(REMAILER remailer[]); |
int t1_rlist(REMAILER remailer[], int badchains[MAXREM][MAXREM]); |
| 343 |
int pgp_rlist(REMAILER remailer[], int n); |
int pgp_rlist(REMAILER remailer[], int n); |
| 344 |
int pgp_rkeylist(REMAILER remailer[], int keyid[], int n); |
int pgp_rkeylist(REMAILER remailer[], int keyid[], int n); |
| 345 |
|
void parse_badchains(int badchains[MAXREM][MAXREM], char *file, char *startindicator, REMAILER *remailer, int maxrem); |
| 346 |
int chain_select(int hop[], char *chainstr, int maxrem, REMAILER *remailer, |
int chain_select(int hop[], char *chainstr, int maxrem, REMAILER *remailer, |
| 347 |
int type, BUFFER *feedback); |
int type, BUFFER *feedback); |
| 348 |
int chain_rand(REMAILER *remailer, int maxrem, |
int chain_rand(REMAILER *remailer, int badchains[MAXREM][MAXREM], int maxrem, |
| 349 |
int thischain[], int chainlen, int t); |
int thischain[], int chainlen, int t, int ignore_constraints_if_necessary); |
| 350 |
int chain_randfinal(int type, REMAILER *remailer, int maxrem, int t); |
int chain_randfinal(int type, REMAILER *remailer, int badchains[MAXREM][MAXREM], |
| 351 |
|
int maxrem, int rtype, int chain[], int chainlen, int ignore_constraints_if_necessary); |
| 352 |
|
|
| 353 |
float chain_reliability(char *chain, int chaintype, |
float chain_reliability(char *chain, int chaintype, |
| 354 |
char *reliability_string); |
char *reliability_string); |
| 355 |
|
int redirect_message(BUFFER *sendmsg, char *chain, int numcopies, BUFFER *chainlist); |
| 356 |
int mix2_encrypt(int type, BUFFER *message, char *chainstr, int numcopies, |
int mix2_encrypt(int type, BUFFER *message, char *chainstr, int numcopies, |
| 357 |
BUFFER *feedback); |
int ignore_constraints_if_necessary, BUFFER *feedback); |
| 358 |
int t1_encrypt(int type, BUFFER *message, char *chainstr, int latency, |
int t1_encrypt(int type, BUFFER *message, char *chainstr, int latency, |
| 359 |
BUFFER *ek, BUFFER *feedback); |
BUFFER *ek, BUFFER *feedback); |
| 360 |
|
|
| 364 |
int t2_decrypt(BUFFER *in); |
int t2_decrypt(BUFFER *in); |
| 365 |
|
|
| 366 |
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); |
|
| 367 |
int v2body(BUFFER *body); |
int v2body(BUFFER *body); |
| 368 |
int v2body_setlen(BUFFER *body); |
int v2body_setlen(BUFFER *body); |
| 369 |
int v2partial(BUFFER *body, BUFFER *mid, int packet, int numpackets); |
int v2partial(BUFFER *body, BUFFER *mid, int packet, int numpackets); |