Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import requests
- import time
- import random
- import logging
- import sqlite3
- import json
- from Crypto.PublicKey import RSA
- from Crypto.Signature import PKCS1_v1_5
- from Crypto.Hash import SHA256
- from base64 import b64encode
- class FuelUP():
- def __init__(self, url, private_key, gs, sleep=2):
- self.private_key = private_key
- self.sleep = sleep
- self.url = url
- self.gs = gs
- self.conn = sqlite3.connect('gs.db')
- def _requests(self):
- timestamp = str(int(time.time()))
- nonce = self.generate_nonce()
- sing = self.gs['id'] + timestamp + nonce
- session = requests.Session()
- session.headers.update({
- 'gs-id': self.gs['id'],
- 'timestamp': timestamp,
- 'nonce': nonce,
- 'signature': self.sign_data(self.private_key, bytes(sing, 'utf-8'))
- })
- return session
- def sign_data(self, private_key, data):
- """
- param: private_key_loc Path to your private key
- param: package Data to be signed
- return: base64 encoded signature
- """
- key = open(private_key, "r").read()
- rsakey = RSA.importKey(key)
- signer = PKCS1_v1_5.new(rsakey)
- digest = SHA256.new()
- # It's being assumed the data is base64 encoded, so it's decoded before updating the digest
- digest.update(data)
- sign = signer.sign(digest)
- return b64encode(sign)
- def generate_nonce(self, length=8):
- """
- Generate pseudorandom number.
- """
- return ''.join([str(random.randint(0, 9)) for i in range(length)])
Add Comment
Please, Sign In to add comment