Search code examples
pythonencodehmac

Python encoded message with HMAC-SHA256


I try to encoded message with HMAC-SHA256 in Python according to [instructions][1]

import hmac
import hashlib

nonce = 1234
customer_id = 123232
api_key = 2342342348273482374343434
API_SECRET = 892374928347928347283473

message = nonce + customer_id + api_key
signature = hmac.new(
    API_SECRET,
    msg=message,
    digestmod=hashlib.sha256
).hexdigest().upper()

but I get this

Traceback (most recent call last): File "gen.py", line 13, in digestmod=hashlib.sha256 File "/usr/lib/python2.7/hmac.py", line 136, in new return HMAC(key, msg, digestmod) File "/usr/lib/python2.7/hmac.py", line 71, in init if len(key) > blocksize: TypeError: object of type 'long' has no len()

Does anyone have any idea why crashes? [1]: https://www.bitstamp.net/api/#account-balance


Solution

  • You're using numbers where the api expects a string/bytes.

    # python 2
    import hmac
    import hashlib
    
    nonce = 1234
    customer_id = 123232
    api_key = 2342342348273482374343434
    API_SECRET = 892374928347928347283473
    
    message = '{} {} {}'.format(nonce, customer_id, api_key)
    signature = hmac.new(
        str(API_SECRET),
        msg=message,
        digestmod=hashlib.sha256
    ).hexdigest().upper()
    
    print signature