Files
mono/artdag/l2/setup_keys.py
giles 1a74d811f7 Incorporate art-dag-mono repo into artdag/ subfolder
Merges full history from art-dag/mono.git into the monorepo
under the artdag/ directory. Contains: core (DAG engine),
l1 (Celery rendering server), l2 (ActivityPub registry),
common (shared templates/middleware), client (CLI), test (e2e).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

git-subtree-dir: artdag
git-subtree-mainline: 1a179de547
git-subtree-split: 4c2e716558
2026-02-27 09:07:23 +00:00

52 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Generate RSA keypair for ActivityPub signing.
Usage:
python setup_keys.py [--data-dir /path/to/data] [--user username]
"""
import argparse
import os
from pathlib import Path
from keys import generate_keypair, has_keys, get_keys_dir
def main():
parser = argparse.ArgumentParser(description="Generate RSA keypair for L2 server")
parser.add_argument("--data-dir", default=os.environ.get("ARTDAG_DATA", str(Path.home() / ".artdag" / "l2")),
help="Data directory")
parser.add_argument("--user", default=os.environ.get("ARTDAG_USER", "giles"),
help="Username")
parser.add_argument("--force", action="store_true",
help="Overwrite existing keys")
args = parser.parse_args()
data_dir = Path(args.data_dir)
username = args.user
print(f"Data directory: {data_dir}")
print(f"Username: {username}")
if has_keys(data_dir, username) and not args.force:
print(f"\nKeys already exist for {username}!")
print(f" Private: {get_keys_dir(data_dir) / f'{username}.pem'}")
print(f" Public: {get_keys_dir(data_dir) / f'{username}.pub'}")
print("\nUse --force to regenerate (will invalidate existing signatures)")
return
print("\nGenerating RSA-2048 keypair...")
private_pem, public_pem = generate_keypair(data_dir, username)
keys_dir = get_keys_dir(data_dir)
print(f"\nKeys generated:")
print(f" Private: {keys_dir / f'{username}.pem'} (chmod 600)")
print(f" Public: {keys_dir / f'{username}.pub'}")
print(f"\nPublic key (for verification):")
print(public_pem)
if __name__ == "__main__":
main()