void NdnSigner::sign( Interest& interest ) const
      {

        //////// configure key locator ///////////

        // encode public key
        std::string     keystr;
        CryptoPP::StringSink sink(keystr);
        m_public_key.Save(sink);

        // make key locator and insert key as key digest
        KeyLocator loc;
        auto buffer = make_shared<const Buffer>( (uint8_t*)keystr.c_str(), keystr.length() );
        loc.setKeyDigest( buffer );

        // setup signature info
        Signature sig = interest.getSignature();
        SignatureInfo sinfo = sig.getSignatureInfo();
        sinfo.setSignatureType( tlv::SignatureSha256WithRsa);
        sinfo.setKeyLocator( loc );
        sig.setInfo( sinfo );
        interest.setSignature( sig );

        // sign interest
        Block sig_block = signBlock( interest.wireEncode() );

         // set signature
         sig.setValue( sig_block );
         interest.setSignature( sig );
         interest.wireEncode();
      }