A from-scratch atproto PDS implementation in Python (mirrors https://github.com/DavidBuchanan314/millipds)
1#!/bin/sh
2
3if [ "$3" = "" ]
4then
5 echo "USAGE: $0 <handle> <pds_host> <plc_host>"
6 exit
7fi
8
9set -eu
10
11HANDLE=$1
12PDS_HOST=$2
13PLC_HOST=$3
14
15ROTATION_KEY_PATH="${HANDLE}_rotation_key.pem"
16REPO_KEY_PATH="${HANDLE}_repo_key.pem"
17GENESIS_JSON_PATH="${HANDLE}_plc_genesis.json"
18DID_LOG_PATH="${HANDLE}_did.txt"
19
20echo "Generating keys..."
21
22millipds util keygen > $ROTATION_KEY_PATH
23millipds util keygen > $REPO_KEY_PATH
24
25DID_PLC=$(
26 millipds util plcgen \
27 --genesis_json=$GENESIS_JSON_PATH \
28 --rotation_key=$ROTATION_KEY_PATH \
29 --handle=$HANDLE \
30 --pds_host=$PDS_HOST \
31 --repo_pubkey=$(millipds util print_pubkey $REPO_KEY_PATH)
32)
33
34echo $DID_PLC > $DID_LOG_PATH
35
36echo "Submitting genesis op to PLC..."
37
38PLC_URL="${PLC_HOST}/${DID_PLC}"
39
40curl --json @$GENESIS_JSON_PATH $PLC_URL
41echo
42echo
43echo "Created identity for ${HANDLE} at ${PLC_URL}"
44echo
45echo "rotation key has been saved to ${ROTATION_KEY_PATH}"
46echo "repo signing key has been saved to ${REPO_KEY_PATH}"
47echo "did:plc string has been logged to ${DID_LOG_PATH}"
48echo
49echo "Please store the rotation key somewhere especially safe!"