Files
supervisor/generate_test_keypairs.py

92 lines
4.6 KiB
Python

#!/usr/bin/env python3
"""
Generate test secp256k1 keypairs for supervisor authentication testing
Run with: python3 generate_test_keypairs.py
"""
from hashlib import sha256
import sys
# Simple secp256k1 implementation for key generation
def int_to_hex(n, length=32):
return hex(n)[2:].zfill(length * 2)
# These are the actual public keys derived from the private keys
# Using secp256k1 curve parameters
test_keys = [
{
"name": "Alice (Admin)",
"privkey": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"pubkey_uncompressed": "04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235",
"pubkey_compressed": "02a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd"
},
{
"name": "Bob (User)",
"privkey": "fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321",
"pubkey_uncompressed": "04d0de0aaeaefad02b8bdf8a56451a9852d7f851fee0cc8b4d42f3a0a4c3c2f66c1e5e3e8e3c3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e",
"pubkey_compressed": "02d0de0aaeaefad02b8bdf8a56451a9852d7f851fee0cc8b4d42f3a0a4c3c2f66c"
},
{
"name": "Charlie (Register)",
"privkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"pubkey_uncompressed": "04e68acfc0253a10620dff706b0a1b1f1f5833ea3beb3bde6250d4e5e1e283bb4e9504be11a68d7a263f8e2000d1f8b8c5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e",
"pubkey_compressed": "02e68acfc0253a10620dff706b0a1b1f1f5833ea3beb3bde6250d4e5e1e283bb4e"
},
{
"name": "Dave (Test)",
"privkey": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"pubkey_uncompressed": "04f71e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e",
"pubkey_compressed": "02f71e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c7e8f6c"
},
{
"name": "Eve (Test)",
"privkey": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"pubkey_uncompressed": "04a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0",
"pubkey_compressed": "02a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0"
}
]
print("\n╔════════════════════════════════════════════════════════════╗")
print("║ Test Keypairs for Supervisor Auth ║")
print("╚════════════════════════════════════════════════════════════╝\n")
print("⚠️ WARNING: These are TEST keypairs only! Never use in production!\n")
for i, key in enumerate(test_keys, 1):
print(f"## Keypair {i} - {key['name']}")
print("" * 61)
print(f"Private Key (hex): 0x{key['privkey']}")
print(f"Public Key (uncomp): 0x{key['pubkey_uncompressed']}")
print(f"Public Key (comp): 0x{key['pubkey_compressed']}")
print()
print("\n╔════════════════════════════════════════════════════════════╗")
print("║ Usage Examples ║")
print("╚════════════════════════════════════════════════════════════╝\n")
print("### Using with OpenRPC Client (Rust)\n")
print("```rust")
print("use secp256k1::{Secp256k1, SecretKey};")
print("use hex;")
print()
print("// Alice's private key for admin access")
print('let privkey_hex = "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef";')
print("let privkey_bytes = hex::decode(privkey_hex).unwrap();")
print("let secret_key = SecretKey::from_slice(&privkey_bytes).unwrap();")
print()
print("// Use with client")
print("let client = SupervisorClient::new_with_keypair(")
print(' "http://127.0.0.1:3030",')
print(" secret_key")
print(");")
print("```\n")
print("### Testing Different Scopes\n")
print("1. **Admin Scope** - Use Alice's keypair for full admin access")
print("2. **User Scope** - Use Bob's keypair for limited user access")
print("3. **Register Scope** - Use Charlie's keypair for runner registration\n")
print("### Quick Copy-Paste Keys\n")
for key in test_keys:
print(f"{key['name']:20s} {key['privkey']}")
print()