1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 01:48:00 +00:00
Commit Graph

9 Commits

Author SHA1 Message Date
Simon Tatham
0e3082ee89 New centralised binary-data marshalling system.
I've finally got tired of all the code throughout PuTTY that repeats
the same logic about how to format the SSH binary primitives like
uint32, string, mpint. We've got reasonably organised code in ssh.c
that appends things like that to 'struct Packet'; something similar in
sftp.c which repeats a lot of the work; utility functions in various
places to format an mpint to feed to one or another hash function; and
no end of totally ad-hoc stuff in functions like public key blob
formatters which actually have to _count up_ the size of data
painstakingly, then malloc exactly that much and mess about with
PUT_32BIT.

It's time to bring all of that into one place, and stop repeating
myself in error-prone ways everywhere. The new marshal.h defines a
system in which I centralise all the actual marshalling functions, and
then layer a touch of C macro trickery on top to allow me to (look as
if I) pass a wide range of different types to those functions, as long
as the target type has been set up in the right way to have a write()
function.

This commit adds the new header and source file, and sets up some
general centralised types (strbuf and the various hash-function
contexts like SHA_State), but doesn't use the new calls for anything
yet.

(I've also renamed some internal functions in import.c which were
using the same names that I've just defined macros over. That won't
last long - those functions are going to go away soon, so the changed
names are strictly temporary.)
2018-05-25 14:36:16 +01:00
Simon Tatham
1df12e3915 Add copy and free methods to 'struct ssh_hash'.
This permits a hash state to be cloned in the middle of being used, so
that multiple strings with the same prefix can be hashed without
having to repeat all the computation over the prefix.

Having done that, we'll also sometimes need to free a hash state that
we aren't generating actual hash output from, so we need a free method
as well.
2015-08-21 23:40:36 +01:00
Simon Tatham
79fe96155a Const-correctness in struct ssh_hash.
The 'bytes' function should take a const void * as input, not a void *.
2015-05-15 10:12:05 +01:00
Simon Tatham
16c46ecdaf Add smemclrs of all hash states we destroy. 2015-04-26 23:55:33 +01:00
Chris Staite
66970c4258 Provide SHA-384 and SHA-512 as hashes usable in SSH KEX.
SHA-384 was previously not implemented at all, but is a trivial
adjustment to SHA-512 (different starting constants, and truncate the
output hash). Both are now exposed as 'ssh_hash' structures so that
key exchange methods can ask for them.
2014-11-02 18:16:54 +00:00
Simon Tatham
53ec71b6e3 Patch from Tim Kosse to fix 64-bit-cleanness in SHA-512.
[originally from svn r8746]
2009-11-10 19:14:15 +00:00
Ben Harris
bffb61b5ad SHA512_Core_Init() and SHA512_Block() are unused outside this file. Make
them static.

[originally from svn r2484]
2003-01-05 23:34:00 +00:00
Simon Tatham
c7139c343c Destroy DOS line endings and unnecessary redefinition of uint32.
[originally from svn r1289]
2001-09-23 16:45:36 +00:00
Simon Tatham
f5aca9a62b Oops - another missing file :-/
[originally from svn r1287]
2001-09-23 11:57:10 +00:00