Что нового

HTTP аутентификация через ключ/подпись

ZlojBoter

Новичок
Сообщения
55
Репутация
0
Имеется криптобиржа, с апидоступом (https://wex.nz). "Пиши ботов - нехочу". Для доступа к торговой части, требуется аутентификация. Имеются с генерированные для пользователя ключ/подпись. Для каждого запроса необходима аутентификация. Аутентификация происходит посредством отправки следующих HTTP-заголовков:
Key — API-ключ. ХХХХХХХ...........
Sign подпись ХХХХХХХ.....
Еще есть некоторые POST параметры, которые нужно отправлять для каждого запроса(кроме всего прочего подписанные секретным ключом с помощью HMAC-SHA512).
Проблема, заключается в том, что я себе очень слабо представляю всю архитектуру таких запросов. :stars:
Мне необходима помощь, какие-то наводки на функции, и желательно с примерами использования с ключом/подписью/и постпараметрами. Буду рад любой помощи.
Проблем с программированием у меня по большому счету нет, это не просьба типа : "напишите все за меня". Проблема в почти полном непонимании системы подобного рода запросов...
Заранее благодарен :smile:
 

pww2000

Новичок
Сообщения
16
Репутация
0
У меня так заработало (если еще актуально):

Код:
$key="oiuhiouhoiui-5646546-87989"
$key2="gfhjgfhgfhfghfjgfgfggg6tr76r7r5ri7r756r75"
$aHost= "https://wex.nz/tapi"

$aPost="getInfo"

$a= Post($aPost,$key,$key2)

ConsoleWrite ($a&@CR)
;{"success":1,"return":{"funds":{"usd":0.00146455,"btc":0.00956002,"ltc":0.00069822,"nmc":0,"rur":0.00654232,"eur":0,"nvc":0,"ppc":0,"dsh":0,"eth":0,"bch":0,"usdet":0,"btcet":0,"ltcet":0.00043177,"ethet":0,"nmcet":0,"nvcet":0,"ppcet":0,"dshet":0,"ruret":0,"euret":0,"bchet":0,"zec":0,"usdt":0},"rights":{"info":1,"trade":1,"withdraw":0},"transaction_count":0,"open_orders":0,"server_time":1526039313}}


Func post($Method, $apikey, $secretkey, $MethodOptions="")

	$NonceUnique = 4;  тут надо доделать счетчик
;~ {"success":0,"error":"invalid nonce parameter; on key:4, you sent:'4', you should send:5"}

	$aHost = "https://wex.nz/tapi/"
	$postdata = "method=" & $Method & $MethodOptions & "&nonce=" & $NonceUnique
	$APIsign = _HashHMAC("SHA512", $postdata, $secretkey, False)
	Global $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
	if @error<>0 Then exit
    $oHTTP.Open("POST", $aHost, false)
    $oHTTP.SetRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)")
    $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oHTTP.SetRequestHeader("Key", $apikey)
    $oHTTP.SetRequestHeader("Sign",$APIsign)
	$oHTTP.Send($postdata)
    Return $oHTTP.ResponseText
    $oErrorHandler = 0

EndFunc

Func _HashHMAC($sAlgorithm, $bData, $bKey, $bRaw_Output = False)
;~     Local $oHashHMACErrorHandler = ObjEvent("AutoIt.Error", "_HashHMACErrorHandler")
    Local $oHMAC = ObjCreate("System.Security.Cryptography.HMAC" & $sAlgorithm)
    If @error Then SetError(1, 0, "")
    $oHMAC.key = Binary($bKey)
    Local $bHash = $oHMAC.ComputeHash_2(Binary($bData))
    Return SetError(0, 0, $bRaw_Output ? $bHash : StringLower(StringMid($bHash, 3)))
EndFunc   ;==>_HashHMAC
 
Верх