mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-05 21:42:47 -05:00
Make ssh_hash and ssh_mac expose a BinarySink.
Just as I did a few commits ago with the low-level SHA_Bytes type functions, the ssh_hash and ssh_mac abstract types now no longer have a direct foo->bytes() update method at all. Instead, each one has a foo->sink() function that returns a BinarySink with the same lifetime as the hash context, and then the caller can feed data into that in the usual way. This lets me get rid of a couple more duplicate marshalling routines in ssh.c: hash_string(), hash_uint32(), hash_mpint().
This commit is contained in:
9
sshrsa.c
9
sshrsa.c
@ -838,13 +838,14 @@ static void oaep_mask(const struct ssh_hash *h, void *seed, int seedlen,
|
||||
while (datalen > 0) {
|
||||
int i, max = (datalen > h->hlen ? h->hlen : datalen);
|
||||
void *s;
|
||||
unsigned char counter[4], hash[SSH2_KEX_MAX_HASH_LEN];
|
||||
BinarySink *bs;
|
||||
unsigned char hash[SSH2_KEX_MAX_HASH_LEN];
|
||||
|
||||
assert(h->hlen <= SSH2_KEX_MAX_HASH_LEN);
|
||||
PUT_32BIT(counter, count);
|
||||
s = h->init();
|
||||
h->bytes(s, seed, seedlen);
|
||||
h->bytes(s, counter, 4);
|
||||
bs = h->sink(s);
|
||||
put_data(bs, seed, seedlen);
|
||||
put_uint32(bs, count);
|
||||
h->final(s, hash);
|
||||
count++;
|
||||
|
||||
|
Reference in New Issue
Block a user