1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 01:48:00 +00:00
putty-source/windows
Simon Tatham 320bf8479f Replace PuTTY's PRNG with a Fortuna-like system.
This tears out the entire previous random-pool system in sshrand.c. In
its place is a system pretty close to Ferguson and Schneier's
'Fortuna' generator, with the main difference being that I use SHA-256
instead of AES for the generation side of the system (rationale given
in comment).

The PRNG implementation lives in sshprng.c, and defines a self-
contained data type with no state stored outside the object, so you
can instantiate however many of them you like. The old sshrand.c still
exists, but in place of the previous random pool system, it's just
become a client of sshprng.c, whose job is to hold a single global
instance of the PRNG type, and manage its reference count, save file,
noise-collection timers and similar administrative business.

Advantages of this change include:

 - Fortuna is designed with a more varied threat model in mind than my
   old home-grown random pool. For example, after any request for
   random numbers, it automatically re-seeds itself, so that if the
   state of the PRNG should be leaked, it won't give enough
   information to find out what past outputs _were_.

 - The PRNG type can be instantiated with any hash function; the
   instance used by the main tools is based on SHA-256, an improvement
   on the old pool's use of SHA-1.

 - The new PRNG only uses the completely standard interface to the
   hash function API, instead of having to have privileged access to
   the internal SHA-1 block transform function. This will make it
   easier to revamp the hash code in general, and also it means that
   hardware-accelerated versions of SHA-256 will automatically be used
   for the PRNG as well as for everything else.

 - The new PRNG can be _tested_! Because it has an actual (if not
   quite explicit) specification for exactly what the output numbers
   _ought_ to be derived from the hashes of, I can (and have) put
   tests in cryptsuite that ensure the output really is being derived
   in the way I think it is. The old pool could have been returning
   any old nonsense and it would have been very hard to tell for sure.
