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