diff --git a/src/ca-module.cpp b/src/ca-module.cpp
index c64cb96..a99bbd2 100644
--- a/src/ca-module.cpp
+++ b/src/ca-module.cpp
@@ -237,7 +237,7 @@
 
   // get server's ECDH pub key
   ECDHState ecdh;
-  auto myEcdhPubKeyBase64 = ecdh.getSelfPubKey();
+  auto myEcdhPubKey = ecdh.getSelfPubKey();
   std::vector<uint8_t> sharedSecret;
   try {
     sharedSecret = ecdh.deriveSecret(ecdhPub);
@@ -343,7 +343,7 @@
   Data result;
   result.setName(request.getName());
   result.setFreshnessPeriod(DEFAULT_DATA_FRESHNESS_PERIOD);
-  result.setContent(requesttlv::encodeDataContent(myEcdhPubKeyBase64,
+  result.setContent(requesttlv::encodeDataContent(myEcdhPubKey,
                                                   salt,
                                                   requestState.requestId, requestState.status,
                                                   m_config.caProfile.supportedChallenges));
diff --git a/src/detail/new-renew-revoke-encoder.cpp b/src/detail/new-renew-revoke-encoder.cpp
index a2645e9..84313e7 100644
--- a/src/detail/new-renew-revoke-encoder.cpp
+++ b/src/detail/new-renew-revoke-encoder.cpp
@@ -26,24 +26,11 @@
 namespace ndn {
 namespace ndncert {
 
-NDN_LOG_INIT(ndncert.encoding.new_renew_revoke);
-
 Block
 requesttlv::encodeApplicationParameters(RequestType requestType, const std::vector<uint8_t>& ecdhPub,
                                                    const security::Certificate& certRequest)
 {
   Block request(ndn::tlv::ApplicationParameters);
-  std::stringstream ss;
-  try {
-    security::transform::bufferSource(certRequest.wireEncode().wire(), certRequest.wireEncode().size())
-    >> security::transform::base64Encode(false)
-    >> security::transform::streamSink(ss);
-  }
-  catch (const security::transform::Error& e) {
-    NDN_LOG_ERROR("Cannot convert self-signed cert into BASE64 string " << e.what());
-    return request;
-  }
-
   request.push_back(makeBinaryBlock(tlv::EcdhPub, ecdhPub.data(), ecdhPub.size()));
   if (requestType == RequestType::NEW || requestType == RequestType::RENEW) {
     request.push_back(makeNestedBlock(tlv::CertRequest, certRequest));
diff --git a/src/requester-request.cpp b/src/requester-request.cpp
index 0fe0219..7b9f47d 100644
--- a/src/requester-request.cpp
+++ b/src/requester-request.cpp
@@ -121,9 +121,9 @@
 }
 
 Request::Request(security::KeyChain& keyChain, const CaProfile& profile, RequestType requestType)
-    : m_keyChain(keyChain)
-    , caProfile(profile)
+    : caProfile(profile)
     , type(requestType)
+    , m_keyChain(keyChain)
 {}
 
 shared_ptr<Interest>
diff --git a/src/requester-request.hpp b/src/requester-request.hpp
index 249d2a7..f27c873 100644
--- a/src/requester-request.hpp
+++ b/src/requester-request.hpp
@@ -268,6 +268,7 @@
    * @brief Store Nonce for signature
    */
   std::array<uint8_t, 16> nonce = {};
+
 private:
   /**
    * @brief The local keychain to generate and install identities, keys and certificates
