10 changed files with 206 additions and 34 deletions
@ -0,0 +1,58 @@
|
||||
/**
|
||||
* @author: Jeff Thompson |
||||
* See COPYING for copyright and distribution information. |
||||
*/ |
||||
|
||||
#ifndef NDN_PUBLISHERPUBLICKEYDIGEST_HPP |
||||
#define NDN_PUBLISHERPUBLICKEYDIGEST_HPP |
||||
|
||||
#include <vector> |
||||
#include "c/PublisherPublicKeyDigest.h" |
||||
|
||||
namespace ndn { |
||||
|
||||
/**
|
||||
* A PublisherPublicKeyDigest holds the publisher public key digest value, if any. |
||||
* We make a separate class since this is used by multiple other classes. |
||||
*/ |
||||
class PublisherPublicKeyDigest { |
||||
public:
|
||||
PublisherPublicKeyDigest() { |
||||
} |
||||
|
||||
/**
|
||||
* Set the publisherPublicKeyDigestStruct to point to the entries in this PublisherPublicKeyDigest, without copying any memory. |
||||
* WARNING: The resulting pointers in publisherPublicKeyDigestStruct are invalid after a further use of this object which could reallocate memory. |
||||
* @param publisherPublicKeyDigestStruct a C ndn_PublisherPublicKeyDigest struct to receive the pointer |
||||
*/ |
||||
void get(struct ndn_PublisherPublicKeyDigest &publisherPublicKeyDigestStruct) const
|
||||
{ |
||||
publisherPublicKeyDigestStruct.publisherPublicKeyDigestLength = publisherPublicKeyDigest_.size(); |
||||
if (publisherPublicKeyDigest_.size() > 0) |
||||
publisherPublicKeyDigestStruct.publisherPublicKeyDigest = (unsigned char *)&publisherPublicKeyDigest_[0]; |
||||
else |
||||
publisherPublicKeyDigestStruct.publisherPublicKeyDigest = 0; |
||||
} |
||||
|
||||
/**
|
||||
* Clear this PublisherPublicKeyDigest, and copy from the ndn_PublisherPublicKeyDigest struct. |
||||
* @param excludeStruct a C ndn_Exclude struct
|
||||
*/ |
||||
void set(struct ndn_PublisherPublicKeyDigest &publisherPublicKeyDigestStruct)
|
||||
{ |
||||
publisherPublicKeyDigest_.clear(); |
||||
if (publisherPublicKeyDigestStruct.publisherPublicKeyDigest) |
||||
publisherPublicKeyDigest_.insert |
||||
(publisherPublicKeyDigest_.begin(), publisherPublicKeyDigestStruct.publisherPublicKeyDigest,
|
||||
publisherPublicKeyDigestStruct.publisherPublicKeyDigest + publisherPublicKeyDigestStruct.publisherPublicKeyDigestLength); |
||||
} |
||||
|
||||
const std::vector<unsigned char> &getPublisherPublicKeyDigest() const { return publisherPublicKeyDigest_; } |
||||
|
||||
private: |
||||
std::vector<unsigned char> publisherPublicKeyDigest_; |
||||
}; |
||||
|
||||
} |
||||
|
||||
#endif |
@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @author: Jeff Thompson |
||||
* See COPYING for copyright and distribution information. |
||||
*/ |
||||
|
||||
#ifndef NDN_PUBLISHERPUBLICKEYDIGEST_H |
||||
#define NDN_PUBLISHERPUBLICKEYDIGEST_H |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/**
|
||||
* A PublisherPublicKeyDigest holds a pointer to the publisher public key digest value, if any. |
||||
* We make a separate struct since this is used by multiple other structs. |
||||
*/ |
||||
struct ndn_PublisherPublicKeyDigest { |
||||
unsigned char *publisherPublicKeyDigest; /**< pointer to pre-allocated buffer. 0 for none */ |
||||
unsigned int publisherPublicKeyDigestLength; /**< length of publisherPublicKeyDigest. 0 for none */
|
||||
}; |
||||
|
||||
/**
|
||||
* Initialize an ndn_PublisherPublicKeyDigest struct with 0 for none. |
||||
*/ |
||||
static inline void ndn_PublisherPublicKeyDigest_init(struct ndn_PublisherPublicKeyDigest *self) |
||||
{ |
||||
self->publisherPublicKeyDigest = 0; |
||||
self->publisherPublicKeyDigestLength = 0; |
||||
} |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif |
@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @author: Jeff Thompson |
||||
* Derived from PublisherPublicKeyDigest.js by Meki Cheraoui. |
||||
* See COPYING for copyright and distribution information. |
||||
*/ |
||||
|
||||
#include "BinaryXML.h" |
||||
#include "BinaryXMLPublisherPublicKeyDigest.h" |
||||
|
||||
ndn_Error ndn_encodeBinaryXMLPublisherPublicKeyDigest |
||||
(struct ndn_PublisherPublicKeyDigest *publisherPublicKeyDigest, struct ndn_BinaryXMLEncoder *encoder) |
||||
{
|
||||
if (!publisherPublicKeyDigest->publisherPublicKeyDigest || publisherPublicKeyDigest->publisherPublicKeyDigestLength == 0) |
||||
return; |
||||
|
||||
ndn_Error error; |
||||
if (error = ndn_BinaryXMLEncoder_writeBlobDTagElement |
||||
(encoder, ndn_BinaryXML_DTag_PublisherPublicKeyDigest, publisherPublicKeyDigest->publisherPublicKeyDigest,
|
||||
publisherPublicKeyDigest->publisherPublicKeyDigestLength)) |
||||
return error; |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
ndn_Error ndn_decodeBinaryXMLPublisherPublicKeyDigest |
||||
(struct ndn_PublisherPublicKeyDigest *publisherPublicKeyDigest, struct ndn_BinaryXMLDecoder *decoder) |
||||
{ |
||||
ndn_Error error;
|
||||
if (error = ndn_BinaryXMLDecoder_readBinaryDTagElement |
||||
(decoder, ndn_BinaryXML_DTag_PublisherPublicKeyDigest, 0, &publisherPublicKeyDigest->publisherPublicKeyDigest, |
||||
&publisherPublicKeyDigest->publisherPublicKeyDigestLength)) |
||||
return error; |
||||
|
||||
return 0; |
||||
} |
@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @author: Jeff Thompson |
||||
* See COPYING for copyright and distribution information. |
||||
*/ |
||||
|
||||
#ifndef NDN_BINARYXMLPUBLISHERPUBLICKEYDIGEST_H |
||||
#define NDN_BINARYXMLPUBLISHERPUBLICKEYDIGEST_H |
||||
|
||||
#include "../errors.h" |
||||
#include "../PublisherPublicKeyDigest.h" |
||||
#include "BinaryXMLEncoder.h" |
||||
#include "BinaryXMLDecoder.h" |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/**
|
||||
* Encode the ndn_PublisherPublicKeyDigest struct using Binary XML. If publisherPublicKeyDigest->publisherPublicKeyDigest or |
||||
* publisherPublicKeyDigestLength is 0, then do nothing.
|
||||
* @param publisherPublicKeyDigest pointer to the ndn_PublisherPublicKeyDigest struct |
||||
* @param encoder pointer to the ndn_BinaryXMLEncoder struct |
||||
* @return 0 for success, else an error code |
||||
*/ |
||||
ndn_Error ndn_encodeBinaryXMLPublisherPublicKeyDigest |
||||
(struct ndn_PublisherPublicKeyDigest *publisherPublicKeyDigest, struct ndn_BinaryXMLEncoder *encoder); |
||||
|
||||
/**
|
||||
* Expect the next element to be a Binary XML PublisherPublicKeyDigest and decode into the ndn_PublisherPublicKeyDigest struct. |
||||
* @param publisherPublicKeyDigest pointer to the ndn_PublisherPublicKeyDigest struct |
||||
* @param decoder pointer to the ndn_BinaryXMLDecoder struct |
||||
* @return 0 for success, else an error code, including if the next element is not PublisherPublicKeyDigest. |
||||
*/ |
||||
ndn_Error ndn_decodeBinaryXMLPublisherPublicKeyDigest |
||||
(struct ndn_PublisherPublicKeyDigest *publisherPublicKeyDigest, struct ndn_BinaryXMLDecoder *decoder); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif |
Loading…
Reference in new issue