X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=crypt.h;h=8edff4130a1386689108400af496a980b94e2fa7;hp=88af9e89c10e6cfe468e7c6787bfdde32bbb536c;hb=271c83d4fd9411be628fa650ce595ac79754d22e;hpb=00e4d4da1b2c00da139b09d3ed4ab9ad9fba2691 diff --git a/crypt.h b/crypt.h index 88af9e89..8edff413 100644 --- a/crypt.h +++ b/crypt.h @@ -7,10 +7,6 @@ /** \file crypt.h prototypes for the RSA crypt functions */ #include -int para_decrypt_challenge(char *key_file, long unsigned *challenge_nr, - unsigned char *buf, unsigned rsa_inlen); -int para_encrypt_challenge(RSA* rsa, long unsigned challenge_nr, - unsigned char *outbuf); int para_encrypt_buffer(RSA* rsa, unsigned char *inbuf, unsigned len, unsigned char *outbuf); int para_decrypt_buffer(char *key_file, unsigned char *outbuf, unsigned char *inbuf, @@ -18,8 +14,32 @@ int para_decrypt_buffer(char *key_file, unsigned char *outbuf, unsigned char *in int get_rsa_key(char *key_file, RSA **rsa, int private); void rsa_free(RSA *rsa); +void get_random_bytes_or_die(unsigned char *buf, int num); +void init_random_seed_or_die(void); + +/** + * Used on the server-side for client-server communication encryption. + * + * The traffic between (the forked child of) para_server and the remote + * client process is crypted by a RC4 session key. This structure contains + * the RC4 keys and the file descriptor for which these keys should be used. + */ +struct rc4_context { + /** The socket file descriptor. */ + int fd; + /** Key used for sending data. */ + RC4_KEY recv_key; + /** Key used for receiving data. */ + RC4_KEY send_key; +}; +int rc4_send_bin_buffer(struct rc4_context *rc4c, const char *buf, size_t len); +int rc4_send_buffer(struct rc4_context *rc4c, const char *buf); +__printf_2_3 int rc4_send_va_buffer(struct rc4_context *rc4c, const char *fmt, ...); +int rc4_recv_bin_buffer(struct rc4_context *rcc, char *buf, size_t size); +int rc4_recv_buffer(struct rc4_context *rcc, char *buf, size_t size); /** \cond used to distinguish between loading of private/public key */ #define LOAD_PUBLIC_KEY 0 #define LOAD_PRIVATE_KEY 1 +#define CHALLENGE_SIZE 64 /** \endcond **/