Guest User

Untitled

a guest
Jan 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. import os
  2. import requests
  3. import time
  4. import random
  5. import logging
  6. import sqlite3
  7. import json
  8.  
  9. from Crypto.PublicKey import RSA
  10. from Crypto.Signature import PKCS1_v1_5
  11. from Crypto.Hash import SHA256
  12. from base64 import b64encode
  13.  
  14.  
  15. class FuelUP():
  16. def __init__(self, url, private_key, gs, sleep=2):
  17. self.private_key = private_key
  18. self.sleep = sleep
  19. self.url = url
  20. self.gs = gs
  21. self.conn = sqlite3.connect('gs.db')
  22.  
  23. def _requests(self):
  24. timestamp = str(int(time.time()))
  25. nonce = self.generate_nonce()
  26. sing = self.gs['id'] + timestamp + nonce
  27.  
  28. session = requests.Session()
  29. session.headers.update({
  30. 'gs-id': self.gs['id'],
  31. 'timestamp': timestamp,
  32. 'nonce': nonce,
  33. 'signature': self.sign_data(self.private_key, bytes(sing, 'utf-8'))
  34. })
  35. return session
  36.  
  37. def sign_data(self, private_key, data):
  38. """
  39. param: private_key_loc Path to your private key
  40. param: package Data to be signed
  41. return: base64 encoded signature
  42. """
  43. key = open(private_key, "r").read()
  44. rsakey = RSA.importKey(key)
  45. signer = PKCS1_v1_5.new(rsakey)
  46. digest = SHA256.new()
  47. # It's being assumed the data is base64 encoded, so it's decoded before updating the digest
  48. digest.update(data)
  49. sign = signer.sign(digest)
  50. return b64encode(sign)
  51.  
  52. def generate_nonce(self, length=8):
  53. """
  54. Generate pseudorandom number.
  55. """
  56. return ''.join([str(random.randint(0, 9)) for i in range(length)])
Add Comment
Please, Sign In to add comment