mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-13 09:07:33 -05:00
SSH 2 support, phase 1, debugging. Currently does Diffie-Hellman and gets
the same results as the server, which is a pretty good start. [originally from svn r569]
This commit is contained in:
60
ssh.h
60
ssh.h
@ -1,10 +1,23 @@
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
* Useful thing.
|
||||
*/
|
||||
#ifndef lenof
|
||||
#define lenof(x) ( (sizeof((x))) / (sizeof(*(x))))
|
||||
#endif
|
||||
|
||||
#define SSH_CIPHER_IDEA 1
|
||||
#define SSH_CIPHER_DES 2
|
||||
#define SSH_CIPHER_3DES 3
|
||||
#define SSH_CIPHER_BLOWFISH 6
|
||||
|
||||
#ifdef MSCRYPTOAPI
|
||||
#define APIEXTRA 8
|
||||
#else
|
||||
#define APIEXTRA 0
|
||||
#endif
|
||||
|
||||
struct RSAKey {
|
||||
int bits;
|
||||
int bytes;
|
||||
@ -48,10 +61,43 @@ void MD5Update(struct MD5Context *context, unsigned char const *buf,
|
||||
unsigned len);
|
||||
void MD5Final(unsigned char digest[16], struct MD5Context *context);
|
||||
|
||||
typedef struct {
|
||||
uint32 h[5];
|
||||
unsigned char block[64];
|
||||
int blkused;
|
||||
uint32 lenhi, lenlo;
|
||||
} SHA_State;
|
||||
|
||||
void SHA_Init(SHA_State *s);
|
||||
void SHA_Bytes(SHA_State *s, void *p, int len);
|
||||
void SHA_Final(SHA_State *s, unsigned char *output);
|
||||
|
||||
struct ssh_cipher {
|
||||
void (*sesskey)(unsigned char *key);
|
||||
void (*encrypt)(unsigned char *blk, int len);
|
||||
void (*decrypt)(unsigned char *blk, int len);
|
||||
char *name;
|
||||
int blksize;
|
||||
};
|
||||
|
||||
struct ssh_mac {
|
||||
void (*sesskey)(unsigned char *key, int len);
|
||||
void (*generate)(unsigned char *blk, int len, unsigned long seq);
|
||||
int (*verify)(unsigned char *blk, int len, unsigned long seq);
|
||||
char *name;
|
||||
int len;
|
||||
};
|
||||
|
||||
struct ssh_kex {
|
||||
char *name;
|
||||
};
|
||||
|
||||
struct ssh_hostkey {
|
||||
char *name;
|
||||
};
|
||||
|
||||
struct ssh_compress {
|
||||
char *name;
|
||||
};
|
||||
|
||||
#ifndef MSCRYPTOAPI
|
||||
@ -62,3 +108,17 @@ int random_byte(void);
|
||||
void random_add_noise(void *noise, int length);
|
||||
|
||||
void logevent (char *);
|
||||
|
||||
/*
|
||||
* A Bignum is stored as a sequence of `unsigned short' words. The
|
||||
* first tells how many remain; the remaining ones are digits, LS
|
||||
* first.
|
||||
*/
|
||||
typedef unsigned short *Bignum;
|
||||
|
||||
Bignum newbn(int length);
|
||||
void freebn(Bignum b);
|
||||
void modpow(Bignum base, Bignum exp, Bignum mod, Bignum result);
|
||||
|
||||
Bignum dh_create_e(void);
|
||||
Bignum dh_find_K(Bignum f);
|
||||
|
Reference in New Issue
Block a user