diff --git a/include/ndn-cpp/security/certificate/certificate.hpp b/include/ndn-cpp/security/certificate/certificate.hpp
index 0fdd213..6d83673 100644
--- a/include/ndn-cpp/security/certificate/certificate.hpp
+++ b/include/ndn-cpp/security/certificate/certificate.hpp
@@ -7,12 +7,20 @@
  */
 
 #ifndef NDN_CERTIFICATE_HPP
-#define	NDN_CERTIFICATE_HPP
+#define NDN_CERTIFICATE_HPP
 
 #include "../../data.hpp"
+#include "../../common.hpp"
+
+#include "certificate-subject-description.hpp"
+#include "certificate-extension.hpp"
+#include "public-key.hpp"
 
 namespace ndn {
 
+typedef std::vector<CertificateSubjectDescription> SubjectDescriptionList;
+typedef std::vector<CertificateExtension> ExtensionList;
+
 class Certificate : public Data {
 public:
   /**
@@ -25,6 +33,90 @@
    * @param data The data packet with the content to decode.
    */
   Certificate(const Data& data);
+ 
+  /**
+   * The virtual destructor.
+   */
+  virtual 
+  ~Certificate() {}
+
+  /**
+   * encode certificate info into content
+   */
+  void
+  encode();
+
+  /**
+   * Add a subject description.
+   * @param description The description to be added.
+   */
+  void 
+  addSubjectDescription(const CertificateSubjectDescription& description) { subjectDescriptionList_.push_back(description); }
+ 
+  /**
+   * Add a certificate extension.
+   * @param extension the extension to be added
+   */
+  void 
+  addExtension(const CertificateExtension& extension) { extensionList_.push_back(extension); }
+
+  void 
+  setNotBefore(const Time& notBefore) { notBefore_ = notBefore; }
+
+  Time& 
+  getNotBefore() { return notBefore_; }
+  
+  const Time& 
+  getNotBefore() const { return notBefore_; }
+
+  void
+  setNotAfter(const Time& notAfter) { notAfter_ = notAfter; }
+
+  Time& 
+  getNotAfter() { return notAfter_; }
+
+  const Time& 
+  getNotAfter() const { return notAfter_; }
+
+  void
+  setPublicKeyInfo(const PublicKey& key) { key_ = key; }
+  
+  PublicKey& 
+  getPublicKeyInfo() { return key_; }
+
+  const PublicKey& 
+  getPublicKeyInfo() const { return key_; }
+
+  virtual Name 
+  getPublicKeyName() const = 0;
+  
+  /**
+   * Check if the certificate is valid.
+   * @return True if the current time is earlier than notBefore.
+   */
+  bool 
+  isTooEarly();
+
+  /**
+   * Check if the certificate is valid.
+   * @return True if the current time is later than notAfter.
+   */
+  bool
+  isTooLate();
+
+  void 
+  printCertificate();
+
+protected:
+  void
+  decode();
+
+protected:
+  SubjectDescriptionList subjectDescriptionList_;
+  Time notBefore_;
+  Time notAfter_;
+  PublicKey key_;
+  ExtensionList extensionList_;
 };
 
 }
