signed-blob.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
24 #ifndef NDN_SIGNED_BLOB_HPP
25 #define NDN_SIGNED_BLOB_HPP
26 
27 #include "blob.hpp"
28 
29 namespace ndn {
30 
34 class SignedBlob : public Blob {
35 public:
40  : signedPortionBeginOffset_(0), signedPortionEndOffset_(0)
41  {
42  }
43 
52  (const Blob& blob, size_t signedPortionBeginOffset, size_t signedPortionEndOffset)
53  : Blob(blob), signedPortionBeginOffset_(signedPortionBeginOffset),
54  signedPortionEndOffset_(signedPortionEndOffset)
55  {
56  }
57 
66  (const uint8_t* value, size_t valueLength, size_t signedPortionBeginOffset, size_t signedPortionEndOffset)
67  : Blob(value, valueLength), signedPortionBeginOffset_(signedPortionBeginOffset), signedPortionEndOffset_(signedPortionEndOffset)
68  {
69  }
70 
80  (const std::vector<uint8_t> &value, size_t signedPortionBeginOffset, size_t signedPortionEndOffset)
81  : Blob(value), signedPortionBeginOffset_(signedPortionBeginOffset), signedPortionEndOffset_(signedPortionEndOffset)
82  {
83  }
84 
96  (const ptr_lib::shared_ptr<std::vector<uint8_t> > &value, bool copy,
97  size_t signedPortionBeginOffset, size_t signedPortionEndOffset)
98  : Blob(value, copy), signedPortionBeginOffset_(signedPortionBeginOffset),
99  signedPortionEndOffset_(signedPortionEndOffset)
100  {
101  }
102  SignedBlob
103  (const ptr_lib::shared_ptr<const std::vector<uint8_t> > &value, bool copy,
104  size_t signedPortionBeginOffset, size_t signedPortionEndOffset)
105  : Blob(value, copy), signedPortionBeginOffset_(signedPortionBeginOffset),
106  signedPortionEndOffset_(signedPortionEndOffset)
107  {
108  }
109 
114  DEPRECATED_IN_NDN_CPP SignedBlob
115  (const ptr_lib::shared_ptr<std::vector<uint8_t> > &value,
116  size_t signedPortionBeginOffset, size_t signedPortionEndOffset)
117  : Blob(value, false), signedPortionBeginOffset_(signedPortionBeginOffset), signedPortionEndOffset_(signedPortionEndOffset)
118  {
119  }
120  DEPRECATED_IN_NDN_CPP SignedBlob
121  (const ptr_lib::shared_ptr<const std::vector<uint8_t> > &value,
122  size_t signedPortionBeginOffset, size_t signedPortionEndOffset)
123  : Blob(value,false), signedPortionBeginOffset_(signedPortionBeginOffset), signedPortionEndOffset_(signedPortionEndOffset)
124  {
125  }
126 
130  size_t
131  signedSize() const
132  {
133  if (*this)
134  return signedPortionEndOffset_ - signedPortionBeginOffset_;
135  else
136  return 0;
137  }
138 
143  const uint8_t*
144  signedBuf() const
145  {
146  if (*this)
147  return &(*this)->front() + signedPortionBeginOffset_;
148  else
149  return 0;
150  }
151 
155  size_t
156  getSignedPortionBeginOffset() const { return signedPortionBeginOffset_; }
157 
161  size_t
162  getSignedPortionEndOffset() const { return signedPortionEndOffset_; }
163 
164 private:
165  size_t signedPortionBeginOffset_;
166  size_t signedPortionEndOffset_;
167 };
168 
169 }
170 
171 #endif
Copyright (C) 2013-2016 Regents of the University of California.
Definition: common.hpp:35
size_t signedSize() const
Return the length of the signed portion of the immutable byte array, or 0 of the pointer to the array...
Definition: signed-blob.hpp:131
const uint8_t * signedBuf() const
Return a const pointer to the first byte of the signed portion of the immutable byte array...
Definition: signed-blob.hpp:144
SignedBlob()
Create a new SignedBlob with a null pointer.
Definition: signed-blob.hpp:39
A Blob holds a pointer to an immutable byte array implemented as const std::vector.
Definition: blob.hpp:42
size_t getSignedPortionBeginOffset() const
Return the offset in the array of the beginning of the signed portion.
Definition: signed-blob.hpp:156
Blob()
Create a new Blob with a null pointer.
Definition: blob.hpp:47
size_t getSignedPortionEndOffset() const
Return the offset in the array of the end of the signed portion.
Definition: signed-blob.hpp:162
A SignedBlob extends Blob to keep the offsets of a signed portion (e.g., the bytes of Data packet)...
Definition: signed-blob.hpp:34