Skip to content

Commit

Permalink
[msg] Reorder header bits to match spec. (#7861)
Browse files Browse the repository at this point in the history
* [msg] Reorder header bits to match spec.

* Restyled by clang-format

Co-authored-by: Restyled.io <commits@restyled.io>
  • Loading branch information
2 people authored and pull[bot] committed Sep 10, 2021
1 parent 550e74f commit 1101007
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 22 deletions.
2 changes: 1 addition & 1 deletion src/transport/SecureMessageCodec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ CHIP_ERROR Encode(NodeId localNodeId, Transport::PeerConnectionState * state, Pa
packetHeader.SetDestinationNodeId(state->GetPeerNodeId());
}

packetHeader.GetFlags().Set(Header::FlagValues::kSecure);
packetHeader.GetFlags().Set(Header::FlagValues::kEncryptedMessage);

ReturnErrorOnFailure(payloadHeader.EncodeBeforeData(msgBuf));

Expand Down
2 changes: 1 addition & 1 deletion src/transport/SecureSessionMgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ void SecureSessionMgr::OnMessageReceived(const PeerAddress & peerAddress, System

ReturnOnFailure(packetHeader.DecodeAndConsume(msg));

if (packetHeader.GetFlags().Has(Header::FlagValues::kSecure))
if (packetHeader.GetFlags().Has(Header::FlagValues::kEncryptedMessage))
{
SecureMessageDispatch(packetHeader, peerAddress, std::move(msg));
}
Expand Down
18 changes: 6 additions & 12 deletions src/transport/raw/MessageHeader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,14 +78,14 @@ constexpr size_t kVendorIdSizeBytes = 2;
constexpr size_t kAckIdSizeBytes = 4;

/// Mask to extract just the version part from a 16bit header prefix.
constexpr uint16_t kVersionMask = 0xF000;
constexpr uint16_t kVersionMask = 0x00F0;
/// Shift to convert to/from a masked version 16bit value to a 4bit version.
constexpr int kVersionShift = 12;
constexpr int kVersionShift = 4;

/// Mask to extract just the encryption type part from a 16bit header prefix.
constexpr uint16_t kEncryptionTypeMask = 0xF0;
/// Shift to convert to/from a masked encryption type 16bit value to a 4bit encryption type.
constexpr int kEncryptionTypeShift = 4;
constexpr uint16_t kEncryptionTypeMask = 0x3000;
/// Shift to convert to/from a masked encryption type 16bit value to a 2bit encryption type.
constexpr int kEncryptionTypeShift = 12;

} // namespace

Expand Down Expand Up @@ -131,12 +131,6 @@ uint16_t MessageAuthenticationCode::TagLenForEncryptionType(Header::EncryptionTy
{
switch (encType)
{
case Header::EncryptionType::kAESCCMTagLen8:
return 8;

case Header::EncryptionType::kAESCCMTagLen12:
return 12;

case Header::EncryptionType::kAESCCMTagLen16:
return 16;

Expand All @@ -158,8 +152,8 @@ CHIP_ERROR PacketHeader::Decode(const uint8_t * const data, uint16_t size, uint1
version = ((header & kVersionMask) >> kVersionShift);
VerifyOrExit(version == kHeaderVersion, err = CHIP_ERROR_VERSION_MISMATCH);

mFlags.SetRaw(header);
mEncryptionType = static_cast<Header::EncryptionType>((header & kEncryptionTypeMask) >> kEncryptionTypeShift);
mFlags.SetRaw(header & Header::kFlagsMask);

err = reader.Read32(&mMessageId).StatusCode();
SuccessOrExit(err);
Expand Down
17 changes: 9 additions & 8 deletions src/transport/raw/MessageHeader.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,8 @@ namespace Header {

enum class EncryptionType
{
kAESCCMTagLen8 = 0,
kAESCCMTagLen12 = 1,
kAESCCMTagLen16 = 2,
kEncryptionTypeNone = 0,
kAESCCMTagLen16 = 1,
};

/**
Expand All @@ -74,16 +73,19 @@ enum class ExFlagValues : uint8_t
enum class FlagValues : uint16_t
{
/// Header flag specifying that a destination node id is included in the header.
kDestinationNodeIdPresent = 0x0100,
kDestinationNodeIdPresent = 0x0001,

/// Header flag specifying that a destination group id is included in the header.
kDestinationGroupIdPresent = 0x0002,

/// Header flag specifying that a source node id is included in the header.
kSourceNodeIdPresent = 0x0200,
kSourceNodeIdPresent = 0x0004,

/// Header flag specifying that it is a control message for secure session.
kSecureSessionControlMessage = 0x0800,
kSecureSessionControlMessage = 0x4000,

/// Header flag specifying that it is a encrypted message.
kSecure = 0x0001,
kEncryptedMessage = 0x0100,

};

Expand All @@ -97,7 +99,6 @@ using ExFlags = BitFlags<ExFlagValues>;
// | | +---Encrypted
// | +----------------Control message (TODO: Implement this)
// +--------------------Privacy enhancements (TODO: Implement this)
static constexpr uint16_t kFlagsMask = 0x0F01;

} // namespace Header

Expand Down

0 comments on commit 1101007

Please sign in to comment.