FireWalletPlugins/signature-checker.py

86 lines
2.2 KiB
Python
Raw Permalink Normal View History

2025-01-29 17:07:34 +11:00
import json
import account
import requests
# Plugin Data
info = {
"name": "Check signatures",
"description": "Validate signatures",
"version": "1.0",
"author": "Nathan.Woodburn/"
}
# Functions
functions = {
"validate":{
"name": "Validate signature",
"type": "default",
"description": "Validate that a message was signed by a specific domain",
"params": {
"domain": {
"name": "Signing domain",
"type": "text",
},
"message": {
"name": "Message",
"type": "text",
},
"signature": {
"name": "Signature",
"type": "text",
}
},
"returns": {
"status":
{
"name": "Validity of the signature",
"type": "text"
}
}
2025-01-29 17:26:36 +11:00
},
"advancedValidate":{
"name": "Validate signature from json",
"type": "default",
"description": "Validate that a message was signed by a specific domain using json format",
"params": {
"json": {
"name": "JSON signature object",
"type": "longText",
}
},
"returns": {
"status":
{
"name": "Validity of the signature",
"type": "text"
}
}
2025-01-29 17:07:34 +11:00
}
}
def validate(params, authentication):
domain = params["domain"]
message = params["message"]
signature = params["signature"]
if account.verifyMessageWithName(domain, signature,message):
return {"status": "Valid"}
2025-01-29 17:26:36 +11:00
return {"status": "Invalid signature"}
def advancedValidate(params, authentication):
data = params["json"]
try:
data = json.loads(data)
except:
return {"status": "Invalid JSON"}
if "domain" in data and "message" in data and "signature" in data:
domain = data["domain"]
message = data["message"]
signature = data["signature"]
if account.verifyMessageWithName(domain, signature,message):
return {"status": "Valid"}
return {"status": "Invalid signature"}
return {"status": "Invalid JSON"}