anchor.diff:  secretbox_open(CipherText, Nonce, Key) ->
       case iolist_size(CipherText) of
           K when K =< ?SECRETBOX_SIZE ->
  -          R = case enacl_nif:crypto_secretbox_open_b([s_box_zerobytes(), CipherText],
  +          R = case enacl_nif:crypto_secretbox_open_b([?S_BOXZEROBYTES, CipherText],
                                                        Nonce, Key) of
                     {error, Err} -> {error, Err};
                     Bin when is_binary(Bin) -> {ok, Bin}
                 end,
             bump(R, ?SECRETBOX_OPEN_REDUCTIONS, ?SECRETBOX_SIZE, K);
           _ ->
  -          case enacl_nif:crypto_secretbox_open([s_box_zerobytes(), CipherText], Nonce, Key) of
  +          case enacl_nif:crypto_secretbox_open([?S_BOXZEROBYTES, CipherText], Nonce, Key) of
                 {error, Err} -> {error, Err};
                 Bin when is_binary(Bin) -> {ok, Bin}
             end
  
positive.code:     enacl_nif:randombytes(N).
  
  %% Helpers
  p_zerobytes() ->
  	binary:copy(<<0>>, enacl_nif:crypto_box_ZEROBYTES()).
  
  p_box_zerobytes() ->
  	binary:copy(<<0>>, enacl_nif:crypto_box_BOXZEROBYTES()).
  
  s_zerobytes() ->
  	binary:copy(<<0>>, enacl_nif:crypto_secretbox_ZEROBYTES()).
  
  s_box_zerobytes() ->
  	binary:copy(<<0>>, enacl_nif:crypto_secretbox_BOXZEROBYTES()).
  
  bump(Res, Budget, Max, Sz) ->
      Reds =  (Budget * Sz) div Max,
      erlang:bump_reductions(max(1, Reds)),
  
negative.code: secretbox(Msg, Nonce, Key) ->
      case iolist_size(Msg) of
          K when K =< ?SECRETBOX_SIZE ->
            bump(enacl_nif:crypto_secretbox_b([?S_ZEROBYTES, Msg], Nonce, Key),
                 ?SECRETBOX_REDUCTIONS,
                 ?SECRETBOX_SIZE,
                 K);
          _ ->
            enacl_nif:crypto_secretbox([?S_ZEROBYTES, Msg], Nonce, Key)
      end.
  %% @doc secretbox_open/3 opens a sealed box.
  %%
  