anchor.diff:  handle_cast(_Msg, State) ->
       {noreply, State}.
   
  -handle_info({zmq, _StatusSock, Sig, [rcvmore]}, State) ->
  -    read_message(Sig),
  +handle_info({zmq, _StatusSock, Header, [rcvmore]}, State) ->
  +    read_message(Header),
       {noreply, State};
   handle_info(_Info, State) ->
       {noreply, State}.
  
positive.code: %% Internal Function Definitions
  %% ------------------------------------------------------------------
  
  read_message(Sig) ->
      ?debugVal(Sig),
      receive
          {zmq, _StatusSock, Body, []} ->
              ?debugVal(Body),
              % TODO - verify sig
              case catch jiffy:decode(Body) of
                {Hash} ->
                  NodeName = proplists:get_value(<<"node">>, Hash),
  
negative.code:                 error_logger:info_msg("Bad status message received: ~s~n", [Body])
              end
      end.
  
  do_authenticate_message(Header, Body) ->
      AuthSig = sig_from_header(Header),
      % TODO - this look up public key for client...
      PublicKey = chef_keyring:get_key(client_public),
      Decrypted = chef_authn:decrypt_sig(AuthSig, PublicKey),
      Plain = chef_authn:hashed_body(Body),
      try
          Decrypted = Plain,
          {ok}
      catch
          error:{badmatch, _} -> {no_authn, bad_sig}
      end.
  
  % TODO - parse Sig out of header
  sig_from_header(MessageHeader) ->
      {ok, MessageHeader}.
  