Вот как я генерирую TokenPassport.
def _generateTimestamp(self):
return str(int(time()))
def _generateNonce(self, length=20):
"""Generate pseudorandom number
"""
return ''.join([str(random.randint(0, 9)) for i in range(length)])
def _getSignatureMessage(self, nonce, timestamp):
return '&'.join(
(
self._setting['ACCOUNT'],
self._setting['CONSUMER_KEY'],
self._setting['TOKEN_ID'],
nonce,
timestamp,
)
)
def _getSignatureKey(self):
return '&'.join((self._setting['CONSUMER_SECRET'], self._setting['TOKEN_SECRET']))
def _getSignatureValue(self, nonce, timestamp):
key = self._getSignatureKey()
message = self._getSignatureMessage(nonce, timestamp)
hashed = hmac.new(
key=key.encode('utf-8'),
msg=message.encode('utf-8'),
digestmod=hashlib.sha256
).digest()
return base64.b64encode(hashed).decode()
@property
def tokenPassport(self):
TokenPassport = self.getDataType("ns0:TokenPassport")
TokenPassportSignature = self.getDataType("ns0:TokenPassportSignature")
nonce = self._generateNonce()
timestamp = self._generateTimestamp()
tokenPassportSignature = TokenPassportSignature(
self._getSignatureValue(nonce, timestamp),
algorithm='HMAC-SHA256'
)
return TokenPassport(
account=self._setting['ACCOUNT'],
consumerKey=self._setting['CONSUMER_KEY'],
token=self._setting['TOKEN_ID'],
nonce=nonce,
timestamp=timestamp,
signature=tokenPassportSignature
)