Skip to content
  • David Goulet's avatar
    sendme: Properly record SENDMEs on both edges · 3835a3ac
    David Goulet authored and Nick Mathewson's avatar Nick Mathewson committed
    
    
    Turns out that we were only recording the "b_digest" but to have
    bidirectionnal authenticated SENDMEs, we need to use the "f_digest" in the
    forward cell situation.
    
    Because of the cpath refactoring, this commit plays with the crypt_path_ and
    relay_crypto_t API a little bit in order to respect the abstractions.
    
    Previously, we would record the cell digest as the SENDME digest in the
    decrypt cell function but to avoid code duplication (both directions needs to
    record), we now do that right after iff the cell is recognized (at the edge).
    It is now done in circuit_receive_relay_cell() instead.
    
    We now also record the cell digest as the SENDME digest in both relay cell
    encryption functions since they are split depending on the direction.
    relay_encrypt_cell_outbound() and relay_encrypt_cell_inbound() need to
    consider recording the cell digest depending on their direction (f vs b
    digest).
    
    Fixes #30428
    
    Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
    3835a3ac