@@ -674,7 +674,7 @@ bool CNode::ReceiveMsgBytes(Span<const uint8_t> msg_bytes, bool& complete)
674674 // decompose a transport agnostic CNetMessage from the deserializer
675675 bool reject_message{false };
676676 bool disconnect{false };
677- CNetMessage msg = m_deserializer->GetMessage (time, reject_message, disconnect);
677+ CNetMessage msg = m_deserializer->GetMessage (time, reject_message, disconnect, {} );
678678
679679 if (disconnect) {
680680 // v2 p2p incorrect MAC tag. Disconnect from peer.
@@ -772,7 +772,10 @@ const uint256& V1TransportDeserializer::GetMessageHash() const
772772 return data_hash;
773773}
774774
775- CNetMessage V1TransportDeserializer::GetMessage (const std::chrono::microseconds time, bool & reject_message, bool & disconnect)
775+ CNetMessage V1TransportDeserializer::GetMessage (const std::chrono::microseconds time,
776+ bool & reject_message,
777+ bool & disconnect,
778+ Span<const std::byte> aad)
776779{
777780 // Initialize out parameter
778781 reject_message = false ;
@@ -877,7 +880,10 @@ int V2TransportDeserializer::readData(Span<const uint8_t> pkt_bytes)
877880 return copy_bytes;
878881}
879882
880- CNetMessage V2TransportDeserializer::GetMessage (const std::chrono::microseconds time, bool & reject_message, bool & disconnect)
883+ CNetMessage V2TransportDeserializer::GetMessage (const std::chrono::microseconds time,
884+ bool & reject_message,
885+ bool & disconnect,
886+ Span<const std::byte> aad)
881887{
882888 const size_t min_contents_size = 1 ; // BIP324 1-byte message type id is the minimum contents
883889
@@ -896,7 +902,7 @@ CNetMessage V2TransportDeserializer::GetMessage(const std::chrono::microseconds
896902
897903 BIP324HeaderFlags flags;
898904 size_t msg_type_size = 1 ; // at least one byte needed for message type
899- if (m_cipher_suite->Crypt ({} ,
905+ if (m_cipher_suite->Crypt (aad ,
900906 Span{reinterpret_cast <const std::byte*>(vRecv.data () + BIP324_LENGTH_FIELD_LEN), BIP324_HEADER_LEN + m_contents_size + RFC8439_EXPANSION},
901907 Span{reinterpret_cast <std::byte*>(vRecv.data ()), m_contents_size}, flags, false )) {
902908 // MAC check was successful
@@ -984,7 +990,7 @@ bool V2TransportSerializer::prepareForTransport(CSerializedNetMsg& msg, std::vec
984990
985991 BIP324HeaderFlags flags{BIP324_NONE};
986992 // encrypt the payload, this should always succeed (controlled buffers, don't check the MAC during encrypting)
987- auto success = m_cipher_suite->Crypt ({} ,
993+ auto success = m_cipher_suite->Crypt (msg. aad ,
988994 Span{reinterpret_cast <const std::byte*>(msg.data .data ()), contents_size},
989995 Span{reinterpret_cast <std::byte*>(msg.data .data ()), encrypted_pkt_size},
990996 flags, true );
0 commit comments