blob: e675e5a8d5e0df223f41ba5d53e3d6e93fbc0f5b [file] [log] [blame]
Jeff Thompson5cae5e52013-07-10 19:41:20 -07001/**
2 * @author: Jeff Thompson
3 * See COPYING for copyright and distribution information.
4 */
5
6#include "common.hpp"
7#include "ContentObject.hpp"
8
9using namespace std;
10
11namespace ndn {
12
13void Signature::get(struct ndn_Signature &signatureStruct) const
14{
15 signatureStruct.digestAlgorithmLength = digestAlgorithm_.size();
16 if (digestAlgorithm_.size() > 0)
17 signatureStruct.digestAlgorithm = (unsigned char *)&digestAlgorithm_[0];
18 else
19 signatureStruct.digestAlgorithm = 0;
20
21 signatureStruct.witnessLength = witness_.size();
22 if (witness_.size() > 0)
23 signatureStruct.witness = (unsigned char *)&witness_[0];
24 else
25 signatureStruct.witness = 0;
26
27 signatureStruct.signatureLength = signature_.size();
28 if (signature_.size() > 0)
29 signatureStruct.signature = (unsigned char *)&signature_[0];
30 else
31 signatureStruct.signature = 0;
32}
33
34void Signature::set(const struct ndn_Signature &signatureStruct)
35{
36 setVector(digestAlgorithm_, signatureStruct.digestAlgorithm, signatureStruct.digestAlgorithmLength);
37 setVector(witness_, signatureStruct.witness, signatureStruct.witnessLength);
38 setVector(signature_, signatureStruct.signature, signatureStruct.signatureLength);
39}
40
41void SignedInfo::get(struct ndn_SignedInfo &signedInfoStruct) const
42{
43 publisherPublicKeyDigest_.get(signedInfoStruct.publisherPublicKeyDigest);
44 // TODO: Implement timestamp
45 signedInfoStruct.type = type_;
46 signedInfoStruct.freshnessSeconds = freshnessSeconds_;
47
48 signedInfoStruct.finalBlockIDLength = finalBlockID_.size();
49 if (finalBlockID_.size() > 0)
50 signedInfoStruct.finalBlockID = (unsigned char *)&finalBlockID_[0];
51 else
52 signedInfoStruct.finalBlockID = 0;
53
54 keyLocator_.get(signedInfoStruct.keyLocator);
55}
56
57void SignedInfo::set(const struct ndn_SignedInfo &signedInfoStruct)
58{
59 publisherPublicKeyDigest_.set(signedInfoStruct.publisherPublicKeyDigest);
60 // TODO: Implement timestamp
61 type_ = signedInfoStruct.type;
62 freshnessSeconds_ = signedInfoStruct.freshnessSeconds;
63 setVector(finalBlockID_, signedInfoStruct.finalBlockID, signedInfoStruct.finalBlockIDLength);
64 keyLocator_.set(signedInfoStruct.keyLocator);
65}
66
67void ContentObject::get(struct ndn_ContentObject &contentObjectStruct) const
68{
69 signature_.get(contentObjectStruct.signature);
70 name_.get(contentObjectStruct.name);
71 signedInfo_.get(contentObjectStruct.signedInfo);
72
73 contentObjectStruct.contentLength = content_.size();
74 if (content_.size() > 0)
75 contentObjectStruct.content = (unsigned char *)&content_[0];
76 else
77 contentObjectStruct.content = 0;
78}
79
80void ContentObject::set(const struct ndn_ContentObject &contentObjectStruct)
81{
82 signature_.set(contentObjectStruct.signature);
83 name_.set(contentObjectStruct.name);
84 signedInfo_.set(contentObjectStruct.signedInfo);
85 setVector(content_, contentObjectStruct.content, contentObjectStruct.contentLength);
86}
87
88}