#ifndef K5STREAM_H
#define K5STREAM_H
typedef struct kstream_int {
int fd;
int (*encrypt)(struct kstream_data_block *,
struct kstream_data_block *,
struct kstream *kstream);
int (*decrypt)(struct kstream_data_block *,
struct kstream_data_block *,
struct kstream *kstream);
} *kstream;
typedef void *kstream_ptr;
struct kstream_data_block {
kstream_ptr ptr;
size_t length;
};
struct kstream_crypt_ctl_block {
int (*encrypt)(struct kstream_data_block *,
struct kstream_data_block *,
kstream);
int (*decrypt)(struct kstream_data_block *,
struct kstream_data_block *,
kstream);
int (*init)(kstream, kstream_ptr);
void (*destroy)(kstream);
};
int kstream_destroy(kstream);
void kstream_set_buffer_mode(kstream, int);
kstream kstream_create_from_fd(int fd,
const struct kstream_crypt_ctl_block *,
kstream_ptr);
int kstream_write(kstream, void *, size_t);
int kstream_read(kstream, void *, size_t);
#endif