blob: 3b992c4faefbfd974593dea5d9770a06da358e5a [file] [log] [blame]
Yingdi Yuc972c452013-10-11 11:02:09 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
2/*
3 * Copyright (c) 2013, Regents of the University of California
4 * Yingdi Yu
5 *
6 * BSD license, See the LICENSE file for more information
7 *
8 * Author: Yingdi Yu <yingdi@cs.ucla.edu>
9 */
10
Yingdi Yub4be64a2013-10-13 17:24:50 -070011#ifndef LINKNDN_ENDORSE_CERTIFICATE_H
12#define LINKNDN_ENDORSE_CERTIFICATE_H
Yingdi Yuc972c452013-10-11 11:02:09 -070013
14#include <vector>
15#include <ndn.cxx/data.h>
16#include <ndn.cxx/security/certificate/identity-certificate.h>
17#include <ndn.cxx/security/certificate/certificate-extension.h>
18
19#include "profile-data.h"
20
Yingdi Yub4be64a2013-10-13 17:24:50 -070021class ProfileExtension : public ndn::security::CertificateExtension
22{
23public:
24 ProfileExtension(const ProfileData& profileData);
25
26 ProfileExtension(const ProfileExtension& profileExtension);
27
28 ProfileExtension(const CertificateExtension& extension);
29
30 ~ProfileExtension() {}
31
32 ndn::Ptr<ProfileData>
33 getProfileData();
34};
35
Yingdi Yuc972c452013-10-11 11:02:09 -070036class EndorseExtension : public ndn::security::CertificateExtension
37{
38public:
Yingdi Yub4be64a2013-10-13 17:24:50 -070039 EndorseExtension(const std::vector<std::string>& endorsedList);
Yingdi Yuc972c452013-10-11 11:02:09 -070040
Yingdi Yub4be64a2013-10-13 17:24:50 -070041 EndorseExtension(const EndorseExtension& endorseExtension);
42
43 EndorseExtension(const CertificateExtension& extension);
44
Yingdi Yuc972c452013-10-11 11:02:09 -070045 ~EndorseExtension() {}
Yingdi Yub4be64a2013-10-13 17:24:50 -070046
47 std::vector<std::string>
48 getEndorsedList();
49
50private:
51 static ndn::Ptr<ndn::Blob>
52 prepareValue(const std::vector<std::string>& endorsedList);
Yingdi Yuc972c452013-10-11 11:02:09 -070053};
54
55class EndorseCertificate : public ndn::security::Certificate
56{
57public:
Yingdi Yud95c5642013-10-20 19:43:10 -070058 EndorseCertificate() {}
59
Yingdi Yuc972c452013-10-11 11:02:09 -070060 EndorseCertificate(const ndn::security::IdentityCertificate& kskCertificate,
Yingdi Yub4be64a2013-10-13 17:24:50 -070061 const ndn::Time& notBefore,
62 const ndn::Time& notAfter,
63 ndn::Ptr<ProfileData> profileData,
64 const std::vector<std::string>& endorseList);
65
66 EndorseCertificate(const EndorseCertificate& endorseCertificate,
Yingdi Yuc972c452013-10-11 11:02:09 -070067 const ndn::Name& signer,
68 const ndn::Time& notBefore,
Yingdi Yub4be64a2013-10-13 17:24:50 -070069 const ndn::Time& notAfter,
70 const std::vector<std::string>& endorseList);
Yingdi Yuc972c452013-10-11 11:02:09 -070071
72 EndorseCertificate(const EndorseCertificate& endorseCertificate);
73
74 EndorseCertificate(const ndn::Data& data);
75
76 virtual
77 ~EndorseCertificate()
78 {}
79
Yingdi Yuc972c452013-10-11 11:02:09 -070080 inline const ndn::Name&
81 getSigner() const
82 { return m_signer; }
83
Yingdi Yub4be64a2013-10-13 17:24:50 -070084 inline ndn::Ptr<ProfileData>
85 getProfileData() const
86 { return m_profileData; }
Yingdi Yuc972c452013-10-11 11:02:09 -070087
Yingdi Yub4be64a2013-10-13 17:24:50 -070088 inline const std::vector<std::string>&
89 getEndorseList() const
90 { return m_endorseList; }
91
92 inline virtual ndn::Name
93 getPublicKeyName () const
Yingdi Yuc972c452013-10-11 11:02:09 -070094 { return m_keyName; }
95
Yingdi Yub4be64a2013-10-13 17:24:50 -070096protected:
Yingdi Yuc972c452013-10-11 11:02:09 -070097 ndn::Name m_keyName;
98 ndn::Name m_signer;
Yingdi Yub4be64a2013-10-13 17:24:50 -070099 ndn::Ptr<ProfileData> m_profileData;
100 std::vector<std::string> m_endorseList;
Yingdi Yuc972c452013-10-11 11:02:09 -0700101};
102
103#endif