From ef942847b85b680841eda193933606953cb5b018 Mon Sep 17 00:00:00 2001 From: volosianko77 <160537908+volosianko77@users.noreply.github.com> Date: Tue, 12 Mar 2024 23:20:47 +0100 Subject: [PATCH] Update generate_infinite_expiry_signing_key.py 1. Created a generate_signing_key function to encapsulate the logic for generating the signing key and related data. 2. Moved the main logic into a main function. 3. Used input to get the account private key from the user instead of hardcoding it. 4. Improved function and variable names for better readability. 5. Added docstrings to functions to explain their purpose. 6. Modified the script to be more modular and easily extensible. --- generate_infinite_expiry_signing_key.py | 73 +++++++++++++------------ 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/generate_infinite_expiry_signing_key.py b/generate_infinite_expiry_signing_key.py index abf6840..8ce87b4 100644 --- a/generate_infinite_expiry_signing_key.py +++ b/generate_infinite_expiry_signing_key.py @@ -46,49 +46,54 @@ class AevoRegister(TypedDict): }, } -# NOTE: Change this to "mainnet" if you want to generate a mainnet signing key -environment = "testnet" -# NOTE: Paste your account private key here -# NOTE: BE CAREFUL WITH YOUR PRIVATE KEY, DO NOT SHARE IT WITH ANYONE -account_key = "" -domain = make_domain(**CONFIG[environment]["signing_domain"]) +def generate_signing_key(environment: str, account_key: str) -> AevoRegister: + domain = make_domain(**CONFIG[environment]["signing_domain"]) -account = Account.from_key(account_key) -print("Account:", account.address) + account = Account.from_key(account_key) + signing_key = secrets.token_hex(32) + signing_key_account = Account.from_key(signing_key) + expiry = 2 ** 256 - 1 -signing_key = secrets.token_hex(32) -signing_key_account = Account.from_key(signing_key) + sign_key = SignKey(account=account.address) + register = Register(key=signing_key_account.address, expiry=expiry) -expiry = 2**256 - 1 + sign_key_hash = keccak_256(sign_key.signable_bytes(domain=domain)) + signing_key_signature = Account._sign_hash(sign_key_hash, signing_key).signature.hex() -sign_key = SignKey(account=account.address) -register = Register(key=signing_key_account.address, expiry=expiry) + register_hash = keccak_256(register.signable_bytes(domain=domain)) + account_signature = Account._sign_hash(register_hash, account_key).signature.hex() -sign_key_hash = keccak_256(sign_key.signable_bytes(domain=domain)) -signing_key_signature = Account._sign_hash(sign_key_hash, signing_key).signature.hex() + return { + "account": account.address, + "signing_key": signing_key_account.address, + "expiry": str(expiry), + "account_signature": account_signature, + "signing_key_signature": signing_key_signature, + } -register_hash = keccak_256(register.signable_bytes(domain=domain)) -account_signature = Account._sign_hash(register_hash, account_key).signature.hex() -aevo_register: AevoRegister = { - "account": account.address, - "signing_key": signing_key_account.address, - "expiry": str(expiry), - "account_signature": account_signature, - "signing_key_signature": signing_key_signature, -} +def main(): + environment = "testnet" + account_key = input("Enter your account private key: ").strip() + + aevo_register = generate_signing_key(environment, account_key) + + print(aevo_register) + + r = requests.post(f"{CONFIG[environment]['rest_url']}/register", json=aevo_register) + print(r) + j = r.json() + + print(j) -print(aevo_register) + if "error" in j: + print("\n\nError:", j["error"]) + else: + print(f"\n\nInfinite expiry signing key generated for: {aevo_register['account']}") + print(f"Signing Key (Use this): {aevo_register['signing_key']}") -r = requests.post(f"{CONFIG[environment]['rest_url']}/register", json=aevo_register) -print(r) -j = r.json() -print(j) +if __name__ == "__main__": + main() -if "error" in j: - print("\n\nError:", j["error"]) -else: - print(f"\n\nInfinite expiry signing key generated for: {account.address}") - print(f"Signing Key (Use this): {signing_key}")