aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/hicn/transport/core/packet.cc
diff options
context:
space:
mode:
authorMauro Sardara <msardara@cisco.com>2019-02-12 00:07:11 +0100
committerMauro Sardara <msardara@cisco.com>2019-02-12 16:17:06 +0000
commit45ae2768f2842cc55f153a71fa66b1d3e25e9ab7 (patch)
tree64c37894239daf920cd50d886e918271106d14b8 /libtransport/src/hicn/transport/core/packet.cc
parentfbd4dd9c5eba6f8f10bcc0db30a72ea3378c149b (diff)
[HICN-52] Fix signature computation and verification in libtransport
Change-Id: I9b30a9c9e95e2cb2f135fe7efd43e633235196d9 Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'libtransport/src/hicn/transport/core/packet.cc')
-rw-r--r--libtransport/src/hicn/transport/core/packet.cc21
1 files changed, 12 insertions, 9 deletions
diff --git a/libtransport/src/hicn/transport/core/packet.cc b/libtransport/src/hicn/transport/core/packet.cc
index 761668116..b3e5526ab 100644
--- a/libtransport/src/hicn/transport/core/packet.cc
+++ b/libtransport/src/hicn/transport/core/packet.cc
@@ -52,14 +52,13 @@ Packet::Packet(MemBufPtr &&buffer)
payload_head_(nullptr),
format_(getFormatFromBuffer(packet_start_)) {
int signature_size = 0;
+
if (_is_ah(format_)) {
signature_size = (uint32_t)getSignatureSize();
}
auto header_size = getHeaderSizeFromFormat(format_, signature_size);
-
- auto payload_length = packet_->length() - header_size - signature_size;
-
+ auto payload_length = packet_->length() - header_size;
if (!payload_length) {
return;
}
@@ -69,7 +68,7 @@ Packet::Packet(MemBufPtr &&buffer)
if (payload_length) {
auto payload = packet_->cloneOne();
payload_head_ = payload.get();
- payload_head_->advance(header_size + signature_size);
+ payload_head_->advance(header_size);
payload_head_->append(payload_length);
packet_->prependChain(std::move(payload));
packet_->append(header_size);
@@ -264,12 +263,15 @@ Packet::Format Packet::getFormat() const {
const std::shared_ptr<utils::MemBuf> Packet::data() { return packet_; }
void Packet::dump() const {
- TRANSPORT_LOGI("The header length is: %zu", headerSize());
- TRANSPORT_LOGI("The payload length is: %zu", payloadSize());
- std::cerr << std::endl;
+ std::cout << "HEADER -- Length: " << headerSize() << std::endl;
+ hicn_packet_dump((uint8_t *)header_head_->data(), headerSize());
- hicn_packet_dump((uint8_t *)packet_->data(), headerSize());
- // hicn_packet_dump((uint8_t *)packet_->next()->data(), payloadSize());
+ std::cout << std::endl << "PAYLOAD -- Length: " << payloadSize() << std::endl;
+ for (utils::MemBuf *current = payload_head_;
+ current && current != header_head_; current = current->next()) {
+ std::cout << "First MemBuf Length: " << current->length() << std::endl;
+ hicn_packet_dump((uint8_t *)current->data(), current->length());
+ }
}
void Packet::setSignatureSize(std::size_t size_bytes) {
@@ -281,6 +283,7 @@ void Packet::setSignatureSize(std::size_t size_bytes) {
}
packet_->append(size_bytes);
+ updateLength();
}
uint8_t *Packet::getSignature() const {