History of ssh.h of 81acda317b22101b

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

History of file ssh.h at check-in 81acda317b22101b

2014-01-09
04:22
Added putty-cac current state file: [4ab1bc783a] check-in: [62dff76227] user: rkeene branch: putty-cac, size: 20505
2014-01-07
04:56
Start of work on adding smartcard support file: [af8bcf29e5] check-in: [0f7cb20b46] user: rkeene branch: smartcard, size: 32665
2013-11-17
08:05
Implement connection sharing between instances of PuTTY. The basic strategy is described at the top of the new source file sshshare.c. In very brief: an 'upstream' PuTTY opens a Unix-domain socket or Windows named pipe, and listens for connections from other PuTTYs wanting to run sessions on the same server. The protocol spoken down that socket/pipe is essentially the bare ssh-connection protocol, using a trivial binary packet protocol with no encryption, and the upstream has to do some fiddly transformations that I've been referring to as 'channel-number NAT' to avoid resource clashes between the sessions it's managing. This is quite different from OpenSSH's approach of using the Unix- domain socket as a means of passing file descriptors around; the main reason for that is that fd-passing is Unix-specific but this system has to work on Windows too. However, there are additional advantages, such as making it easy for each downstream PuTTY to run its own independent set of port and X11 forwardings (though the method for making the latter work is quite painful). Sharing is off by default, but configuration is intended to be very easy in the normal case - just tick one box in the SSH config panel and everything else happens automatically. file: [ad131dc23f] check-in: [998dfad436] user: simon branch: trunk, size: 32492
08:05
Get rid of the error-return mechanism from x11_init. Now that it doesn't actually make a network connection because that's deferred until after the X authorisation exchange, there's no point in having it return an error message and write the real output through a pointer argument. Instead, we can just have it return xconn directly and simplify the call sites. file: [f79d81a1b1] check-in: [73c26030cf] user: simon branch: trunk, size: 29254
08:05
Refactor the construction of X protocol greetings. I've moved it out into a separate function, preparatory to calling it from somewhere completely different in changes to come. Also, we now retain the peer address sent from the SSH server in string form, rather than translating it immediately into a numeric IP address, so that its original form will be available later to pass on elsewhere. file: [0ba6917265] check-in: [6ce24b09de] user: simon branch: trunk, size: 29292
08:05
Prepare to have multiple X11 auth cookies valid at once. Rather than the top-level component of X forwarding being an X11Display structure which owns some auth data, it's now a collection of X11FakeAuth structures, each of which owns a display. The idea is that when we receive an X connection, we wait to see which of our available auth cookies it matches, and then connect to whatever X display that auth cookie identifies. At present the tree will only have one thing in it; this is all groundwork for later changes. file: [4f3db4ec37] check-in: [dce51d4dc0] user: simon branch: trunk, size: 29049
08:05
Decouple X socket opening from x11_init(). Now we wait to open the socket to the X server until we've seen the authorisation data. This prepares us to do something else with the channel if we see different auth data, which will come up in connection sharing. file: [687b4c709d] check-in: [17981b3538] user: simon branch: trunk, size: 28557
08:05
Add missing 'const' in the des_*_xdmauth functions. file: [97079e877c] check-in: [d5d9fea99c] user: simon branch: trunk, size: 28519
08:04
Refactor ssh.c's APIs to x11fwd.c and portfwd.c. The most important change is that, where previously ssh.c held the Socket pointer for each X11 and port forwarding, and the support modules would find their internal state structure by calling sk_get_private_ptr on that Socket, it's now the other way round. ssh.c now directly holds the internal state structure pointer for each forwarding, and when the support module needs the Socket it looks it up in a field of that. This will come in handy when I decouple socket creation from logical forwarding setup, so that X forwardings can delay actually opening a connection to an X server until they look at the authentication data and see which server it has to be. However, while I'm here, I've also taken the opportunity to clean up a few other points, notably error message handling, and also the fact that the same kind of state structure was used for both connection-type and listening-type port forwardings. Now there are separate PortForwarding and PortListener structure types, which seems far more sensible. file: [509a7eba3b] check-in: [7ab21bb146] user: simon branch: trunk, size: 28457
08:03
Move SSH protocol enumerations out into ssh.h. This permits packet type codes and other magic numbers to be accessed from modules other than ssh.c. file: [670d3c8bfa] check-in: [71d87820cd] user: simon branch: trunk, size: 28067
2013-09-08
02:14
Pass an error message through to sshfwd_unclean_close. We have access to one at every call site, so there's really no reason not to send it through to ssh.c to be logged. file: [e9f67d189c] check-in: [36349ac57c] user: simon branch: trunk, size: 20668
2013-07-27
13:35
Add an assortment of missing consts I've just noticed. file: [895bb9a2d4] check-in: [9388e0e1ae] user: simon branch: trunk, size: 20651
2013-02-20
17:30
Add support for HMAC-SHA-256 as an SSH-2 MAC algorithm ("hmac-sha2-256") as specified in RFC 6668. This is not so much because I think it's necessary, but because scrypt uses HMAC-SHA-256 and once we've got it we may as well use it. Code very closely derived from the HMAC-SHA-1 code. Tested against OpenSSH 5.9p1 Debian-5ubuntu1. file: [e06a911b6f] check-in: [6c7bd4523b] user: ben branch: trunk, size: 20639
2012-03-03
18:24
Generate keys more carefully, so that when the user asks for an n-bit key they always get an n-bit number instead of n-1. The latter was perfectly harmless but kept confusing users. file: [8d4a106a19] check-in: [de4b8709f0] user: simon branch: trunk, size: 20594
2011-12-08
13:15
Introduce a function sshfwd_unclean_close(), supplied by ssh.c to subsidiary network modules like portfwd.c. To be called when the subsidiary module experiences a socket error: it sends an emergency CHANNEL_CLOSE (not just outgoing CHANNEL_EOF), and immediately deletes the local side of the channel. (I've invented a new channel type in ssh.c called CHAN_ZOMBIE, for channels whose original local side has already been thrown away and they're just hanging around waiting to receive the acknowledging CHANNEL_CLOSE.) As a result of this and the last few commits, I can now run a port forwarding session in which a local socket error occurs on a forwarded port, and PuTTY now handles it apparently correctly, closing both the SSH channel and the local socket and then actually recognising that it's OK to terminate when all _other_ channels have been closed. Previously the channel corresponding to the duff connection would linger around (because of net_pending_errors never being called), and keep being selected on (hence chewing CPU), and inhibit program termination at the end of the session (because not all channels were closed). file: [94eb396dc1] check-in: [9377dd8f27] user: simon branch: trunk, size: 20521
2011-09-13
06:44
Revamp of EOF handling in all network connections, pipes and other data channels. Should comprehensively fix 'half-closed', in principle, though it's a big and complicated change and so there's a good chance I've made at least one mistake somewhere. All connections should now be rigorous about propagating end-of-file (or end-of-data-stream, or socket shutdown, or whatever) independently in both directions, except in frontends with no mechanism for sending explicit EOF (e.g. interactive terminal windows) or backends which are basically always used for interactive sessions so it's unlikely that an application would be depending on independent EOF (telnet, rlogin). EOF should now never accidentally be sent while there's still buffered data to go out before it. (May help fix 'portfwd-corrupt', and also I noticed recently that the ssh main session channel can accidentally have MSG_EOF sent before the output bufchain is clear, leading to embarrassment when it subsequently does send the output). file: [4e1562797e] check-in: [0831792ea4] user: simon branch: trunk, size: 20464
2011-07-14
13:52
Post-release destabilisation! Completely remove the struct type 'Config' in putty.h, which stores all PuTTY's settings and includes an arbitrary length limit on every single one of those settings which is stored in string form. In place of it is 'Conf', an opaque data type everywhere outside the new file conf.c, which stores a list of (key, value) pairs in which every key contains an integer identifying a configuration setting, and for some of those integers the key also contains extra parts (so that, for instance, CONF_environmt is a string-to-string mapping). Everywhere that a Config was previously used, a Conf is now; everywhere there was a Config structure copy, conf_copy() is called; every lookup, adjustment, load and save operation on a Config has been rewritten; and there's a mechanism for serialising a Conf into a binary blob and back for use with Duplicate Session. User-visible effects of this change _should_ be minimal, though I don't doubt I've introduced one or two bugs here and there which will eventually be found. The _intended_ visible effects of this change are that all arbitrary limits on configuration strings and lists (e.g. limit on number of port forwardings) should now disappear; that list boxes in the configuration will now be displayed in a sorted order rather than the arbitrary order in which they were added to the list (since the underlying data structure is now a sorted tree234 rather than an ad-hoc comma-separated string); and one more specific change, which is that local and dynamic port forwardings on the same port number are now mutually exclusive in the configuration (putting 'D' in the key rather than the value was a mistake in the first place). One other reorganisation as a result of this is that I've moved all the dialog.c standard handlers (dlg_stdeditbox_handler and friends) out into config.c, because I can't really justify calling them generic any more. When they took a pointer to an arbitrary structure type and the offset of a field within that structure, they were independent of whether that structure was a Config or something completely different, but now they really do expect to talk to a Conf, which can _only_ be used for PuTTY configuration, so I've renamed them all things like conf_editbox_handler and moved them out of the nominally independent dialog-box management module into the PuTTY-specific config.c. file: [9b2b3c1ec1] check-in: [a2c0243430] user: simon branch: trunk, size: 20388
2011-03-04
16:34
Implement zlib@openssh.com, using the rekey-after-userauth method suggested in the wishlist entry. file: [fa12fbb23d] check-in: [d3818c897b] user: jacob branch: trunk, size: 20444
2011-02-18
02:25
Implement the Chinese Remainder Theorem optimisation for speeding up RSA private key operations by making use of the fact that we know the factors of the modulus. file: [45db434c07] check-in: [a46f247bcf] user: simon branch: trunk, size: 20297
2010-05-19
13:22
Patch from Alejandro Sedeno, somewhat modified by me, which reorganises the GSSAPI support so that it handles alternative implementations of the GSS-API. In particular, this means PuTTY can now talk to MIT Kerberos for Windows instead of being limited to SSPI. I don't know for sure whether further tweaking will be needed (to the UI, most likely, or to automatic selection of credentials), but testing reports suggest it's now at least worth committing to trunk to get it more widely tested. file: [0032e67161] check-in: [d096e14ac5] user: simon branch: trunk, size: 20227
2010-04-12
05:55
Support importing of new-style OpenSSH private keys (encrypted by AES rather than 3DES). file: [501298df1c] check-in: [ef0fbcd9b8] user: simon branch: trunk, size: 20119
2008-11-26
06:49
Mitigation for VU#958563: When using a CBC-mode server-to-client cipher under SSH-2, don't risk looking at the length field of an incoming packet until we've successfully MAC'ed the packet. This requires a change to the MAC mechanics so that we can calculate MACs incrementally, and output a MAC for the packet so far while still being able to add more data to the packet later. file: [22745bf90c] check-in: [4c69183b8d] user: ben branch: trunk, size: 19713
2008-11-17
12:38
Revamp of the local X11 connection code. We now parse X display strings more rigorously, and then we look up the local X authority data in .Xauthority _ourself_ rather than delegating to an external xauth program. This is (negligibly) more efficient on Unix, assuming I haven't got it wrong in some subtle way, but its major benefit is that we can now support X authority lookups on Windows as well provided the user points us at an appropriate X authority file in the standard format. A new Windows-specific config option has been added for this purpose. file: [4a6cf9a64d] check-in: [8eda1bb259] user: simon branch: trunk, size: 19456
2008-05-28
14:23
OS X Leopard, it turns out, has a new and exciting strategy for addressing X displays. Update PuTTY's display-name-to-Unix-socket- path translation code to cope with it, thus causing X forwarding to start working again on Leopard. file: [23ddd676b5] check-in: [c736a90b9d] user: simon branch: trunk, size: 17395
2007-04-30
17:09
Add support for RFC 4432 RSA key exchange, the patch for which has been lying around in my home directory for _years_. file: [84541c43a6] check-in: [ba69804eab] user: ben branch: trunk, size: 17363
2006-12-30
17:00
Patch from Colin Watson intended to give a clean Unix compile with GCC 4. (Since we choose to compile with -Werror, this is particularly important.) I haven't yet checked that the resulting source actually compiles cleanly with GCC 4, hence not marking `gcc4-warnings' as fixed just yet. file: [3fcfdb93ce] check-in: [ef14243dce] user: jacob branch: trunk, size: 17228
2006-03-12
13:24
Dimitry Andric spotted that DH gex with SHA-256 was overflowing a buffer. Fixed, and added paranoia so that this shouldn't happen again. file: [c0f13c9c0e] check-in: [ff7555e2cd] user: jacob branch: trunk, size: 17215
09:39
Log the hash used for DH kex (now there's a choice). file: [d6c4d6a081] check-in: [160e173d94] user: jacob branch: trunk, size: 17097
2005-10-30
09:16
Allow rsakey_pubblob() to return the key comment. (like r6433 but for SSH-1) file: [90e9d09749] check-in: [4c5674dd5b] user: jacob branch: trunk, size: 17076
07:42
Add ability for ssh2_userkey_loadpub() to return the key comment. (Not actually used currently, but it makes life easier for a patch I'm working on.) file: [fd80923eb4] check-in: [d7d7b6fd7d] user: jacob branch: trunk, size: 17057
2005-09-10
11:19
Implement hmac-sha1-96. It's RECOMMENDED in the current transport draft, and we don't have any strong reason not to implement it, for all that it's rather pointless. file: [92c544075e] check-in: [07e74def32] user: ben branch: trunk, size: 17032
2005-09-03
08:41
Restructure things so that a single entry in the KEX preference list can correspond to multiple SSH-2 KEX algorithms. We already do the equivalent for cipher algorithms. file: [57a4cf1b02] check-in: [45f5ec7b5a] user: ben branch: trunk, size: 16934
2005-08-31
16:48
SHA-256 implementation, for use in future KEX algorithms, in particular diffie-hellman-group-exchange-sha256, which the last DHGEX draft defined. Code lifted from Simon's "crypto" directory, with changes to make it look more like sshsh512.c. file: [cd2530495b] check-in: [b428aa5211] user: ben branch: trunk, size: 16850
15:43
Add infrastructure for supporting multiple hashes in key exchange. Nothing very surprising here. file: [706a50d239] check-in: [5e476e7efc] user: ben branch: trunk, size: 16464
14:11
Rename ssh_md5 and ssh_sha1 to ssh_hmac_md5 and ssh_hmac_sha1 respectively. This is to make room for a hash abstraction that's likely to want to use ssh_sha1, at least. file: [3f0a90434e] check-in: [9afc7f5e94] user: ben branch: trunk, size: 16161
2005-04-23
11:22
Now that we've got at least some SDCTR modes working (and aes256-ctr is our default preferred cipher), add code to inject SSH_MSG_IGNOREs to randomise the IV when using CBC-mode ciphers. Each cipher has a flag to indicate whether it needs this workaround, and the SSH packet output maze has gained some extra complexity to implement it. file: [45328aae0f] check-in: [98cafbbe9b] user: ben branch: trunk, size: 16145
2005-04-14
17:58
Implement my experimental arcfour modes. The 256-bit version is disabled until I can test it against someone else's implementation. file: [92d1696cdb] check-in: [3782733aa1] user: ben branch: trunk, size: 16093
2005-03-10
10:36
Consistently use a single notation to refer to SSH protocol versions, as discussed. Use Barrett and Silverman's convention of "SSH-1" for SSH protocol version 1 and "SSH-2" for protocol 2 ("SSH1"/"SSH2" refer to ssh.com implementations in this scheme). <http://www.snailbook.com/terms.html> file: [626f5bd193] check-in: [59a5e883d1] user: jacob branch: trunk, size: 16046
2005-02-27
17:01
Improvements to PuTTYgen error reporting: - will now display a reason when it fails to load a key - uses existing error return from native keys - import.c had a lot of error descriptions which weren't going anywhere; since the strings are probably taking up space in the binary, we may as well use them file: [630d79df43] check-in: [c5c5fb953d] user: jacob branch: trunk, size: 16041
2005-01-16
08:02
Owen tells me the Mac compiler complains at a char / unsigned char mismatch in the invocation of hmacmd5_key(). Do it properly with a void * argument. file: [70fc95cc32] check-in: [7b7d4829ed] user: simon branch: trunk, size: 15995
2004-12-30
10:45
Integrate unfix.org's IPv6 patches up to level 10, with rather a lot of polishing to bring them to what I think should in principle be release quality. Unlike the unfix.org patches themselves, this checkin enables IPv6 by default; if you want to leave it out, you have to build with COMPAT=-DNO_IPV6. I have tested that this compiles on Visual C 7 (so the nightlies _should_ acquire IPv6 support without missing a beat), but since I don't have IPv6 set up myself I haven't actually tested that it _works_. It still seems to make correct IPv4 connections, but that's all I've been able to verify for myself. Further testing is needed. file: [6404e95065] check-in: [99d7fec46d] user: simon branch: trunk, size: 16004
2004-12-28
08:07
SSH port forwarding is now configurable in mid-session. After doing Change Settings, the port forwarding setup function is run again, and tags all existing port forwardings as `do not keep'. Then it iterates through the config in the normal way; when it encounters a port forwarding which is already in the tree, it tags it `keep' rather than setting it up from scratch. Finally, it goes through the tree and removes any that haven't been labelled `keep'. Hence, editing the list of forwardings in Change Settings has the effect of cancelling any forwardings you remove, and adding any new ones. The SSH panel now appears in the reconfig box, and is empty apart from a message explaining that it has to be there for subpanels of it to exist. Better wording for this message would be welcome. file: [6c55f704b9] check-in: [771c5deefb] user: simon branch: trunk, size: 15953
2004-12-22
04:53
Support diffie-hellman-group14-sha1 group exchange. Tested against locally built OpenSSH 3.9, and seems to work fine. file: [bec772f2a2] check-in: [1716598298] user: simon branch: trunk, size: 15893
2004-10-06
17:31
X forwarding changes: - new function platform_get_x_display() to find a sensible local display. On Unix, the Gtk apps weren't taking account of --display when determining where to send forwarded X traffic. - explicitly document that leaving X display location blank in config tries to do something sensible (and that it's now blank by default) - don't override X11Display setting in plink, since that's more properly done later file: [917ecc6a7c] check-in: [3d586c00d5] user: jacob branch: trunk, size: 15686
2004-09-29
18:57
Mention the negotiated SSH-2 MAC algorithm(s) in the Event Log. (It should be possible to at least see what MAC is in use without going to a SSH packet log.) file: [3369f686cc] check-in: [c7e8751c9d] user: jacob branch: trunk, size: 15603
2004-08-30
08:11
Malcolm Smith's patch to support CHAP (digest-based) authentication when talking to SOCKS 5 proxies. Configures itself transparently (if the proxy offers CHAP it will use it, otherwise it falls back to ordinary cleartext passwords). file: [5b6aa24700] check-in: [ec02c8cc8f] user: simon branch: trunk, size: 15582
2004-08-01
07:07
Merged SSH1 robustness changes from 0.55 release branch on to trunk. file: [5184de71dc] check-in: [461113bfb0] user: simon branch: trunk, size: 15269
2004-05-31
09:01
RJK's patch to enable PuTTY's X forwarding to connect to local X servers using Unix sockets (on Unix only, obviously!). file: [de88266c0e] check-in: [8f708bbf81] user: simon branch: trunk, size: 15231
2004-01-22
13:15
Added a command-line key generation tool. Currently builds and runs on Linux, but the (very few) platform-specific bits are already abstracted out of the main code, so it should port to other platforms with a minimum of fuss. file: [1a253d4cf1] check-in: [78dba49b08] user: simon branch: trunk, size: 14945
2003-08-29
17:52
Work towards wish `keyfile-diagnostic'. Many sshpubk.c keyfile-loading functions have sprouted `**errorstr' arguments, which if non-NULL can return a textual error message. The interface additions are patchy and ad-hoc since this seemed to suit the style of the existing interfaces. I've since realised that most of this is masked by sanity-checking that gets done before these functions are called, but it will at least report MAC failures and the like (tested on Unix), which was the original point of the exercise. Note that not everyone who could be using this information is at the moment. file: [210eab07d0] check-in: [3623e79240] user: jacob branch: trunk, size: 14838
2003-05-13
13:23
Rename crc32() to crc32_compute(), to avoid clashing catastrophically with the crc32() function in the zlib interface. (Not that PuTTY itself _uses_ zlib, but on Unix it's linked against libgtk which uses libpng which uses zlib. And zlib has poor namespace management so it defines this ridiculously intrusive function name. Arrrrgh.) file: [6cd46700f3] check-in: [3bdddd4aca] user: simon branch: trunk, size: 14741
2003-05-04
09:18
Colin's const-fixing Patch Of Death. Seems to build fine on Windows as well as Unix, so it can go in. file: [ce33c196b6] check-in: [c9f1945192] user: simon branch: trunk, size: 14733
2003-04-23
09:48
Added framework to sshbn.c to make it possible to vary the underlying integer type forming the Bignum. Using this, arranged that gcc/x86 uses 32-bit chunks rather than the guaranteed ANSI- portable 16-bit chunks. This has gained another 30% on key exchanges by my measurements, but I'm not yet convinced that it's all perfectly robust - it seems to work fine for SSH1 and SSH2/RSA but I haven't ensured that every bignum routine is actually being tested, so it may yet show up problems in DSA or key generation. file: [29cb3353fb] check-in: [3769f9433e] user: simon branch: trunk, size: 14706
2003-04-05
05:45
Dynamic port forwarding by means of a local SOCKS server. Fully supports SOCKS 4, SOCKS 4A and SOCKS 5 (well, actually IPv6 in SOCKS 5 isn't supported, but it'll be no difficulty once I actually get round to it). Thanks to Chas Honton for his `stone soup' patch: I didn't end up actually using any of his code, but it galvanised me into doing it properly myself :-) file: [d75cf80d09] check-in: [9c2b8c4c52] user: simon branch: trunk, size: 14647
2003-02-01
06:54
Created new data types `Filename' and `FontSpec', intended to be opaque to all platform-independent modules and only handled within per-platform code. `Filename' is there because the Mac has a magic way to store filenames (though currently this checkin doesn't support it!); `FontSpec' is there so that all the auxiliary stuff such as font height and charset and so on which is needed under Windows but not Unix can be kept where it belongs, and so that I can have a hope in hell of dealing with a font chooser in the forthcoming cross-platform config box code, and best of all it gets the horrid font height wart out of settings.c and into the Windows code where it should be. The Mac part of this checkin is a bunch of random guesses which will probably not quite compile, but which look roughly right to me. Sorry if I screwed it up, Ben :-) file: [130ec6a8ec] check-in: [497dc397e7] user: simon branch: trunk, size: 14582
2003-01-15
17:30
Add the ability to close sessions. This adds *_free() functions to most areas of the code. Not all back-ends have been tested, but Telnet and SSH behave reasonably. Incidentally, almost all of this patch was written through Mac PuTTY, admittedly over a Telnet connection. file: [50c8da8b33] check-in: [c4f9059891] user: ben branch: trunk, size: 14394
2003-01-12
09:26
proxy.c now no longer refers to `cfg'. Instead, each of the three proxy-indirection network functions (name_lookup, new_connection, new_listener) takes a `const Config *' as an argument, and extracts enough information from it before returning to handle that particular network operation in accordance with the proxy settings it specifies. This involved {win,ux}net.c due to a `const' repercussion. file: [93c690c944] check-in: [894cb1e750] user: simon branch: trunk, size: 14359
08:56
There's no real need for portfwd.c to reference `cfg' directly, when it only needs one item from it and that can easily be passed in from the call site in ssh.c. file: [d4c59d2b94] check-in: [e5b0235ad5] user: simon branch: trunk, size: 14305
08:11
Support for XDM-AUTHORIZATION-1 at the SSH server end, making use of the remote IP/port data provided by the server for forwarded connections. Disabled by default, since it's incompatible with SSH2, probably incompatible with some X clients, and tickles a bug in at least one version of OpenSSH. file: [e03ddc94e5] check-in: [55fa8e003a] user: simon branch: trunk, size: 14290
2003-01-11
08:20
Move the prototype for platform_get_x11_auth() from x11fwd.c to ssh.h so that it can be checked against the implementation. file: [a62fb6ec82] check-in: [81acda317b] user: ben branch: trunk, size: 14191
03:31
Support XDM-AUTHORIZATION-1 for connecting to local X servers. If we're going to be a security program, we can at least make a token effort to use the most secure local X auth available! And I'm still half-tempted to see if I can support it for remote X servers too... file: [31632ffde2] check-in: [82547fdbe1] user: simon branch: trunk, size: 14020
2003-01-10
12:33
Introduce framework for authenticating with the local X server. Windows and Mac backends have acquired auth-finding functions which do nothing; Unix backend has acquired one which actually works, so Plink can now do X forwarding believably. (This checkin stretches into some unlikely parts of the code because there have been one or two knock-on effects involving `const'. Bah.) file: [d4f07f4e08] check-in: [5ec7a0298b] user: simon branch: trunk, size: 13944
2003-01-05
17:28
Move prototypes for base64_decode_atom(), base64_lines(), and base64_encode() from import.c to ssh.h, so that the implementation can see them. This necessitates ssh.h's including <stdio.h>. Also remove a spare prototype for base64_encode_atom() from import.c. file: [76283c5399] check-in: [07dc052ae1] user: ben branch: trunk, size: 13892
16:53
Move x11fwd and portfwd prototypes from ssh.c into ssh.h so they can be seen by (and checked against) the definitions. file: [d5ea469948] check-in: [f286ce2a32] user: ben branch: trunk, size: 13685
2002-10-26
07:58
Yet more global-removal. The static variables in logging.c are now absent, and also (I think) all the frontend request functions (such as request_resize) take a context pointer, so that multiple windows can be handled sensibly. I wouldn't swear to this, but I _think_ that only leaves the Unicode stuff as the last stubborn holdout. file: [a3370467c3] check-in: [8fba443d8c] user: simon branch: trunk, size: 12896
05:33
Port forwarding module now passes backend handles around properly. As a result I've now been able to turn the global variables `back' and `backhandle' into module-level statics in the individual front ends. Now _that's_ progress! file: [95e14b6fab] check-in: [06cff2eb6c] user: simon branch: trunk, size: 12888
2002-10-25
08:26
The Zlib module now uses dynamically allocated contexts. I think that completes the static-removal in the crypto library. Ooh. file: [acd8b5631f] check-in: [d666740d70] user: simon branch: trunk, size: 12905
08:08
Diffie-Hellman key exchange now uses a dynamically allocated context. file: [c821324c7a] check-in: [28d1810cc5] user: simon branch: trunk, size: 12692
07:58
SSH CRC attack detector now uses a dynamically allocated context. file: [757a5b73c0] check-in: [45540e784d] user: simon branch: trunk, size: 12660
07:51
SSH2 MACs now use dynamically allocated contexts. file: [4f6c25fdda] check-in: [fb0d4d686d] user: simon branch: trunk, size: 12571
07:35
SSH ciphers now use dynamically allocated contexts. file: [252cf5b863] check-in: [f12024de9a] user: simon branch: trunk, size: 12525
06:30
Major destabilisation, phase 2. This time it's the backends' turn: each backend now stores all its internal variables in a big struct, and each backend function gets a pointer to this struct passed to it. This still isn't the end of the work - lots of subsidiary things still use globals, notably all the cipher and compressor modules and the X11 forwarding authentication stuff. But ssh.c itself has now been transformed, and that was the really painful bit, so from here on it all ought to be a sequence of much smaller and simpler pieces of work. file: [2b32f2f729] check-in: [92e8b2cec5] user: simon branch: trunk, size: 12415
2002-05-13
11:56
Add some basic framework code preparatory to adding key export. file: [10aeeb5977] check-in: [43c3b91680] user: simon branch: trunk, size: 12367
2002-05-11
11:45
Added a framework for importing foreign key formats, and implemented importing of OpenSSH SSH2 private key files (both encrypted and unencrypted). Seems to work fine. file: [c4d5a7134f] check-in: [b7502058f0] user: simon branch: trunk, size: 12184
07:13
Improved error messages if you use the wrong key type: you should now be told that the key is the wrong type, _and_ what type it is, rather than being given a blanket `unable to read key file' message. file: [759f1adf8f] check-in: [9f93ab88b5] user: simon branch: trunk, size: 11680
2002-01-08
05:57
Add the CRC32 compensation attack detector that all other SSH clients have had for ages and I forgot about. Of course I've got the version with the buffer overflow fixed! file: [889bc839a0] check-in: [b36f8f4376] user: simon branch: trunk, size: 11507
2001-12-30
09:58
Pageant is now able to avoid asking for the passphrase when asked to load a key that is already loaded. This makes command lines such as `pageant mykey -c mycommand' almost infinitely more useful. file: [330b9826ad] check-in: [9fe4ceb718] user: simon branch: trunk, size: 11313
2001-11-25
08:31
INCOMPATIBLE CHANGE to the SSH2 private key file format. There is now a passphrase-keyed MAC covering _all_ important data in the file, including the public blob and the key comment. Should conclusively scupper any attacks based on nobbling the key file in an attempt to sucker the machine that decrypts it. MACing the comment field also protects against a key-substitution attack (if someone's worked out a way past our DSA protections and can extract the private key from a signature, swapping key files and substituting comments might just enable them to get the signature they need to do this. Paranoid, but might as well). file: [c1fbbc80c1] check-in: [33213fd301] user: simon branch: trunk, size: 11151
2001-11-21
17:06
Add single-DES support in SSH2 file: [d1587a5c9b] check-in: [f30ca2d0e9] user: simon branch: trunk, size: 11035
2001-11-12
03:19
Remember to initialise p->nphases to zero in progress report structure. file: [7c4a7c7c1a] check-in: [e36e8a43a6] user: simon branch: trunk, size: 10992
2001-09-22
15:52
Add support for DSA authentication in SSH2, following clever ideas on how to get round the problem of generating a good k. file: [2148f6af4c] check-in: [49dcc2ded6] user: simon branch: trunk, size: 10964
2001-09-15
09:58
Cygwin build fixes: update the dependencies, add -DNO_SECURITY to the Cygwin CFLAGS, and declare `struct ssh_channel' in ssh.h to prevent gcc warning about scope-confined-to-parameter-list. file: [c0b13011e6] check-in: [04a880af46] user: simon branch: trunk, size: 10092
2001-08-26
13:32
PSCP now uses the modern SFTP protocol if it can, and falls back to scp1 if it can't. Currently not very tested - I checked it in as soon as it completed a successful recursive copy in both directions. Also, one known bug: you can't specify a remote wildcard, because by the nature of SFTP we'll need to implement the wildcard engine on the client side. I do intend to do this (and use the same wildcard engine in PSFTP as well) but I haven't got round to it yet. file: [60e03d257f] check-in: [0d8a92d58d] user: simon branch: trunk, size: 10071
2001-08-25
12:09
Extensive changes that _should_ fix the socket buffering problems, by ceasing to listen on input channels if the corresponding output channel isn't accepting data. Has had basic check-I-didn't-actually- break-anything-too-badly testing, but hasn't been genuinely tested in stress conditions (because concocting stress conditions is non- trivial). file: [17e66ce3fb] check-in: [e84a3c910c] user: simon branch: trunk, size: 9847
2001-08-08
15:44
SSH port forwarding! How cool is that? Only currently works on SSH1; SSH2 should be doable but it's late and I have other things to do tonight. The Cool Guy award for this one goes to Nicolas Barry, for doing most of the work and actually understanding the code he was adding to. file: [9eea048dc2] check-in: [c9959c44e1] user: simon branch: trunk, size: 9669
2001-05-06
09:35
Run entire source base through GNU indent to tidy up the varying coding styles of the various contributors! Woohoo! file: [a5b02e4a0b] check-in: [18fcbbf5a2] user: simon branch: trunk, size: 9476
2001-04-17
03:24
Having now compiled the last few days' changes with MSVC, it's turned up a bunch of warnings, mostly unused variables. All fixed. file: [472172f316] check-in: [24eb277009] user: simon branch: trunk, size: 9453
2001-04-16
06:16
Pageant interface changes. You can now do `pageant -c command' to spawn another command after starting Pageant. Also, if Pageant is already running, `pageant keyfile' and `pageant -c command' will do the Right Thing, that is, add the key to the _first_ Pageant and/or run a command and then exit. The only time you now get the `Pageant is already running' error is if you try to start the second copy with no arguments. NB the affected files in this checkin are rather wide-ranging because I renamed the not really SSH1-specific `ssh1_bignum_bitcount' function to just `bignum_bitcount'. file: [f4badf8fe8] check-in: [64fef963cc] user: simon branch: trunk, size: 9418
2001-03-23
03:20
Fix a couple of silly compiler warnings file: [fc3ebc4e48] check-in: [dd4600f52e] user: simon branch: trunk, size: 9355
2001-03-15
06:15
At long last: PuTTY will now report its version to the server sensibly, as a release or a snapshot or a local build. With any luck this should make bug reporting easier to handle, because anyone who sends their Event Log should automatically include the version :-) file: [c19f3d663e] check-in: [8291e66ea6] user: simon branch: trunk, size: 9319
2001-03-10
05:04
Add support for using Diffie-Hellman with short exponents (sshdh.c contains a reference to a paper on the subject). Reduces time taken for DH group exchange to the point where it's viable to enable it all the time, so I have. :-) file: [2f3ef7f6e7] check-in: [d67b4799b9] user: simon branch: trunk, size: 9228
2001-03-05
10:38
Make the SSH2 traffic analysis defence robust in the face of Zlib compression. This involves introducing an option to disable Zlib compression (that is, continue to work within the Zlib format but output an uncompressed block) for the duration of a single packet. file: [3e34691ede] check-in: [b3e5c90b5b] user: simon branch: trunk, size: 9223
2001-03-03
09:56
SSH2 can now use Pageant to obtain keys from file: [429e1fff50] check-in: [3ae72a462d] user: simon branch: trunk, size: 9185
09:31
Add support for the OpenSSH SSH2 agent protocol. file: [02585a8f71] check-in: [328b5f83c7] user: simon branch: trunk, size: 8244
05:54
Preliminary support for RSA user authentication in SSH2! Most of the error messages are currently wrong, and Pageant doesn't yet support the new key type, and I haven't thoroughly tested that falling back to password authentication and trying invalid keys etc all work. But what I have here has successfully performed a public key authentication, so it's working to at least some extent. file: [6971553650] check-in: [0761a1ad90] user: simon branch: trunk, size: 8180
2001-03-02
07:55
Support for selecting AES from the GUI. In the process, I've had to introduce another layer of abstraction in SSH2 ciphers, such that a single `logical cipher' (as desired by a user) can equate to more than one `physical cipher'. This is because AES comes in several key lengths (PuTTY will pick the highest supported by the remote end) and several different SSH2-protocol-level names (aes*-cbc, rijndael*-cbc, and an unofficial one rijndael-cbc@lysator.liu.se). file: [2508e80ae0] check-in: [6c598766ba] user: simon branch: trunk, size: 6660
2001-03-01
11:55
Diffie-Hellman group exchange in SSH2. Currently #ifdeffed out (change the sense of #ifdef DO_DIFFIE_HELLMAN_GEX in ssh.c) because it's _far_ too slow. Will be re-enabled once the bignum routines work a bit faster (or rather a _lot_ faster). file: [7510585515] check-in: [886d6012e2] user: simon branch: trunk, size: 6443
11:45
Add a key length indication to each SSH2 cipher structure, in preparation for needing to know how much key material each cipher needs in order to select a suitable Diffie-Hellman group. file: [1c7f200b9a] check-in: [c3e83708f2] user: simon branch: trunk, size: 6396
11:41
Remove the last lingering knowledge, outside sshbn.c, of the internal structure of the Bignum type. Bignum is now a fully opaque type unless you're inside sshbn.c. file: [59dc9c9e7f] check-in: [92ac2a679e] user: simon branch: trunk, size: 6380
2000-12-12
04:33
Make memory management uniform: _everything_ now goes through the smalloc() macros and thence to the safemalloc() functions in misc.c. This should allow me to plug in a debugging allocator and track memory leaks and segfaults and things. file: [0f48e82d3e] check-in: [6f56ef599a] user: simon branch: trunk, size: 6324
2000-12-02
06:48
Improve SSH2 host key abstraction into a generic `signing key' abstraction, so as to be able to re-use the same abstraction for user authentication keys and probably in the SSH2 agent (when that happens) as well. file: [da2cfc805c] check-in: [be763a8b3a] user: simon branch: trunk, size: 6301
2000-11-01
15:34
Implement Zlib compression, in both SSH1 and SSH2. file: [f53f331431] check-in: [7db26db390] user: simon branch: trunk, size: 6162
2000-10-23
11:11
Make the frankly ridiculous prototypes for modpow() and modmul() more sane file: [7d18e2a4f4] check-in: [85bccc2b87] user: simon branch: trunk, size: 5603
2000-10-19
10:43
PuTTYgen initial version. Still to do are basic user-friendliness features (prompt for passphrase twice, prompt before overwriting a file, check the key file was actually saved OK), testing of the generated keys to make sure I got the file format right, and support for a variable key size. I think what's already here is basically sound though. file: [5c62491867] check-in: [6ca7ca4b41] user: simon branch: trunk, size: 5629
2000-10-18
10:36
Miscellaneous cleanups and reorgs in preparation for building PuTTYgen. In particular, moved self-managing controls stuff out of windlg.c into the new and reusable winctrls.c. file: [2aa8c4a527] check-in: [bc05912afb] user: simon branch: trunk, size: 5303
10:00
RSA key generation routines, and the bignum enhancements required to support them. A key generation tool will be forthcoming soon. file: [74e95b668d] check-in: [0867c6f5f7] user: simon branch: trunk, size: 5267
2000-09-27
10:21
Rationalised host key storage. Also started code reorg: persistent-state routines have been moved out into a replaceable module winstore.c. file: [d62b908838] check-in: [0483920aa1] user: simon branch: trunk, size: 4424
2000-09-26
09:26
Implement OpenSSH-compatible RSA key fingerprints and use them throughout file: [28516608ce] check-in: [17b8b5895e] user: simon branch: trunk, size: 4328
2000-09-25
05:14
Rationalise ordering of authentication operations. Still some work to do, but at least pscp no longer hangs when prompting for a passphrase file: [ddb0dfe5b7] check-in: [8a1e546ec2] user: simon branch: trunk, size: 4266
2000-09-14
10:02
Added Pageant, a first-attempt PuTTY authentication agent file: [6ef40c1e37] check-in: [73ed12aa69] user: simon branch: trunk, size: 4250
2000-09-07
11:33
RSA key authentication in ssh1 works; SSH2 is nearly there file: [ca34b73b51] check-in: [13f290eba8] user: simon branch: trunk, size: 4040
2000-09-05
11:23
Second attempt. Can successfully decrypt the _first block_ of a packet. file: [2f4e4b0184] check-in: [30c9e5ddcd] user: simon branch: trunk, size: 2887
09:28
SSH 2 support, phase 1, debugging. Currently does Diffie-Hellman and gets the same results as the server, which is a pretty good start. file: [d51c4d606b] check-in: [bc6bddff97] user: simon branch: trunk, size: 2597
2000-04-04
09:51
Oops - now let's get that MD5 change _right_ :-) file: [0e33744f4c] check-in: [2f1af6f9c6] user: simon branch: trunk, size: 1436
09:47
Replace MD5 implementation with my own code file: [d0ddfbdcb3] check-in: [be4bd8fd38] user: simon branch: trunk, size: 1441
2000-03-24
03:45
Peter Schellenbach's patch: re-implement the PuTTY cryptographic functions as calls to the MS Crypto API. Not integrated into the Makefile yet, but should eventually allow building of an SSH-enabled PuTTY which contains no native crypto code, so it can be used everywhere (and anyone who can get the MS encryption pack can still use the SSH parts). file: [b2d613bfc1] check-in: [b248ce49d9] user: simon branch: trunk, size: 1352
2000-03-08
10:13
New CRC32 implementation, from scratch, not copyrighted by somebody else! Removed Gary S Brown's name from copyrights. Only Eric Young's DES left :-) file: [c503054d38] check-in: [d02831148a] user: simon branch: trunk, size: 1192
1999-11-09
05:10
Changes from executor: - NetHack keypad mode (Shift only works with NumLock off) - Alt-Space handling (best I could manage; not too bad considering) - Event Log rather than Telnet Negotiation Log file: [0905a97be8] check-in: [8280c29e1f] user: simon branch: trunk, size: 1207
1999-10-25
03:59
Single-DES encryption, patch courtesy of Murphy Lam file: [2595e87985] check-in: [263fe0db81] user: simon branch: trunk, size: 1182
1999-07-06
14:42
Add encryption selection, and Blowfish as second option file: [72ffba89f9] check-in: [2cefd5cfc4] user: simon branch: trunk, size: 1156
1999-01-08
07:10
John Sullivan's patches plus more fixes: - Stop using the identifier `environ' as some platforms make it a macro - Fix silly error box at end of connection in FWHACK mode - Fix GPF on maximise-then-restore - Use SetCapture to allow drag-selecting outside the window - Correctly update window title when iconic and in win_name_always mode file: [db4df35fc8] check-in: [58b2a07677] user: simon branch: trunk, size: 1071
07:02
Added: Initial checkin: beta 0.43 file: [956b14ba47] check-in: [948f3f876e] user: simon branch: trunk, size: 1050