blob: 30d39df36aad42da34ddede8827acf235e21a35e [file] [log] [blame]
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -08001/**
2 * Copyright (C) 2013 Regents of the University of California.
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -08003 * See COPYING for copyright and distribution information.
4 */
5
Alexander Afanasyev09c613f2014-01-29 00:23:58 -08006#include "data.hpp"
7#include "security/key-chain.hpp"
Junxiao Shi482ccc52014-03-31 13:05:24 -07008#include "security/cryptopp.hpp"
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -08009
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070010#include "boost-test.hpp"
11
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080012using namespace std;
Alexander Afanasyev0abb2da2014-01-30 18:07:57 -080013namespace ndn {
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080014
15BOOST_AUTO_TEST_SUITE(TestData)
16
17const uint8_t Content1[] = {0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x21};
18
19const uint8_t Data1[] = {
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700200x06, 0xc5, // NDN Data
21 0x07, 0x14, // Name
22 0x08, 0x05,
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080023 0x6c, 0x6f, 0x63, 0x61, 0x6c,
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070024 0x08, 0x03,
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080025 0x6e, 0x64, 0x6e,
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070026 0x08, 0x06,
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080027 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080028 0x14, 0x04, // MetaInfo
29 0x19, 0x02, // FreshnessPeriod
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070030 0x27, 0x10,
31 0x15, 0x08, // Content
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080032 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x21,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080033 0x16, 0x1b, // SignatureInfo
34 0x1b, 0x01, // SignatureType
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070035 0x01,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080036 0x1c, 0x16, // KeyLocator
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070037 0x07, 0x14, // Name
38 0x08, 0x04,
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080039 0x74, 0x65, 0x73, 0x74,
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070040 0x08, 0x03,
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080041 0x6b, 0x65, 0x79,
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070042 0x08, 0x07,
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080043 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080044 0x17, 0x80, // SignatureValue
45 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec, 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6, 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38, 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc, 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf, 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9, 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8, 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7, 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3, 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080046};
47
48const unsigned char DEFAULT_PRIVATE_KEY_DER[] = {
490x30, 0x82, 0x02, 0x74, 0x02, 0x01, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
500x05, 0x00, 0x04, 0x82, 0x02, 0x5e, 0x30, 0x82, 0x02, 0x5a, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0x9e, 0x06, 0x3e,
510x47, 0x85, 0xb2, 0x34, 0x37, 0xaa, 0x85, 0x47, 0xac, 0x03, 0x24, 0x83, 0xb5, 0x9c, 0xa8, 0x05, 0x3a, 0x24, 0x1e, 0xeb,
520x89, 0x01, 0xbb, 0xe9, 0x9b, 0xb2, 0xc3, 0x22, 0xac, 0x68, 0xe3, 0xf0, 0x6c, 0x02, 0xce, 0x68, 0xa6, 0xc4, 0xd0, 0xa7,
530x06, 0x90, 0x9c, 0xaa, 0x1b, 0x08, 0x1d, 0x8b, 0x43, 0x9a, 0x33, 0x67, 0x44, 0x6d, 0x21, 0xa3, 0x1b, 0x88, 0x9a, 0x97,
540x5e, 0x59, 0xc4, 0x15, 0x0b, 0xd9, 0x2c, 0xbd, 0x51, 0x07, 0x61, 0x82, 0xad, 0xc1, 0xb8, 0xd7, 0xbf, 0x9b, 0xcf, 0x7d,
550x24, 0xc2, 0x63, 0xf3, 0x97, 0x17, 0xeb, 0xfe, 0x62, 0x25, 0xba, 0x5b, 0x4d, 0x8a, 0xc2, 0x7a, 0xbd, 0x43, 0x8a, 0x8f,
560xb8, 0xf2, 0xf1, 0xc5, 0x6a, 0x30, 0xd3, 0x50, 0x8c, 0xc8, 0x9a, 0xdf, 0xef, 0xed, 0x35, 0xe7, 0x7a, 0x62, 0xea, 0x76,
570x7c, 0xbb, 0x08, 0x26, 0xc7, 0x02, 0x01, 0x11, 0x02, 0x81, 0x80, 0x04, 0xa5, 0xd4, 0xa7, 0xc0, 0x2a, 0xe3, 0x6b, 0x0c,
580x8b, 0x73, 0x0c, 0x96, 0xae, 0x40, 0x1b, 0xee, 0x04, 0xf1, 0x18, 0x4c, 0x5b, 0x43, 0x29, 0xad, 0x3a, 0x3b, 0x93, 0xa3,
590x60, 0x17, 0x9b, 0xa8, 0xbb, 0x68, 0xf4, 0x1e, 0x33, 0x3f, 0x50, 0x32, 0xf7, 0x13, 0xf8, 0xa9, 0xe6, 0x7d, 0x79, 0x44,
600x00, 0xde, 0x72, 0xed, 0xf2, 0x73, 0xfa, 0x7b, 0xae, 0x2a, 0x71, 0xc0, 0x40, 0xc8, 0x37, 0x6f, 0x38, 0xb2, 0x69, 0x1f,
610xa8, 0x83, 0x7b, 0x42, 0x00, 0x73, 0x46, 0xe6, 0x4c, 0x91, 0x7f, 0x13, 0x06, 0x69, 0x06, 0xd8, 0x3f, 0x22, 0x15, 0x75,
620xf6, 0xde, 0xcd, 0xb0, 0xbc, 0x66, 0x61, 0x91, 0x08, 0x9b, 0x2b, 0xb2, 0x00, 0xa9, 0x67, 0x05, 0x39, 0x40, 0xb9, 0x37,
630x85, 0x88, 0x4f, 0x76, 0x79, 0x63, 0xc0, 0x88, 0x3c, 0x86, 0xa8, 0x12, 0x94, 0x5f, 0xe4, 0x36, 0x3d, 0xea, 0xb9, 0x02,
640x41, 0x00, 0xb6, 0x2e, 0xbb, 0xcd, 0x2f, 0x3a, 0x99, 0xe0, 0xa1, 0xa5, 0x44, 0x77, 0xea, 0x0b, 0xbe, 0x16, 0x95, 0x0e,
650x64, 0xa7, 0x68, 0xd7, 0x4b, 0x15, 0x15, 0x23, 0xe2, 0x1e, 0x4e, 0x00, 0x2c, 0x22, 0x97, 0xae, 0xb0, 0x74, 0xa6, 0x99,
660xd0, 0x5d, 0xb7, 0x1b, 0x10, 0x34, 0x13, 0xd2, 0x5f, 0x6e, 0x56, 0xad, 0x85, 0x4a, 0xdb, 0xf0, 0x78, 0xbd, 0xf4, 0x8c,
670xb7, 0x9a, 0x3e, 0x99, 0xef, 0xb9, 0x02, 0x41, 0x00, 0xde, 0x0d, 0xa7, 0x48, 0x75, 0x90, 0xad, 0x11, 0xa1, 0xac, 0xee,
680xcb, 0x41, 0x81, 0xc6, 0xc8, 0x7f, 0xe7, 0x25, 0x94, 0xa1, 0x2a, 0x21, 0xa8, 0x57, 0xfe, 0x84, 0xf2, 0x5e, 0xb4, 0x96,
690x35, 0xaf, 0xef, 0x2e, 0x7a, 0xf8, 0xda, 0x3f, 0xac, 0x8a, 0x3c, 0x1c, 0x9c, 0xbd, 0x44, 0xd6, 0x90, 0xb5, 0xce, 0x1b,
700x12, 0xf9, 0x3b, 0x8c, 0x69, 0xf6, 0xa9, 0x02, 0x93, 0x48, 0x35, 0x0a, 0x7f, 0x02, 0x40, 0x6b, 0x2a, 0x8c, 0x96, 0xd0,
710x7c, 0xd2, 0xfc, 0x9b, 0x52, 0x28, 0x46, 0x89, 0xac, 0x8d, 0xef, 0x2a, 0x80, 0xef, 0xea, 0x01, 0x6f, 0x95, 0x93, 0xee,
720x51, 0x57, 0xd5, 0x97, 0x4b, 0x65, 0x41, 0x86, 0x66, 0xc2, 0x26, 0x80, 0x1e, 0x3e, 0x55, 0x3e, 0x88, 0x63, 0xe2, 0x66,
730x03, 0x47, 0x31, 0xd8, 0xa2, 0x4e, 0x68, 0x45, 0x24, 0x0a, 0xca, 0x17, 0x61, 0xd5, 0x69, 0xca, 0x78, 0xab, 0x21, 0x02,
740x41, 0x00, 0x8f, 0xae, 0x7b, 0x4d, 0x00, 0xc7, 0x06, 0x92, 0xf0, 0x24, 0x9a, 0x83, 0x84, 0xbd, 0x62, 0x81, 0xbc, 0x2c,
750x27, 0x60, 0x2c, 0x0c, 0x33, 0xe5, 0x66, 0x1d, 0x28, 0xd9, 0x10, 0x1a, 0x7f, 0x4f, 0xea, 0x4f, 0x78, 0x6d, 0xb0, 0x14,
760xbf, 0xc9, 0xff, 0x17, 0xd6, 0x47, 0x4d, 0x4a, 0xa8, 0xf4, 0x39, 0x67, 0x3e, 0xb1, 0xec, 0x8f, 0xf1, 0x71, 0xbd, 0xb8,
770xa7, 0x50, 0x3d, 0xc7, 0xf7, 0xbb, 0x02, 0x40, 0x0d, 0x85, 0x32, 0x73, 0x9f, 0x0a, 0x33, 0x2f, 0x4b, 0xa2, 0xbd, 0xd1,
780xb1, 0x42, 0xf0, 0x72, 0xa8, 0x7a, 0xc8, 0x15, 0x37, 0x1b, 0xde, 0x76, 0x70, 0xce, 0xfd, 0x69, 0x20, 0x00, 0x4d, 0xc9,
790x4f, 0x35, 0x6f, 0xd1, 0x35, 0xa1, 0x04, 0x95, 0x30, 0xe8, 0x3b, 0xd5, 0x03, 0x5a, 0x50, 0x21, 0x6d, 0xa0, 0x84, 0x39,
800xe9, 0x2e, 0x1e, 0xfc, 0xe4, 0x82, 0x43, 0x20, 0x46, 0x7d, 0x0a, 0xb6
81};
82
Alexander Afanasyev4b456282014-02-13 00:34:34 -080083const uint8_t MetaInfo1[] = {0x14, 0x04, 0x19, 0x02, 0x27, 0x10};
84const uint8_t MetaInfo2[] = {0x14, 0x14, 0x19, 0x02, 0x27, 0x10, 0x1a, 0x0e, 0x08, 0x0c, 0x68, 0x65, 0x6c, 0x6c, 0x6f,
Alexander Afanasyev95b0e342014-02-12 21:34:44 -080085 0x2c, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21};
Alexander Afanasyev4b456282014-02-13 00:34:34 -080086const uint8_t MetaInfo3[] = {0x14, 0x17, 0x18, 0x01, 0x01, 0x19, 0x02, 0x27, 0x10, 0x1a, 0x0e, 0x08, 0x0c, 0x68, 0x65,
Alexander Afanasyev95b0e342014-02-12 21:34:44 -080087 0x6c, 0x6c, 0x6f, 0x2c, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21};
88
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080089class TestDataFixture
90{
91public:
92 TestDataFixture()
93 {
94 CryptoPP::StringSource source(DEFAULT_PRIVATE_KEY_DER, sizeof(DEFAULT_PRIVATE_KEY_DER), true);
95 privateKey_.Load(source);
96 publicKey_ = privateKey_;
97 }
98
99protected:
100 CryptoPP::AutoSeededRandomPool rng_;
101 CryptoPP::RSA::PrivateKey privateKey_;
102 CryptoPP::RSA::PublicKey publicKey_;
103};
104
105
106BOOST_FIXTURE_TEST_CASE (Decode, TestDataFixture)
107{
108 Block dataBlock(Data1, sizeof(Data1));
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700109
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800110 ndn::Data d;
111 // BOOST_REQUIRE_NO_THROW
112 (d.wireDecode(dataBlock));
113
114 BOOST_REQUIRE_EQUAL(d.getName().toUri(), "/local/ndn/prefix");
115 BOOST_REQUIRE_EQUAL(d.getContentType(), static_cast<uint32_t>(MetaInfo::TYPE_DEFAULT));
Alexander Afanasyevaa0e7da2014-03-17 14:37:33 -0700116 BOOST_REQUIRE_EQUAL(d.getFreshnessPeriod(), time::seconds(10));
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800117
118 BOOST_REQUIRE_EQUAL(std::string(reinterpret_cast<const char*>(d.getContent().value()), d.getContent().value_size()), "SUCCESS!");
119
Alexander Afanasyev76c51562014-01-03 15:13:48 -0800120 BOOST_REQUIRE_EQUAL(d.getSignature().getType(), static_cast<uint32_t>(Signature::Sha256WithRsa));
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800121 ndn::Block block = d.getSignature().getInfo();
122 block.parse();
123 KeyLocator keyLocator;
124 BOOST_REQUIRE_NO_THROW(keyLocator.wireDecode(block.get(Tlv::KeyLocator)));
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700125
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800126 BOOST_REQUIRE_EQUAL(keyLocator.getName().toUri(), "/test/key/locator");
127
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700128 using namespace CryptoPP;
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800129 RSASS<PKCS1v15, SHA256>::Verifier verifier(publicKey_);
130 bool signatureVerified = verifier.VerifyMessage(d.wireEncode().value(), d.wireEncode().value_size() - d.getSignature().getValue().size(),
131 d.getSignature().getValue().value(), d.getSignature().getValue().value_size());
132 BOOST_REQUIRE_EQUAL(signatureVerified, true);
133}
134
135BOOST_FIXTURE_TEST_CASE (Encode, TestDataFixture)
136{
137 // manual data packet creation for now
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700138
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800139 ndn::Data d(ndn::Name("/local/ndn/prefix"));
140 d.setContentType(MetaInfo::TYPE_DEFAULT);
Alexander Afanasyevaa0e7da2014-03-17 14:37:33 -0700141 d.setFreshnessPeriod(time::seconds(10));
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700142
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800143 d.setContent(Content1, sizeof(Content1));
144
145 Block signatureInfo(Tlv::SignatureInfo);
146 // SignatureType
147 {
Alexander Afanasyev90df0002014-01-03 15:32:43 -0800148 signatureInfo.push_back
149 (nonNegativeIntegerBlock(Tlv::SignatureType, Signature::Sha256WithRsa));
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800150 }
151 // KeyLocator
152 {
153 KeyLocator keyLocator;
154 keyLocator.setName("/test/key/locator");
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700155
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800156 signatureInfo.push_back(keyLocator.wireEncode());
157 }
158 signatureInfo.encode();
159
160 // SignatureValue
161 OBufferStream os;
162 Tlv::writeVarNumber(os, Tlv::SignatureValue);
163
164 using namespace CryptoPP;
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700165
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800166 RSASS<PKCS1v15, SHA256>::Signer signer(privateKey_);
167
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800168 PK_MessageAccumulator *hash = signer.NewSignatureAccumulator(rng_);
169 hash->Update(d.getName(). wireEncode().wire(), d.getName(). wireEncode().size());
170 hash->Update(d.getMetaInfo().wireEncode().wire(), d.getMetaInfo().wireEncode().size());
171 hash->Update(d.getContent(). wire(), d.getContent(). size());
172 hash->Update(signatureInfo. wire(), signatureInfo. size());
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700173
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800174 size_t length = signer.MaxSignatureLength();
175 SecByteBlock buf(length);
176 signer.Sign(rng_, hash, buf);
177
178 Tlv::writeVarNumber(os, buf.size());
179 os.write(reinterpret_cast<const char *> (buf.BytePtr()), buf.size());
180
181 ndn::Block signatureValue (Block(os.buf()));
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700182
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800183 Signature signature(signatureInfo, signatureValue);
184
185 d.setSignature(signature);
186
187 Block dataBlock;
188 BOOST_REQUIRE_NO_THROW(dataBlock = d.wireEncode());
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800189
190 BOOST_REQUIRE_EQUAL_COLLECTIONS(Data1, Data1+sizeof(Data1),
Alexander Afanasyev636e9f12014-01-07 12:01:03 -0800191 dataBlock.begin(), dataBlock.end());
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800192}
193
Alexander Afanasyev95b0e342014-02-12 21:34:44 -0800194BOOST_AUTO_TEST_CASE (EncodeMetaInfo)
195{
196 MetaInfo meta;
197 meta.setType(MetaInfo::TYPE_DEFAULT);
Alexander Afanasyevaa0e7da2014-03-17 14:37:33 -0700198 meta.setFreshnessPeriod(time::seconds(10));
Alexander Afanasyev95b0e342014-02-12 21:34:44 -0800199
200 BOOST_REQUIRE_NO_THROW(meta.wireEncode());
201 BOOST_REQUIRE_EQUAL_COLLECTIONS(MetaInfo1, MetaInfo1+sizeof(MetaInfo1),
202 meta.wireEncode().begin(), meta.wireEncode().end());
203
204 meta.setFinalBlockId(name::Component("hello,world!"));
205 BOOST_REQUIRE_NO_THROW(meta.wireEncode());
206 BOOST_REQUIRE_EQUAL_COLLECTIONS(MetaInfo2, MetaInfo2+sizeof(MetaInfo2),
207 meta.wireEncode().begin(), meta.wireEncode().end());
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700208
Alexander Afanasyev95b0e342014-02-12 21:34:44 -0800209 meta.setType(MetaInfo::TYPE_LINK);
210 BOOST_REQUIRE_NO_THROW(meta.wireEncode());
211 BOOST_REQUIRE_EQUAL_COLLECTIONS(MetaInfo3, MetaInfo3+sizeof(MetaInfo3),
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700212 meta.wireEncode().begin(), meta.wireEncode().end());
Alexander Afanasyev95b0e342014-02-12 21:34:44 -0800213}
214
215BOOST_AUTO_TEST_CASE (DecodeMetaInfo)
216{
217 MetaInfo meta(Block(MetaInfo1, sizeof(MetaInfo1)));
218 BOOST_CHECK_EQUAL(meta.getType(), static_cast<uint32_t>(MetaInfo::TYPE_DEFAULT));
Alexander Afanasyevaa0e7da2014-03-17 14:37:33 -0700219 BOOST_CHECK_EQUAL(meta.getFreshnessPeriod(), time::seconds(10));
Alexander Afanasyev95b0e342014-02-12 21:34:44 -0800220 BOOST_CHECK_EQUAL(meta.getFinalBlockId(), name::Component());
221
222 meta.wireDecode(Block(MetaInfo2, sizeof(MetaInfo2)));
223 BOOST_CHECK_EQUAL(meta.getType(), static_cast<uint32_t>(MetaInfo::TYPE_DEFAULT));
Alexander Afanasyevaa0e7da2014-03-17 14:37:33 -0700224 BOOST_CHECK_EQUAL(meta.getFreshnessPeriod(), time::seconds(10));
Alexander Afanasyev95b0e342014-02-12 21:34:44 -0800225 BOOST_CHECK_EQUAL(meta.getFinalBlockId(), name::Component("hello,world!"));
226
227 meta.wireDecode(Block(MetaInfo3, sizeof(MetaInfo3)));
228 BOOST_CHECK_EQUAL(meta.getType(), static_cast<uint32_t>(MetaInfo::TYPE_LINK));
Alexander Afanasyevaa0e7da2014-03-17 14:37:33 -0700229 BOOST_CHECK_EQUAL(meta.getFreshnessPeriod(), time::seconds(10));
Alexander Afanasyev95b0e342014-02-12 21:34:44 -0800230 BOOST_CHECK_EQUAL(meta.getFinalBlockId(), name::Component("hello,world!"));
231}
232
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800233BOOST_AUTO_TEST_SUITE_END()
Alexander Afanasyev0abb2da2014-01-30 18:07:57 -0800234
235} // namespace ndn