from flask import Flask, request, Response import hmac app = Flask(__name__) psk = bytes.fromhex('redacted secret') @app.route('/webhook', methods=['POST']) def respond(): content_len = request.headers['Content-Length'] received_signature = request.headers['X-Ztc-Signature'] print(f'\n{received_signature=}') sig_parts = received_signature.split(',') t = sig_parts[0].split('=')[1] v1 = sig_parts[1].split('=')[1] h = hmac.new(key=psk, digestmod='sha256') h.update(t.encode()) h.update(b',') h.update(request.data) # bytes hexdigest = h.hexdigest() print(f'Received hash : {v1}') print(f'Calculated hash: {hexdigest}') print(f'Compare hashes result: {hmac.compare_digest(v1, hexdigest)}') print(f'Content length from header: {int(content_len)}') print(f'Content length from request body: {len(request.data)}') print() return Response(status=200)