security: Added headers for der encoding.  Added CertificateExtension and CertificateSubjectDescription.
diff --git a/ndn-cpp/encoding/der/visitor/no-arguments-visitor.hpp b/ndn-cpp/encoding/der/visitor/no-arguments-visitor.hpp
new file mode 100644
index 0000000..61b0a65
--- /dev/null
+++ b/ndn-cpp/encoding/der/visitor/no-arguments-visitor.hpp
@@ -0,0 +1,36 @@
+/* -*- 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_DER_NO_ARGUMENTS_VISITOR_HPP
+#define NDN_DER_NO_ARGUMENTS_VISITOR_HPP
+
+#include "visitor.hpp"
+
+namespace ndn {
+
+namespace der {
+
+class NoArgumentsVisitor
+{
+public:
+  virtual Any visit(DerBool&           ) = 0;
+  virtual Any visit(DerInteger&        ) = 0;
+  virtual Any visit(DerPrintableString&) = 0;
+  virtual Any visit(DerBitString&      ) = 0;
+  virtual Any visit(DerNull&           ) = 0;
+  virtual Any visit(DerOctetString&    ) = 0;
+  virtual Any visit(DerOid&            ) = 0;
+  virtual Any visit(DerSequence&       ) = 0;
+  virtual Any visit(DerGtime&          ) = 0;
+};
+
+} // der
+
+}
+
+#endif
diff --git a/ndn-cpp/encoding/der/visitor/simple-visitor.hpp b/ndn-cpp/encoding/der/visitor/simple-visitor.hpp
new file mode 100644
index 0000000..4ec3a8c
--- /dev/null
+++ b/ndn-cpp/encoding/der/visitor/simple-visitor.hpp
@@ -0,0 +1,36 @@
+/* -*- 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_DER_SIMPLE_VISITOR_HPP
+#define NDN_DER_SIMPLE_VISITOR_HPP
+
+#include "no-arguments-visitor.hpp"
+
+namespace ndn {
+
+namespace der {
+
+class NoArgumentsVisitor : public NoArgumentsVisitor
+{
+public:
+  virtual Any visit(DerBool&           ) = 0;
+  virtual Any visit(DerInteger&        ) = 0;
+  virtual Any visit(DerPrintableString&) = 0;
+  virtual Any visit(DerBitString&      ) = 0;
+  virtual Any visit(DerNull&           ) = 0;
+  virtual Any visit(DerOctetString&    ) = 0;
+  virtual Any visit(DerOid&            ) = 0;
+  virtual Any visit(DerSequence&       ) = 0;
+  virtual Any visit(DerGtime&          ) = 0;
+};
+
+} // der
+
+}
+
+#endif
diff --git a/ndn-cpp/encoding/der/visitor/visitor.hpp b/ndn-cpp/encoding/der/visitor/visitor.hpp
new file mode 100644
index 0000000..a251701
--- /dev/null
+++ b/ndn-cpp/encoding/der/visitor/visitor.hpp
@@ -0,0 +1,47 @@
+/* -*- 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_DER_VISITOR_HPP
+#define NDN_DER_VISITOR_HPP
+
+namespace ndn {
+
+namespace der {
+  
+// TODO: We want to implement an any type, but avoid boost::any which is not in the C++ standard library.
+typedef void *Any;
+
+class DerBool;
+class DerInteger;
+class DerPrintableString;
+class DerBitString;
+class DerNull;
+class DerOctetString;
+class DerOid;
+class DerSequence;
+class DerGtime;
+
+class Visitor
+{
+public:
+  virtual Any visit(DerBool&,             Any) = 0;
+  virtual Any visit(DerInteger&,          Any) = 0;
+  virtual Any visit(DerPrintableString&,  Any) = 0;
+  virtual Any visit(DerBitString&,        Any) = 0;
+  virtual Any visit(DerNull&,             Any) = 0;
+  virtual Any visit(DerOctetString&,      Any) = 0;
+  virtual Any visit(DerOid&,              Any) = 0;
+  virtual Any visit(DerSequence&,         Any) = 0;
+  virtual Any visit(DerGtime&,            Any) = 0;
+};
+
+} // der
+
+}
+
+#endif
diff --git a/ndn-cpp/encoding/der/visitor/void-no-arguments-visitor.hpp b/ndn-cpp/encoding/der/visitor/void-no-arguments-visitor.hpp
new file mode 100644
index 0000000..7e60d38
--- /dev/null
+++ b/ndn-cpp/encoding/der/visitor/void-no-arguments-visitor.hpp
@@ -0,0 +1,36 @@
+/* -*- 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_DER_VOID_NO_ARGUMENTS_VISITOR_HPP
+#define NDN_DER_VOID_NO_ARGUMENTS_VISITOR_HPP
+
+#include "visitor.hpp"
+
+namespace ndn {
+
+namespace der {
+
+class VoidNoArgumentsVisitor
+{
+public:
+  virtual void visit(DerBool&           ) = 0;
+  virtual void visit(DerInteger&        ) = 0;
+  virtual void visit(DerPrintableString&) = 0;
+  virtual void visit(DerBitString&      ) = 0;
+  virtual void visit(DerNull&           ) = 0;
+  virtual void visit(DerOctetString&    ) = 0;
+  virtual void visit(DerOid&            ) = 0;
+  virtual void visit(DerSequence&       ) = 0;
+  virtual void visit(DerGtime&          ) = 0;
+};
+
+} // der
+
+}
+
+#endif
diff --git a/ndn-cpp/encoding/der/visitor/void-visitor.hpp b/ndn-cpp/encoding/der/visitor/void-visitor.hpp
new file mode 100644
index 0000000..a041c10
--- /dev/null
+++ b/ndn-cpp/encoding/der/visitor/void-visitor.hpp
@@ -0,0 +1,36 @@
+/* -*- 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_DER_VOID_VISITOR_HPP
+#define NDN_DER_VOID_VISITOR_HPP
+
+#include "visitor.hpp"
+
+namespace ndn {
+
+namespace der {
+
+class VoidVisitor
+{
+public:
+  virtual void visit(DerBool&,             Any) = 0;
+  virtual void visit(DerInteger&,          Any) = 0;
+  virtual void visit(DerPrintableString&,  Any) = 0;
+  virtual void visit(DerBitString&,        Any) = 0;
+  virtual void visit(DerNull&,             Any) = 0;
+  virtual void visit(DerOctetString&,      Any) = 0;
+  virtual void visit(DerOid&,              Any) = 0;
+  virtual void visit(DerSequence&,         Any) = 0;
+  virtual void visit(DerGtime&,            Any) = 0;
+};
+
+} // der
+
+}
+
+#endif