blob: f2215059435ec9be89f7b1c39fe3e92c2be38bfe [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#ifndef NDN_KEY_HPP
Jeff Thompson2d27e2f2013-08-09 12:55:00 -07007#define NDN_KEY_HPP
Jeff Thompson5cae5e52013-07-10 19:41:20 -07008
9#include <vector>
Jeff Thompson53412192013-08-06 13:35:50 -070010#include "c/key.h"
Jeff Thompson5cae5e52013-07-10 19:41:20 -070011
12namespace ndn {
13
14class KeyLocator {
15public:
16 KeyLocator()
17 {
18 type_ = (ndn_KeyLocatorType)-1;
19 }
20
21 /**
22 * Set the keyLocatorStruct to point to the values in this key locator, without copying any memory.
23 * WARNING: The resulting pointers in keyLocatorStruct are invalid after a further use of this object which could reallocate memory.
24 * @param keyLocatorStruct a C ndn_KeyLocator struct where the name components array is already allocated.
25 */
26 void get(struct ndn_KeyLocator &keyLocatorStruct) const;
27
28 /**
29 * Clear this key locator, and set the values by copying from the ndn_KeyLocator struct.
30 * @param keyLocatorStruct a C ndn_KeyLocator struct
31 */
32 void set(const struct ndn_KeyLocator &keyLocatorStruct);
33
34 ndn_KeyLocatorType getType() const { return type_; }
35
Jeff Thompson27cc0a02013-08-13 13:44:11 -070036 const std::vector<unsigned char> &getKeyOrCertificate() const { return keyOrCertificate_; }
Jeff Thompson5cae5e52013-07-10 19:41:20 -070037
Jeff Thompson46bd45f2013-08-08 16:46:41 -070038 // TODO: Implement getKeyName.
39
40 void setType(ndn_KeyLocatorType type) { type_ = type; }
41
42 void setKeyOrCertificate(const std::vector<unsigned char> &keyOrCertificate) { keyOrCertificate_ = keyOrCertificate; }
43 void setKeyOrCertificate(const unsigned char *keyOrCertificate, unsigned int keyOrCertificateLength)
44 {
45 setVector(keyOrCertificate_, keyOrCertificate, keyOrCertificateLength);
46 }
47
48 // TODO: Implement setKeyName.
Jeff Thompson5cae5e52013-07-10 19:41:20 -070049
50private:
51 ndn_KeyLocatorType type_;
52 std::vector<unsigned char> keyOrCertificate_; /**< used if type_ is ndn_KeyLocatorType_KEY or ndn_KeyLocatorType_CERTIFICATE */
53 // TODO: Implement keyName.
54};
55
56}
57
58#endif