defmodule ExDeltaExchange.Auth do
@type api_secret :: ExDeltaExchange.Credentials.api_secret()
@spec timestamp :: integer
def timestamp, do: DateTime.utc_now() |> DateTime.to_unix(:second)
@spec sign(String.t(), integer, String.t(), String.t(), String.t(), api_secret) :: String.t()
def sign(verb, ts, path, query_string, request_body, api_secret) do
payload = "#{verb}#{ts}#{path}#{query_string}#{request_body}"
:hmac
|> :crypto.mac(:sha256, api_secret, payload)
|> Base.encode16(case: :lower)
end
end