X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=ssh.h;h=45405d3e9b97f8a010159f8ddd621597d7389963;hb=8d0c333946fa0060120dca5d6fc85fa5975fbbfa;hp=bf1ba48b8962bcc18b8d4a3dc76a1db82f64d62a;hpb=5aa719d16e1f6c9f2a47f0cd562abc522a8fbb0c;p=PuTTY.git diff --git a/ssh.h b/ssh.h index bf1ba48b..45405d3e 100644 --- a/ssh.h +++ b/ssh.h @@ -122,6 +122,16 @@ void SHA_Simple(void *p, int len, unsigned char *output); void hmac_sha1_simple(void *key, int keylen, void *data, int datalen, unsigned char *output); +typedef struct { + uint32 h[8]; + unsigned char block[64]; + int blkused; + uint32 lenhi, lenlo; +} SHA256_State; +void SHA256_Init(SHA256_State * s); +void SHA256_Bytes(SHA256_State * s, const void *p, int len); +void SHA256_Final(SHA256_State * s, unsigned char *output); +void SHA256_Simple(const void *p, int len, unsigned char *output); typedef struct { uint64 h[8]; @@ -154,6 +164,8 @@ struct ssh2_cipher { char *name; int blksize; int keylen; + unsigned int flags; +#define SSH_CIPHER_IS_CBC 1 char *text_name; }; @@ -173,6 +185,13 @@ struct ssh_mac { char *text_name; }; +struct ssh_hash { + void *(*init)(void); /* also allocates context */ + void (*bytes)(void *, void *, int); + void (*final)(void *, unsigned char *); /* also frees context */ + int hlen; /* output length in bytes */ +}; + struct ssh_kex { /* * Plugging in another KEX algorithm requires structural chaos, @@ -184,6 +203,7 @@ struct ssh_kex { char *name, *groupname; const unsigned char *pdata, *gdata;/* NULL means use group exchange */ int plen, glen; + const struct ssh_hash *hash; }; struct ssh_signkey { @@ -233,14 +253,18 @@ extern const struct ssh2_ciphers ssh2_3des; extern const struct ssh2_ciphers ssh2_des; extern const struct ssh2_ciphers ssh2_aes; extern const struct ssh2_ciphers ssh2_blowfish; +extern const struct ssh2_ciphers ssh2_arcfour; +extern const struct ssh_hash ssh_sha1; +extern const struct ssh_hash ssh_sha256; extern const struct ssh_kex ssh_diffiehellman_group1; extern const struct ssh_kex ssh_diffiehellman_group14; extern const struct ssh_kex ssh_diffiehellman_gex; extern const struct ssh_signkey ssh_dss; extern const struct ssh_signkey ssh_rsa; -extern const struct ssh_mac ssh_md5; -extern const struct ssh_mac ssh_sha1; -extern const struct ssh_mac ssh_sha1_buggy; +extern const struct ssh_mac ssh_hmac_md5; +extern const struct ssh_mac ssh_hmac_sha1; +extern const struct ssh_mac ssh_hmac_sha1_buggy; + /* * PuTTY version number formatted as an SSH version string.