otp_decode() now works usefully.
[easyotp.git] / libotp.h
bloba73fc05ce3d2bff9733cfab1e3a472942741551f
1 /** Practical One-time Pad Library
3 * Created:20080514
4 * By Jeff Connelly
5 */
7 #define MARKER_TO "to:"
8 #define MARKER_BEGIN "--EMOTP_BEGIN--"
9 #define MARKER_END "--EMOTP_END--"
11 #define OFFSET_FILE_EXTENSION ".off"
12 #define OFFSET_SIZE 11 /* strlen("4294967296") + 1 */
14 #define PAD_NAME_LENGTH 4
16 /* One-time pad. */
17 typedef struct _PAD {
18 char *local_filename;
19 char *name;
20 FILE *fp;
21 struct _PAD *next;
22 /* Use read_offset() and write_offset() to access offset. */
23 } PAD;
26 /** Packaged up encrypted message, ready for transport. */
27 typedef struct _MESSAGE {
28 unsigned long offset;
29 PAD *pad;
30 unsigned long length;
31 char *cipher_text;
32 } MESSAGE;
34 void show_pads();
35 FILE *open_offset_file(PAD *p, char *mode);
36 unsigned long read_offset(PAD *p);
37 void write_offset(PAD *p, unsigned long offset);
38 void load_pad(char *local_filename);
39 void free_pads();
40 MESSAGE *unpackage();
41 void free_message(MESSAGE *);
42 char *otp_decode(MESSAGE *msg);