title: YoBit tapi problems with authetincation
body: <p>I am trying to write simple application for myself and when i try to call 
  getInfo method i always get a error into the response. Key, sign, method or nonce is incorrect. I found a number of examples but i still can't find mistake in my code. Could anyone help me with it?</p>
  
  <p>The code <strong>works fine</strong> for hitbtc. I know yobit is a bit different but I think I have accomodate that.</p>
  
  <p>My code:</p>
  
  <pre><code>Protected Shared Function readStrings(signatureheader As String, host As String, pathandQuery As String, post As String, secret As String, hasher As System.Security.Cryptography.HMAC, otherHeaders As Tuple(Of String, String)()) As String
      'apikey=98998BEEB8796455044F02E4864984F4
      'secret=44b7659167ffc38bb34fa35b5c816cf5
      hasher.Key = exchanges.getBytes(secret)
      Dim url = host + pathandQuery ' url = "https://yobit.net/tapi/"
      Dim wc = New CookieAwareWebClient()
      Dim sigHash2 = ""
  
      If post = "" Then
          sigHash2 = CalculateSignature2(pathandQuery, hasher)
      Else
          'post = "method=getInfo&amp;nonce=636431012620"
          sigHash2 = CalculateSignature2(post, hasher) 'sighash2= "ece0a3c4af0c68dedb1f840d0aef0fd5fb9fc5e808105c4e6590aa39f4643679af5da52b97d595cd2277642eb27b8a357793082007abe1a3bab8de8df24f80d2"
      End If
  
      wc.Headers.Add(signatureheader, sigHash2) ' SignatureHeader ="Sign"
  
      Dim response = ""
  
      For Each oh In otherHeaders ' otherHeaders =(0) {(Key, 98998BEEB8796455044F02E4864984F4)}   System.Tuple(Of String, String)
          wc.Headers.Add(oh.Item1, oh.Item2)
      Next
  
      '-      wc.Headers  {Sign: ece0a3c4af0c68dedb1f840d0aef0fd5fb9fc5e808105c4e6590aa39f4643679af5da52b97d595cd2277642eb27b8a357793082007abe1a3bab8de8df24f80d2  Key: 98998BEEB8796455044F02E4864984F4    } System.Net.WebHeaderCollection
      'url =  "https://yobit.net/tapi/"
      'post = "method=getInfo&amp;nonce=636431012620"
  
      If post = "" Then
          response = wc.DownloadString(url)
      Else
          response = wc.UploadString(url, post) 'response =       response    "{"success":0,"error":"invalid key, sign, method or nonce"}"    String
  
      End If
  
  
      Return response
  End Function
  </code></pre>
  
  <p>The code has been tested succesfully for hitbtc.</p>
  
  <p>So the crypto part is correct. I put it here anyway for completeness</p>
  
  <pre><code>Protected Shared Function CalculateSignature2(text As String, hasher As System.Security.Cryptography.HMAC) As String
      Dim siginhash = hasher.ComputeHash(exchanges.getBytes(text))
      Dim sighash = exchanges.getString(siginhash)
      Return sighash
  End Function
  </code></pre>
  
  <p>So,</p>
  
  <p>for sanity check</p>
  
  <p>This code works</p>
  
  <pre><code>Public Overrides Sub readbalances()
      Dim response = readStrings("X-Signature", "https://api.hitbtc.com", "/api/1/trading/balance?nonce=" + exchanges.getNonce().ToString + "&amp;apikey=" + _apiKey, "", _secret, New System.Security.Cryptography.HMACSHA512(), {})
  
  
  End Sub
  </code></pre>
  
  <p>With yobit things are different. I got to use post instead of get. I got to add more headers. However, I think I have fixed that.</p>
  
  <p>It doesn't work.</p>
  
  <p>The python function for yobit API is this I just need to translate that to vb.net which I think I have done faithfully</p>
  
  <p><a href="https://stackoverflow.com/questions/35567563/api-call-authentication-in-python-working-php-example/35593133#35593133">API Call Authentication in Python ( Working PHP example )</a></p>
  
  <p>I think the mistake is around here</p>
  
  <pre><code>request_url = "https://yobit.net/tapi";
  request_body = "method=TradeHistory&amp;pair=ltc_btc&amp;nonce=123";
  signature = hmac_sha512(request_body,yobit_secret);
  http_headers = {
      "Content-Type":"application/x-www-form-urlencoded",
      "Key":yobit_public_key,
      "Sign":signature
  }
  
  response = http_post_request(request_url,request_body,http_headers);
  result = json_decode(response.text);
  </code></pre>
  
  <p>There the stuff that I copied is method=getInfo&amp;nonce=636431012620 which is what I put in post.</p>
  
  <p>So that seems right.</p>