security: Adding SecPolicyRegex and related rules

Change-Id: Ia9c709e849c405ed57f622b8afc442ce808991fb
diff --git a/src/security/sec-rule-specific.hpp b/src/security/sec-rule-specific.hpp
new file mode 100644
index 0000000..21d00e6
--- /dev/null
+++ b/src/security/sec-rule-specific.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>
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_SEC_RULE_SPECIFIC_H
+#define NDN_SEC_RULE_SPECIFIC_H
+
+#include "sec-rule.hpp"
+#include "../util/regex.hpp"
+
+namespace ndn{
+
+class SecRuleSpecific : public ndn::SecRule
+{
+  
+public:
+  SecRuleSpecific(ndn::shared_ptr<ndn::Regex> dataRegex,
+                  ndn::shared_ptr<ndn::Regex> signerRegex);
+
+  SecRuleSpecific(const SecRuleSpecific& rule);
+
+  virtual
+  ~SecRuleSpecific() {};
+
+  bool 
+  matchDataName(const ndn::Data& data);
+
+  bool 
+  matchSignerName(const ndn::Data& data);
+
+  bool
+  satisfy(const ndn::Data& data);
+
+  bool
+  satisfy(const ndn::Name& dataName, const ndn::Name& signerName);
+  
+private:
+  ndn::shared_ptr<ndn::Regex> m_dataRegex;
+  ndn::shared_ptr<ndn::Regex> m_signerRegex;
+};
+
+}
+
+#endif