2019-01-23 22:36:17 +00:00
..
installer.wxs Fix platform field in Windows on Arm installers. 2018-08-21 07:17:06 +01:00
msiplatform.py Fix platform field in Windows on Arm installers. 2018-08-21 07:17:06 +01:00
pageant.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
pageant.mft Make manifest files work with 64bit builds of PuTTY. 2015-08-15 13:54:44 +01:00
pageant.rc Pageant and PuTTYgen About boxes: add the website button. 2017-02-22 07:06:00 +00:00
pageants.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
plink.rc `win-versioninfo': all builds of all Windows binaries now contain 2005-10-04 14:13:28 +00:00
pscp.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
pscp.rc `win-versioninfo': all builds of all Windows binaries now contain 2005-10-04 14:13:28 +00:00
psftp.rc `win-versioninfo': all builds of all Windows binaries now contain 2005-10-04 14:13:28 +00:00
putty.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
putty.iss Update version number for 0.70 release. 2017-07-04 20:29:54 +01:00
putty.mft Make manifest files work with 64bit builds of PuTTY. 2015-08-15 13:54:44 +01:00
putty.rc `win-versioninfo': all builds of all Windows binaries now contain 2005-10-04 14:13:28 +00:00
puttycfg.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
puttygen.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
puttygen.mft Make manifest files work with 64bit builds of PuTTY. 2015-08-15 13:54:44 +01:00
puttygen.rc Pageant and PuTTYgen About boxes: add the website button. 2017-02-22 07:06:00 +00:00
puttyins.ico `installer.ico' doesn't fit into 8.3, so gets truncated to INSTALLE.ICO in 2007-02-06 22:39:15 +00:00
puttytel.mft Give PuTTYtel its own Windows manifest file. 2018-10-06 11:57:59 +01:00
puttytel.rc Give PuTTYtel its own Windows manifest file. 2018-10-06 11:57:59 +01:00
rcstuff.h Remove Makefile.bor. 2017-09-13 19:26:28 +01:00
README-msi.txt Switch chiark URLs to https. 2017-05-07 16:29:01 +01:00
README.txt Switch chiark URLs to https. 2017-05-07 16:29:01 +01:00
sizetip.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
version.rc2 Rewrite some comments with FIXMEs in them. 2018-10-06 11:57:59 +01:00
website.url Switch chiark URLs to https. 2017-05-07 16:29:01 +01:00
win_res.h Use readonly edit controls in some Windows dialogs. 2016-02-29 19:59:35 +00:00
win_res.rc2 Rewrite some comments with FIXMEs in them. 2018-10-06 11:57:59 +01:00
wincapi.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
wincapi.h Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
wincfg.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
wincons.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
winctrls.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
windefs.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
windlg.c Remove a load of obsolete printf string limits. 2018-12-08 21:06:59 +00:00
window.c Label random-noise sources with an enum of ids. 2019-01-23 22:36:17 +00:00
wingss.c Fix a Windows warning on a strange cast. 2018-06-03 16:52:25 +01:00
winhandl.c Label random-noise sources with an enum of ids. 2019-01-23 22:36:17 +00:00
winhelp.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
winhelp.h Add option whether to include header when logging. 2018-09-26 12:13:01 +01:00
winhsock.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
winjump.c Nitpick: fix missing 'void' in one declaration. 2018-11-03 13:45:00 +00:00
winmisc.c Move some of winmisc.c into winmiscs.c. 2019-01-12 08:14:54 +00:00
winmiscs.c Support hardware AES on Arm platforms. 2019-01-16 22:08:50 +00:00
winnet.c Label random-noise sources with an enum of ids. 2019-01-23 22:36:17 +00:00
winnoise.c Replace PuTTY's PRNG with a Fortuna-like system. 2019-01-23 22:36:17 +00:00
winnojmp.c Fix up svn:eol-style and svn:keywords on new files. 2010-12-27 00:24:48 +00:00
winnpc.c Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
winnps.c Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
winpgen.c Replace PuTTY's PRNG with a Fortuna-like system. 2019-01-23 22:36:17 +00:00
winpgnt.c Remove a lot of pointless 'struct' keywords. 2019-01-04 08:04:39 +00:00
winpgntc.c Replace assert(false) with an unreachable() macro. 2019-01-03 08:12:28 +00:00
winplink.c Label random-noise sources with an enum of ids. 2019-01-23 22:36:17 +00:00
winprint.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
winproxy.c Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
winsecur.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
winsecur.h Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
winser.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
winsftp.c Label random-noise sources with an enum of ids. 2019-01-23 22:36:17 +00:00
winshare.c Access all hashes and MACs through the standard API. 2019-01-20 17:09:24 +00:00
winstore.c Fix a segfault in store_host_key. 2018-11-07 21:12:21 +00:00
winstuff.h Move defn of PLATFORM_HAS_SMEMCLR into defs.h. 2019-01-03 23:33:10 +00:00
wintime.c wintime: add a precautionary memset to zero. 2017-02-14 23:25:25 +00:00
winucs.c Start using C99 variadic macros. 2018-12-08 20:48:41 +00:00
winutils.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
winx11.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00

PuTTY README
============

This is the README file for the PuTTY installer distribution. If
you're reading this, you've probably just run our installer and
installed PuTTY on your system.

What should I do next?
----------------------

If you want to use PuTTY to connect to other computers, or use PSFTP
to transfer files, you should just be able to run them from the
Start menu.

If you want to use the command-line-only file transfer utility PSCP,
you will probably want to put the PuTTY installation directory on
your PATH. On Windows 7 and similar versions, you can do this at
Control Panel > System and Security > System > Advanced system
settings > Environment Variables.

Some versions of Windows will refuse to run HTML Help files (.CHM)
if they are installed on a network drive. If you have installed
PuTTY on a network drive, you might want to check that the help file
works properly. If not, see http://support.microsoft.com/kb/896054
for information on how to solve this problem.

What do I do if it doesn't work?
--------------------------------

The PuTTY home web site is

    https://www.chiark.greenend.org.uk/~sgtatham/putty/

Here you will find our list of known bugs and pending feature
requests. If your problem is not listed in there, or in the FAQ, or
in the manuals, read the Feedback page to find out how to report
bugs to us. PLEASE read the Feedback page carefully: it is there to
save you time as well as us. Do not send us one-line bug reports
telling us `it doesn't work'.