diff --git a/include/Makefile.am b/include/Makefile.am
index 06d98aa..8ea2630 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -34,6 +34,8 @@
   ndn-cpp/security/security-common.hpp \
   ndn-cpp/security/key-chain.hpp \
   ndn-cpp/security/security-exception.hpp \
+  ndn-cpp/security/certificate/certificate-extension.hpp \
+  ndn-cpp/security/certificate/certificate-subject-description.hpp \
   ndn-cpp/security/certificate/certificate.hpp \
   ndn-cpp/security/certificate/identity-certificate.hpp \
   ndn-cpp/security/certificate/public-key.hpp \
diff --git a/include/Makefile.in b/include/Makefile.in
index 0ede7e9..82fc5c2 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -351,6 +351,8 @@
   ndn-cpp/security/security-common.hpp \
   ndn-cpp/security/key-chain.hpp \
   ndn-cpp/security/security-exception.hpp \
+  ndn-cpp/security/certificate/certificate-extension.hpp \
+  ndn-cpp/security/certificate/certificate-subject-description.hpp \
   ndn-cpp/security/certificate/certificate.hpp \
   ndn-cpp/security/certificate/identity-certificate.hpp \
   ndn-cpp/security/certificate/public-key.hpp \
diff --git a/include/ndn-cpp/security/certificate/certificate-extension.hpp b/include/ndn-cpp/security/certificate/certificate-extension.hpp
new file mode 100644
index 0000000..5990cd4
--- /dev/null
+++ b/include/ndn-cpp/security/certificate/certificate-extension.hpp
@@ -0,0 +1,80 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_CERTIFICATE_EXTENSION_HPP
+#define NDN_CERTIFICATE_EXTENSION_HPP
+
+#include "../../common.hpp"
+#include "../../util/blob.hpp"
+#include "../../encoding/oid.hpp"
+
+namespace ndn {
+
+namespace der { class DerNode; }
+
+/**
+ * A CertificateExtension represents the Extension entry in a certificate.
+ */
+class CertificateExtension
+{
+public:
+  /**
+   * Create a new CertificateExtension.
+   * @param oid The oid of subject description entry.
+   * @param isCritical If true, the extension must be handled.
+   * @param value The extension value.  This makes a copy of the value.
+   */
+  CertificateExtension(const std::string& oid, const bool isCritical, const std::vector<uint8_t>& value)
+  : extensionId_(oid), isCritical_(isCritical), extensionValue_(value)
+  {
+  }
+
+  /**
+   * Create a new CertificateExtension.
+   * @param oid The oid of subject description entry.
+   * @param isCritical If true, the extension must be handled.
+   * @param value The extension value.  This makes a copy of the value.
+   */
+  CertificateExtension(const OID& oid, const bool isCritical, const std::vector<uint8_t>& value)
+  : extensionId_(oid), isCritical_(isCritical), extensionValue_(value)
+  {
+  }
+
+  /**
+   * The virtual destructor.
+   */
+  virtual
+  ~CertificateExtension() {}
+
+  /**
+   * encode the object into DER syntax tree
+   * @return the encoded DER syntax tree
+   */
+  ptr_lib::shared_ptr<der::DerNode> 
+  toDer();
+
+  Blob
+  toDerBlob();
+
+  inline const OID& 
+  getOid() const { return extensionId_; }
+
+  inline const bool 
+  getIsCritical() const { return isCritical_; }
+
+  inline const Blob& 
+  getValue() const { return extensionValue_; }
+    
+protected:
+  OID extensionId_;
+  bool isCritical_;
+  Blob extensionValue_;
+};
+
+}
+
+#endif
diff --git a/include/ndn-cpp/security/certificate/certificate-subject-description.hpp b/include/ndn-cpp/security/certificate/certificate-subject-description.hpp
new file mode 100644
index 0000000..90ff7fe
--- /dev/null
+++ b/include/ndn-cpp/security/certificate/certificate-subject-description.hpp
@@ -0,0 +1,70 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Yingdi Yu <yingdi@cs.ucla.edu>
+ * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_CERTIFICATE_SUBJECT_DESCRIPTION_HPP
+#define NDN_CERTIFICATE_SUBJECT_DESCRIPTION_HPP
+
+#include "../../common.hpp"
+#include "../../encoding/oid.hpp"
+
+namespace ndn {
+
+namespace der { class DerNode; }
+  
+/**
+ * A CertificateSubjectDescription represents the SubjectDescription entry in a Certificate.
+ */
+class CertificateSubjectDescription {
+public:
+  /**
+   * Create a new CertificateSubjectDescription.
+   * @param oid The oid of the subject description entry.
+   * @param value The value of the subject description entry.
+   */
+  CertificateSubjectDescription(std::string oid, std::string value)
+  : oid_(oid), value_(value)
+  {
+  }
+
+  /**
+   * Create a new CertificateSubjectDescription.
+   * @param oid The oid of the subject description entry.
+   * @param value The value of the subject description entry.
+   */
+  CertificateSubjectDescription(OID oid, std::string value)
+  : oid_(oid), value_(value)
+  {
+  }
+  
+  /**
+   * Encode the object into a DER syntax tree.
+   * @return The encoded DER syntax tree.
+   */
+  ptr_lib::shared_ptr<der::DerNode> 
+  toDer();
+
+  std::string
+  getOidString()
+  {
+    return oid_.toString();
+  }
+
+  const std::string &
+  getValue() const
+  {
+    return value_;
+  }
+  
+private:
+  OID oid_;
+  std::string value_;
+};
+
+}
+
+#endif
diff --git a/include/ndn-cpp/security/identity/identity-manager.hpp b/include/ndn-cpp/security/identity/identity-manager.hpp
index d461062..9028065 100644
--- a/include/ndn-cpp/security/identity/identity-manager.hpp
+++ b/include/ndn-cpp/security/identity/identity-manager.hpp
@@ -14,11 +14,11 @@
 #include "../certificate/public-key.hpp"
 #include "private-key-storage.hpp"
 
+namespace ndn {
+
 // TODO: Implement Time values.
 class Time;
 
-namespace ndn {
-
 /**
  * An IdentityManager is the interface of operations related to identity, keys, and certificates.
  */
