Current section
Files
Jump to
Current section
Files
lib/bingex/http/signature.ex
defmodule Bingex.HTTP.Signature do
@moduledoc false
alias :crypto, as: Crypto
alias Bingex.Helpers
def generate(params, key) do
params
|> serialize()
|> hash(key)
end
def serialize(params) do
Enum.map_join(params, "&", fn {k, v} ->
k <> "=" <> Helpers.serialize(v)
end)
end
def hash(raw, key) when is_binary(raw) and is_binary(key) do
Crypto.mac(:hmac, :sha256, key, raw)
|> Base.encode16(case: :lower)
end
end