Update app.py
Browse files
app.py
CHANGED
|
@@ -56,4 +56,31 @@ async def relay_txn(payload: dict):
|
|
| 56 |
|
| 57 |
|
| 58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
|
|
|
|
| 56 |
|
| 57 |
|
| 58 |
|
| 59 |
+
@app.post("/sign-message")
|
| 60 |
+
async def sign_message(payload: dict):
|
| 61 |
+
message = bytes(payload["message"])
|
| 62 |
+
|
| 63 |
+
# 1️⃣ verify quantum proof (same as your txn logic)
|
| 64 |
+
proof = base58.b58decode(payload["winternitz_proof"])
|
| 65 |
+
anchor = base58.b58decode(payload["anchor"])
|
| 66 |
+
lap = payload["lap"]
|
| 67 |
+
|
| 68 |
+
check = proof
|
| 69 |
+
for _ in range(lap):
|
| 70 |
+
check = hashlib.sha256(check).digest()
|
| 71 |
+
|
| 72 |
+
if check != anchor:
|
| 73 |
+
return {"success": False, "error": "Quantum auth failed"}
|
| 74 |
+
|
| 75 |
+
# 2️⃣ server signs message hash
|
| 76 |
+
msg_hash = hashlib.sha256(message).digest()
|
| 77 |
+
|
| 78 |
+
server_sig = SERVER_KEY.sign_message(msg_hash)
|
| 79 |
+
|
| 80 |
+
return {
|
| 81 |
+
"success": True,
|
| 82 |
+
"server_signature": base58.b58encode(bytes(server_sig)).decode()
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
|
| 86 |
|