itssKarthiii's picture
Upload 70 files
6b408d7 verified
"""
API Key Generation Script.
Generates secure API keys for VoiceAuth API authentication.
"""
import argparse
import secrets
import sys
from pathlib import Path
def generate_api_key(prefix: str = "sk_", length: int = 48) -> str:
"""
Generate a secure API key.
Args:
prefix: Prefix for the API key (default: "sk_")
length: Length of the random portion in characters (default: 48)
Returns:
Generated API key string
"""
# Generate random hex bytes (length/2 bytes = length hex chars)
random_part = secrets.token_hex(length // 2)
return f"{prefix}{random_part}"
def main() -> None:
"""Main entry point for API key generation."""
parser = argparse.ArgumentParser(
description="Generate secure API keys for VoiceAuth API",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Examples:
python generate_api_key.py
python generate_api_key.py --prefix sk_live_
python generate_api_key.py --count 5
python generate_api_key.py --save
""",
)
parser.add_argument(
"--prefix",
type=str,
default="sk_",
help="Prefix for the API key (default: sk_)",
)
parser.add_argument(
"--length",
type=int,
default=48,
help="Length of random portion (default: 48)",
)
parser.add_argument(
"--count",
type=int,
default=1,
help="Number of keys to generate (default: 1)",
)
parser.add_argument(
"--save",
action="store_true",
help="Save to .env file (appends if exists)",
)
args = parser.parse_args()
# Generate keys
keys = [generate_api_key(args.prefix, args.length) for _ in range(args.count)]
# Display keys
print("\n" + "=" * 60)
print("VoiceAuth API - Generated API Keys")
print("=" * 60 + "\n")
for i, key in enumerate(keys, 1):
if args.count > 1:
print(f"Key {i}: {key}")
else:
print(f"API Key: {key}")
print("\n" + "-" * 60)
print("Usage Instructions:")
print("-" * 60)
print("\n1. Add to your .env file:")
print(f" API_KEYS={','.join(keys)}")
print("\n2. Use in requests:")
print(f' curl -H "x-api-key: {keys[0]}" ...')
print("\n" + "=" * 60 + "\n")
# Save to .env if requested
if args.save:
env_path = Path(__file__).parent.parent / ".env"
# Check if .env exists
if env_path.exists():
# Read existing content
with open(env_path, "r") as f:
content = f.read()
# Check if API_KEYS already exists
if "API_KEYS=" in content:
print(f"[WARNING] API_KEYS already exists in {env_path}")
print(" Please update it manually or remove the existing entry.")
sys.exit(1)
# Append new keys
with open(env_path, "a") as f:
f.write(f"\nAPI_KEYS={','.join(keys)}\n")
print(f"[OK] API keys appended to {env_path}")
else:
# Create new .env from template
template_path = Path(__file__).parent.parent / ".env.example"
if template_path.exists():
with open(template_path, "r") as f:
content = f.read()
# Replace placeholder
content = content.replace(
"API_KEYS=sk_test_your_api_key_here",
f"API_KEYS={','.join(keys)}",
)
with open(env_path, "w") as f:
f.write(content)
print(f"[OK] Created {env_path} with generated API keys")
else:
# Just create minimal .env
with open(env_path, "w") as f:
f.write(f"API_KEYS={','.join(keys)}\n")
print(f"[OK] Created {env_path} with API keys")
if __name__ == "__main__":
main()