| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- /*
 
-  * Centralised parts of the SSH-2 MAC API, which don't need to vary
 
-  * with the MAC implementation.
 
-  */
 
- #include <assert.h>
 
- #include "ssh.h"
 
- bool ssh2_mac_verresult(ssh2_mac *mac, const void *candidate)
 
- {
 
-     unsigned char correct[64]; /* at least as big as all known MACs */
 
-     bool toret;
 
-     assert(mac->vt->len <= sizeof(correct));
 
-     ssh2_mac_genresult(mac, correct);
 
-     toret = smemeq(correct, candidate, mac->vt->len);
 
-     smemclr(correct, sizeof(correct));
 
-     return toret;
 
- }
 
- static void ssh2_mac_prepare(ssh2_mac *mac, const void *blk, int len,
 
-                              unsigned long seq)
 
- {
 
-     ssh2_mac_start(mac);
 
-     put_uint32(mac, seq);
 
-     put_data(mac, blk, len);
 
- }
 
- void ssh2_mac_generate(ssh2_mac *mac, void *blk, int len, unsigned long seq)
 
- {
 
-     ssh2_mac_prepare(mac, blk, len, seq);
 
-     ssh2_mac_genresult(mac, (unsigned char *)blk + len);
 
- }
 
- bool ssh2_mac_verify(
 
-     ssh2_mac *mac, const void *blk, int len, unsigned long seq)
 
- {
 
-     ssh2_mac_prepare(mac, blk, len, seq);
 
-     return ssh2_mac_verresult(mac, (const unsigned char *)blk + len);
 
- }
 
 
  |