Midnightar commited on
Commit
41dc98a
Β·
verified Β·
1 Parent(s): be0f10b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -6
app.py CHANGED
@@ -66,24 +66,44 @@ def test_endpoint():
66
  @app.route("/sign", methods=["POST"])
67
  def sign_payload():
68
  """
69
- Expects JSON body with a single field `payload` (the string you need to sign).
70
- Returns base64-encoded RSA-SHA256 signature.
 
71
  """
72
  try:
 
 
73
  data = request.get_json(force=True)
74
  payload = data.get("payload", "")
 
75
  if not payload:
76
  return jsonify({"error": "Missing 'payload' field"}), 400
77
 
78
- # Load private key
79
- priv_key = rsa.PrivateKey.load_pkcs1(PRIVATE_KEY.encode())
 
 
 
 
 
 
 
 
80
 
81
- # Create signature
 
 
 
 
 
 
 
82
  signature = rsa.sign(payload.encode(), priv_key, 'SHA-256')
83
  signature_b64 = base64.b64encode(signature).decode()
84
 
85
- print("βœ… Generated signature for payload:", payload)
86
  return jsonify({"signature": signature_b64}), 200
 
87
  except Exception as e:
88
  print("πŸ”₯ Error generating signature:", str(e))
89
  return jsonify({"error": str(e)}), 500
 
66
  @app.route("/sign", methods=["POST"])
67
  def sign_payload():
68
  """
69
+ Generate RSA-SHA256 signature for a given string payload.
70
+ Body: { "payload": "string-to-sign" }
71
+ Returns: { "signature": "base64_signature" }
72
  """
73
  try:
74
+ import rsa, base64
75
+
76
  data = request.get_json(force=True)
77
  payload = data.get("payload", "")
78
+
79
  if not payload:
80
  return jsonify({"error": "Missing 'payload' field"}), 400
81
 
82
+ # πŸ”’ Clean and load your PEM private key properly
83
+ key_data = PRIVATE_KEY.encode()
84
+ try:
85
+ priv_key = rsa.PrivateKey.load_pkcs1(key_data)
86
+ except Exception:
87
+ # Some keys use PKCS#8 format, handle conversion
88
+ from Crypto.PublicKey import RSA as CryptoRSA
89
+ from Crypto.Signature import pkcs1_15
90
+ from Crypto.Hash import SHA256
91
+ import base64
92
 
93
+ # Fallback for PKCS#8 keys
94
+ crypto_key = CryptoRSA.import_key(PRIVATE_KEY)
95
+ h = SHA256.new(payload.encode())
96
+ signature = pkcs1_15.new(crypto_key).sign(h)
97
+ signature_b64 = base64.b64encode(signature).decode()
98
+ return jsonify({"signature": signature_b64}), 200
99
+
100
+ # βœ… Sign using rsa library (PKCS#1 v1.5)
101
  signature = rsa.sign(payload.encode(), priv_key, 'SHA-256')
102
  signature_b64 = base64.b64encode(signature).decode()
103
 
104
+ print("βœ… Generated signature for:", payload)
105
  return jsonify({"signature": signature_b64}), 200
106
+
107
  except Exception as e:
108
  print("πŸ”₯ Error generating signature:", str(e))
109
  return jsonify({"error": str(e)}), 500