face: Specify signing certificate/identity in setInterestFilter/unsetInterestFilter

Refs: #1509

Change-Id: I359553e5f8eb77ae314873852eba8a10fb5e3a93
diff --git a/src/face.hpp b/src/face.hpp
index 185927b..48f253e 100644
--- a/src/face.hpp
+++ b/src/face.hpp
@@ -211,8 +211,6 @@
    *                         onRegisterFailed(prefix) where prefix is the prefix given to
    *                         registerPrefix.
    *
-   * @param flags      The flags for finer control of which interests are forward to the
-   *                   application.
    * @return The registered prefix ID which can be used with removeRegisteredPrefix.
    */
   const RegisteredPrefixId*
@@ -221,6 +219,52 @@
                     const OnSetInterestFilterFailed& onSetInterestFilterFailed);
 
   /**
+   * @brief Register prefix with the connected NDN hub and call onInterest when a matching
+   *        interest is received.
+   *
+   * @param prefix     A reference to a Name for the prefix to register
+   * @param onInterest A function object to call when a matching interest is received
+   *
+   * @param onRegisterFailed A function object to call if failed to retrieve the connected
+   *                         hub’s ID or failed to register the prefix.  This calls
+   *                         onRegisterFailed(prefix) where prefix is the prefix given to
+   *                         registerPrefix.
+   *
+   * @param certificate A certificate under which the prefix registration command interest
+   *                    is signed.
+   *
+   * @return The registered prefix ID which can be used with removeRegisteredPrefix.
+   */
+  const RegisteredPrefixId*
+  setInterestFilter(const Name& prefix,
+                    const OnInterest& onInterest,
+                    const OnSetInterestFilterFailed& onSetInterestFilterFailed,
+                    const IdentityCertificate& certificate);
+
+  /**
+   * @brief Register prefix with the connected NDN hub and call onInterest when a matching
+   *        interest is received.
+   *
+   * @param prefix     A reference to a Name for the prefix to register
+   * @param onInterest A function object to call when a matching interest is received
+   *
+   * @param onRegisterFailed A function object to call if failed to retrieve the connected
+   *                         hub’s ID or failed to register the prefix.  This calls
+   *                         onRegisterFailed(prefix) where prefix is the prefix given to
+   *                         registerPrefix.
+   *
+   * @param identity A signing identity. A command interest is signed under the default
+   *                 certificate of this identity.
+   *
+   * @return The registered prefix ID which can be used with removeRegisteredPrefix.
+   */
+  const RegisteredPrefixId*
+  setInterestFilter(const Name& prefix,
+                    const OnInterest& onInterest,
+                    const OnSetInterestFilterFailed& onSetInterestFilterFailed,
+                    const Name& identity);
+
+  /**
    * @brief Remove the registered prefix entry with the registeredPrefixId from the
    *        pending interest table.
    *
@@ -233,6 +277,14 @@
   void
   unsetInterestFilter(const RegisteredPrefixId* registeredPrefixId);
 
+  void
+  unsetInterestFilter(const RegisteredPrefixId* registeredPrefixId,
+                      const IdentityCertificate& certificate);
+
+  void
+  unsetInterestFilter(const RegisteredPrefixId* registeredPrefixId,
+                      const Name& identity);
+
    /**
    * @brief Publish data packet
    *
@@ -334,6 +386,14 @@
   asyncUnsetInterestFilter(const RegisteredPrefixId* registeredPrefixId);
 
   void
+  asyncUnsetInterestFilterWithCertificate(const RegisteredPrefixId* registeredPrefixId,
+                                          const IdentityCertificate& certificate);
+
+  void
+  asyncUnsetInterestFilterWithIdentity(const RegisteredPrefixId* registeredPrefixId,
+                                       const Name& identity);
+
+  void
   finalizeUnsetInterestFilter(RegisteredPrefixTable::iterator item);
 
   void