blob: 99d9d6580f1f8c0440190f059203fc862ad6a322 [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 ndn::Ptr<ProfileData> profileData,
Yingdi Yub2e747d2013-11-05 23:06:43 -080062 const std::vector<std::string>& endorseList = std::vector<std::string>());
Yingdi Yub4be64a2013-10-13 17:24:50 -070063
64 EndorseCertificate(const EndorseCertificate& endorseCertificate,
Yingdi Yuc972c452013-10-11 11:02:09 -070065 const ndn::Name& signer,
Yingdi Yub4be64a2013-10-13 17:24:50 -070066 const std::vector<std::string>& endorseList);
Yingdi Yuc972c452013-10-11 11:02:09 -070067
68 EndorseCertificate(const EndorseCertificate& endorseCertificate);
69
70 EndorseCertificate(const ndn::Data& data);
71
72 virtual
73 ~EndorseCertificate()
74 {}
75
Yingdi Yuc972c452013-10-11 11:02:09 -070076 inline const ndn::Name&
77 getSigner() const
78 { return m_signer; }
79
Yingdi Yub4be64a2013-10-13 17:24:50 -070080 inline ndn::Ptr<ProfileData>
81 getProfileData() const
82 { return m_profileData; }
Yingdi Yuc972c452013-10-11 11:02:09 -070083
Yingdi Yub4be64a2013-10-13 17:24:50 -070084 inline const std::vector<std::string>&
85 getEndorseList() const
86 { return m_endorseList; }
87
88 inline virtual ndn::Name
89 getPublicKeyName () const
Yingdi Yuc972c452013-10-11 11:02:09 -070090 { return m_keyName; }
91
Yingdi Yub4be64a2013-10-13 17:24:50 -070092protected:
Yingdi Yuc972c452013-10-11 11:02:09 -070093 ndn::Name m_keyName;
94 ndn::Name m_signer;
Yingdi Yub4be64a2013-10-13 17:24:50 -070095 ndn::Ptr<ProfileData> m_profileData;
96 std::vector<std::string> m_endorseList;
Yingdi Yuc972c452013-10-11 11:02:09 -070097};
98
99#endif