MCPcopy Create free account
hub / github.com/ccxt/ccxt / create_auth_token

Method create_auth_token

python/ccxt/async_support/coinbase.py:4852–4886  ·  view source on GitHub ↗
(self, seconds: Int, method: Str = None, url: Str = None, useEddsa=False)

Source from the content-addressed store, hash-verified

4850 return parsedPositions
4851
4852 def create_auth_token(self, seconds: Int, method: Str = None, url: Str = None, useEddsa=False):
4853 # v1 https://docs.cdp.coinbase.com/api-reference/authentication#php-2
4854 # v2 https://docs.cdp.coinbase.com/api-reference/v2/authentication
4855 uri = None
4856 if url is not None:
4857 uri = method + ' ' + url.replace('https://', '')
4858 quesPos = uri.find('?')
4859 # Due to we use mb_strpos, quesPos could be False in php. In that case, the quesPos >= 0 is True
4860 # Also it's not possible that the question mark is first character, only check > 0 here.
4861 if quesPos > 0:
4862 uri = uri[0:quesPos]
4863 # self.eddsa{"sub":"d2efa49a-369c-43d7-a60e-ae26e28853c2","iss":"cdp","aud":["cdp_service"],"uris":["GET api.coinbase.com/api/v3/brokerage/transaction_summary"]}
4864 nonce = self.random_bytes(16)
4865 aud = 'cdp_service' if useEddsa else 'retail_rest_api_proxy'
4866 iss = 'cdp' if useEddsa else 'coinbase-cloud'
4867 request = {
4868 'aud': [aud],
4869 'iss': iss,
4870 'nbf': seconds,
4871 'exp': seconds + 120,
4872 'sub': self.apiKey,
4873 'iat': seconds,
4874 }
4875 if uri is not None:
4876 if not useEddsa:
4877 request['uri'] = uri
4878 else:
4879 request['uris'] = [uri]
4880 if useEddsa:
4881 byteArray = self.base64_to_binary(self.secret)
4882 seed = self.array_slice(byteArray, 0, 32)
4883 return self.jwt(request, seed, 'sha256', False, {'kid': self.apiKey, 'nonce': nonce, 'alg': 'EdDSA'})
4884 else:
4885 # self.ecdsawith p256
4886 return self.jwt(request, self.encode(self.secret), 'sha256', False, {'kid': self.apiKey, 'nonce': nonce, 'alg': 'ES256'})
4887
4888 def nonce(self):
4889 return self.milliseconds() - self.options['timeDifference']

Callers 2

signMethod · 0.95
create_ws_authMethod · 0.95

Calls 7

replaceMethod · 0.80
findMethod · 0.80
random_bytesMethod · 0.80
base64_to_binaryMethod · 0.80
array_sliceMethod · 0.80
jwtMethod · 0.45
encodeMethod · 0.45

Tested by

no test coverage detected