blob: 4f4c8c25abd11097771ec0e500d0c091b33e970c [file] [log] [blame]
Jeff Thompson41471912013-09-12 16:21:50 -07001/**
Jeff Thompson7687dc02013-09-13 11:54:07 -07002 * Copyright (C) 2013 Regents of the University of California.
Jeff Thompson06e787d2013-09-12 19:00:55 -07003 * @author: Yingdi Yu <yingdi@cs.ucla.edu>
Jeff Thompson7687dc02013-09-13 11:54:07 -07004 * @author: Jeff Thompson <jefft0@remap.ucla.edu>
Jeff Thompson41471912013-09-12 16:21:50 -07005 * See COPYING for copyright and distribution information.
6 */
7
8#ifndef NDN_IDENTITY_MANAGER_HPP
9#define NDN_IDENTITY_MANAGER_HPP
10
Jeff Thompson7b79eb62013-09-12 18:48:29 -070011#include "../../data.hpp"
Jeff Thompson86e1d752013-09-17 17:22:38 -070012#include "private-key-storage.hpp"
Jeff Thompson41471912013-09-12 16:21:50 -070013
14namespace ndn {
15
16class IdentityManager {
17public:
Jeff Thompson86e1d752013-09-17 17:22:38 -070018 IdentityManager(const ptr_lib::shared_ptr<PrivateKeyStorage> &privateKeyStorage)
19 : privateKeyStorage_(privateKeyStorage)
20 {
21 }
22
Jeff Thompson41471912013-09-12 16:21:50 -070023 /**
Jeff Thompson86e1d752013-09-17 17:22:38 -070024 * Sign data packet based on the certificate name.
Jeff Thompson41471912013-09-12 16:21:50 -070025 * Note: the caller must make sure the timestamp in data is correct, for example with
26 * data.getMetaInfo().setTimestampMilliseconds(time(NULL) * 1000.0).
27 * @param data The Data object to sign and update its signature.
28 * @param certificateName The Name identifying the certificate which identifies the signing key.
29 * @param wireFormat The WireFormat for calling encodeData, or WireFormat::getDefaultWireFormat() if omitted.
30 */
Jeff Thompson0050abe2013-09-17 12:50:25 -070031 void
Jeff Thompson86e1d752013-09-17 17:22:38 -070032 signByCertificate(Data& data, const Name& certificateName, WireFormat& wireFormat = *WireFormat::getDefaultWireFormat());
33
34private:
35 ptr_lib::shared_ptr<PrivateKeyStorage> privateKeyStorage_;
Jeff Thompson41471912013-09-12 16:21:50 -070036};
37
38}
39
40#endif