Mercurial > dropbear
comparison algo.h @ 546:568638be7203 agent-client
propagate from branch 'au.asn.ucc.matt.dropbear' (head 899a8851a5edf840b2f7925bcc26ffe99dcac54d)
to branch 'au.asn.ucc.matt.dropbear.cli-agent' (head 6bbab8364de17bd9ecb1dee5ffb796e48c0380d2)
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 01 Jul 2009 04:16:32 +0000 |
parents | 43bbe17d6ba0 |
children | f9b5dc0cba61 |
comparison
equal
deleted
inserted
replaced
500:d588e3ea557a | 546:568638be7203 |
---|---|
27 #define _ALGO_H_ | 27 #define _ALGO_H_ |
28 | 28 |
29 #include "includes.h" | 29 #include "includes.h" |
30 #include "buffer.h" | 30 #include "buffer.h" |
31 | 31 |
32 #define DROPBEAR_MODE_UNUSED 0 | |
33 #define DROPBEAR_MODE_CBC 1 | |
34 #define DROPBEAR_MODE_CTR 2 | |
35 | |
32 struct Algo_Type { | 36 struct Algo_Type { |
33 | 37 |
34 unsigned char *name; /* identifying name */ | 38 unsigned char *name; /* identifying name */ |
35 char val; /* a value for this cipher, or -1 for invalid */ | 39 char val; /* a value for this cipher, or -1 for invalid */ |
36 void *data; /* algorithm specific data */ | 40 const void *data; /* algorithm specific data */ |
37 unsigned usable : 1; /* whether we can use this algorithm */ | 41 char usable; /* whether we can use this algorithm */ |
38 | 42 const void *mode; /* the mode, currently only used for ciphers, |
43 points to a 'struct dropbear_cipher_mode' */ | |
39 }; | 44 }; |
40 | 45 |
41 typedef struct Algo_Type algo_type; | 46 typedef struct Algo_Type algo_type; |
42 | 47 |
43 /* lists mapping ssh types of algorithms to internal values */ | 48 /* lists mapping ssh types of algorithms to internal values */ |
46 extern algo_type sshciphers[]; | 51 extern algo_type sshciphers[]; |
47 extern algo_type sshhashes[]; | 52 extern algo_type sshhashes[]; |
48 extern algo_type sshcompress[]; | 53 extern algo_type sshcompress[]; |
49 | 54 |
50 extern const struct dropbear_cipher dropbear_nocipher; | 55 extern const struct dropbear_cipher dropbear_nocipher; |
56 extern const struct dropbear_cipher_mode dropbear_mode_none; | |
51 extern const struct dropbear_hash dropbear_nohash; | 57 extern const struct dropbear_hash dropbear_nohash; |
52 | 58 |
53 struct dropbear_cipher { | 59 struct dropbear_cipher { |
54 const struct ltc_cipher_descriptor *cipherdesc; | 60 const struct ltc_cipher_descriptor *cipherdesc; |
55 unsigned long keysize; | 61 unsigned long keysize; |
56 unsigned char blocksize; | 62 unsigned char blocksize; |
63 }; | |
64 | |
65 struct dropbear_cipher_mode { | |
66 int (*start)(int cipher, const unsigned char *IV, | |
67 const unsigned char *key, | |
68 int keylen, int num_rounds, void *cipher_state); | |
69 int (*encrypt)(const unsigned char *pt, unsigned char *ct, | |
70 unsigned long len, void *cipher_state); | |
71 int (*decrypt)(const unsigned char *ct, unsigned char *pt, | |
72 unsigned long len, void *cipher_state); | |
57 }; | 73 }; |
58 | 74 |
59 struct dropbear_hash { | 75 struct dropbear_hash { |
60 const struct ltc_hash_descriptor *hashdesc; | 76 const struct ltc_hash_descriptor *hashdesc; |
61 unsigned long keysize; | 77 unsigned long keysize; |