diff --git a/ndn-cpp/security/key-chain.hpp b/ndn-cpp/security/key-chain.hpp
index 297e490..7cfa64e 100644
--- a/ndn-cpp/security/key-chain.hpp
+++ b/ndn-cpp/security/key-chain.hpp
@@ -25,7 +25,8 @@
    * @param privateKeyDerLength The number of bytes in privateKeyDer.
    * @param wireFormat The WireFormat for calling encodeData.
    */
-  static void sign
+  static void 
+  sign
     (Data& data, const unsigned char *publicKeyDer, unsigned int publicKeyDerLength, 
      const unsigned char *privateKeyDer, unsigned int privateKeyDerLength, WireFormat& wireFormat);
 
@@ -34,7 +35,8 @@
    * @param data
    * @param wireFormat The WireFormat for calling encodeData, or WireFormat::getDefaultWireFormat() if omitted.
    */
-  static void defaultSign(Data& data, WireFormat& wireFormat = *WireFormat::getDefaultWireFormat());
+  static void 
+  defaultSign(Data& data, WireFormat& wireFormat = *WireFormat::getDefaultWireFormat());
 
   /**
    * Use the WireFormat to decode the input as a Data packet and use the public key in the key locator to 
@@ -46,9 +48,11 @@
    * @return true if the public key in the Data object verifies the object, false if not or if the Data object
    * doesn't have a public key.
    */
-  static bool selfVerifyData(const unsigned char *input, unsigned int inputLength, WireFormat& wireFormat);
+  static bool 
+  selfVerifyData(const unsigned char *input, unsigned int inputLength, WireFormat& wireFormat);
   
-  static bool selfVerifyData(const unsigned char *input, unsigned int inputLength)
+  static bool 
+  selfVerifyData(const unsigned char *input, unsigned int inputLength)
   {
     return selfVerifyData(input, inputLength, *WireFormat::getDefaultWireFormat());
   }
