#!/usr/bin/python3 from flask import Flask from flask import request import ecdsa import codecs ecdsa_public_key = '8716c78c09a4e4571a3112eca1c7ddce41289e20da446894b621f2a11ba91bc963f2e9fb9ddd5552c26faf814bc582b4' #ecdsa_public_key = '048716c78c09a4e4571a3112eca1c7ddce41289e20da446894b621f2a11ba91bc963f2e9fb9ddd5552c26faf814bc582b4' app = Flask(__name__) @app.route("/get/", methods=['get']) def get(id): r_id = id r_sum = request.args.get('sum') r_auth = request.headers.get('auth') print('---------------------------') print('host: ', request.host) print('full_path: ', request.full_path) print('---------------------------') print('id: ', r_id) print('sum: ', r_sum) print('header, auth:', r_auth) signed_data = request.host + request.full_path print('might have been signed: ', signed_data) r_auth_bytes = bytes.fromhex(str(r_auth)) #x_coord = ecdsa_public_key[:64] #y_coord = ecdsa_public_key[64:] # #if int(y_coord, 16) % 2 == 0: # prefix = b'\x02' #else: # prefix = b'\x03' # #bytes_public_key = prefix + codecs.decode(x_coord, 'hex') bytes_public_key = bytes.fromhex(ecdsa_public_key) bytes_signed_data = signed_data.encode('utf-8') vk = ecdsa.VerifyingKey.from_string(bytes_public_key, curve=ecdsa.SECP256k1) if vk.verify(r_auth_bytes, bytes_signed_data): response = "YES" else: response = "NO" return response if __name__== "__main__": app.run()