QuickDID is a high-performance AT Protocol identity resolution service written in Rust. It provides handle-to-DID resolution with Redis-backed caching and queue processing.
1#!/bin/bash
2
3# Script to generate .well-known static files based on QuickDID configuration
4# Usage: HTTP_EXTERNAL=quickdid.smokesignal.tools ./generate-wellknown.sh
5#
6# Note: Since we no longer process SERVICE_KEY, you'll need to manually
7# add the public key to the did.json file if you need DID document support.
8
9set -e
10
11# Check required environment variables
12if [ -z "$HTTP_EXTERNAL" ]; then
13 echo "Error: HTTP_EXTERNAL environment variable is required"
14 echo "Usage: HTTP_EXTERNAL=example.com ./generate-wellknown.sh"
15 exit 1
16fi
17
18# Ensure www/.well-known directory exists
19mkdir -p www/.well-known
20
21# Generate service DID from HTTP_EXTERNAL
22if [[ "$HTTP_EXTERNAL" == *":"* ]]; then
23 # Contains port - URL encode the colon
24 SERVICE_DID="did:web:${HTTP_EXTERNAL//:/%3A}"
25else
26 SERVICE_DID="did:web:$HTTP_EXTERNAL"
27fi
28
29echo "Generating .well-known files for $SERVICE_DID"
30
31# Write atproto-did file
32echo "$SERVICE_DID" > www/.well-known/atproto-did
33echo "Created: www/.well-known/atproto-did"
34
35# Create a basic did.json template
36# Note: You'll need to manually add the publicKeyMultibase if you need DID document support
37
38cat > www/.well-known/did.json <<EOF
39{
40 "@context": [
41 "https://www.w3.org/ns/did/v1",
42 "https://w3id.org/security/multikey/v1"
43 ],
44 "id": "$SERVICE_DID",
45 "verificationMethod": [],
46 "service": [
47 {
48 "id": "${SERVICE_DID}#quickdid",
49 "type": "QuickDIDService",
50 "serviceEndpoint": "https://${HTTP_EXTERNAL}"
51 }
52 ]
53}
54EOF
55
56echo "Created: www/.well-known/did.json"
57echo ""
58echo "Note: The did.json file is a basic template. If you need DID document support,"
59echo "you'll need to manually add the verificationMethod with your public key."