projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Peter Schellenbach's patch: re-implement the PuTTY cryptographic
[u/mdw/putty]
/
ssh.c
diff --git
a/ssh.c
b/ssh.c
index
d31d823
..
a1b0deb
100644
(file)
--- a/
ssh.c
+++ b/
ssh.c
@@
-152,8
+152,15
@@
static void ssh_gotdata(unsigned char *data, int datalen) {
pktin.length = len;
if (pktin.maxlen < biglen) {
pktin.maxlen = biglen;
pktin.length = len;
if (pktin.maxlen < biglen) {
pktin.maxlen = biglen;
+#ifdef MSCRYPTOAPI
+ /* Allocate enough buffer space for extra block
+ * for MS CryptEncrypt() */
+ pktin.data = (pktin.data == NULL ? malloc(biglen+8) :
+ realloc(pktin.data, biglen+8));
+#else
pktin.data = (pktin.data == NULL ? malloc(biglen) :
pktin.data = (pktin.data == NULL ? malloc(biglen) :
- realloc(pktin.data, biglen));
+ realloc(pktin.data, biglen));
+#endif
if (!pktin.data)
fatalbox("Out of memory");
}
if (!pktin.data)
fatalbox("Out of memory");
}
@@
-199,8
+206,15
@@
static void s_wrpkt_start(int type, int len) {
pktout.length = len-5;
if (pktout.maxlen < biglen) {
pktout.maxlen = biglen;
pktout.length = len-5;
if (pktout.maxlen < biglen) {
pktout.maxlen = biglen;
+#ifdef MSCRYPTOAPI
+ /* Allocate enough buffer space for extra block
+ * for MS CryptEncrypt() */
+ pktout.data = (pktout.data == NULL ? malloc(biglen+8) :
+ realloc(pktout.data, biglen+8));
+#else
pktout.data = (pktout.data == NULL ? malloc(biglen+4) :
realloc(pktout.data, biglen+4));
pktout.data = (pktout.data == NULL ? malloc(biglen+4) :
realloc(pktout.data, biglen+4));
+#endif
if (!pktout.data)
fatalbox("Out of memory");
}
if (!pktout.data)
fatalbox("Out of memory");
}
@@
-685,6
+699,11
@@
static char *ssh_init (HWND hwnd, char *host, int port, char **realhost) {
char *FWhost;
int FWport;
#endif
char *FWhost;
int FWport;
#endif
+
+#ifdef MSCRYPTOAPI
+ if(crypto_startup() == 0)
+ return "Microsoft high encryption pack not installed!";
+#endif
savedhost = malloc(1+strlen(host));
if (!savedhost)
savedhost = malloc(1+strlen(host));
if (!savedhost)