anchor.diff:  handle_call(_Request, _From, State) ->
       {noreply, ok, State}.
   
  -handle_cast(heartbeat, #state{heartbeat_sock=HeartbeatSock, beat_count=Count}=State) ->
  +handle_cast(heartbeat,
  +    #state{heartbeat_sock=HeartbeatSock, beat_count=Count, private_key=PrivateKey}=State) ->
       {ok, Hostname} = inet:gethostname(),
       Msg = {[{server, list_to_binary(Hostname)},
               {timestamp, list_to_binary(httpd_util:rfc1123_date())},
               {type, heartbeat}]},
  -    ?debugVal(Msg),
  -    % TODO - sign JsonMsg
       JsonMsg = jiffy:encode(Msg),
  -    %Sig = 'SUPERSECRET',
  -    %erlzmq:send(HeartbeatSock, Sig, [sndmore]),
  +    % Header w/ sig
  +    erlzmq:send(HeartbeatSock, generate_signed_header(PrivateKey, JsonMsg), [sndmore]),
  +    % JSON body
       erlzmq:send(HeartbeatSock, JsonMsg),
  +    ?debugVal(JsonMsg),
       {noreply, State#state{beat_count=Count+1}};
   handle_cast(_Msg, State) ->
       {noreply, State}.
  
positive.code: -record(state,
          {heartbeat_sock,
           heartbeat_interval,
           beat_count}).
  
  %% ------------------------------------------------------------------
  %% API Function Definitions
  
negative.code: %% ------------------------------------------------------------------
  %% Internal Function Definitions
  %% ------------------------------------------------------------------
  
  generate_signed_header(PrivateKey, Body) ->
      HashedBody = chef_authn:hash_string(Body),
      ?debugVal(HashedBody),
      Sig = base64:encode(public_key:encrypt_private(HashedBody, PrivateKey)),
      list_to_binary("Version:1.0;SignedChecksum:" ++ Sig).
  