44 "bytes"
55 "context"
66 "crypto/sha256"
7+ _ "embed"
78 "encoding/base64"
89 "encoding/json"
910 "flag"
@@ -17,16 +18,17 @@ import (
1718
1819 "filippo.io/mostly-harmless/vrf-r255"
1920 "filippo.io/torchwood"
20- "golang.org/x/mod/sumdb/note"
2121 "golang.org/x/mod/sumdb/tlog"
2222)
2323
2424const (
2525 defaultKeyserverURL = "https://keyserver.geomys.org"
26- defaultKeyserverPubkey = "keyserver.geomys.org+16b31509+ARLJ+pmTj78HzTeBj04V+LVfB+GFAQyrg54CRIju7Nn8"
2726 defaultKeyserverVRFKey = "mKPsDHDcVB95iPXW4Yc7+HPfi3xOw/bHFvfWw6CAMBs="
2827)
2928
29+ //go:embed default_policy.txt
30+ var defaultPolicy []byte
31+
3032func main () {
3133 allFlag := flag .Bool ("all" , false , "list all public keys in the transparency log" )
3234 flag .Parse ()
@@ -44,8 +46,8 @@ func main() {
4446 fmt .Fprintf (os .Stderr , "\n " )
4547 fmt .Fprintf (os .Stderr , "Environment:\n " )
4648 fmt .Fprintf (os .Stderr , " AGE_KEYSERVER_URL Default keyserver URL\n " )
47- fmt .Fprintf (os .Stderr , " AGE_KEYSERVER_PUBKEY Default keyserver transparency log vkey\n " )
4849 fmt .Fprintf (os .Stderr , " AGE_KEYSERVER_VRFKEY Default keyserver transparency log VRF public key\n " )
50+ fmt .Fprintf (os .Stderr , " AGE_KEYSERVER_POLICY Default keyserver transparency log policy\n " )
4951 os .Exit (2 )
5052 }
5153
@@ -57,16 +59,20 @@ func main() {
5759 server = defaultKeyserverURL
5860 }
5961
60- vkey := os .Getenv ("AGE_KEYSERVER_PUBKEY" )
61- if vkey == "" {
62- vkey = defaultKeyserverPubkey
62+ policyBytes := defaultPolicy
63+ if policyPath := os .Getenv ("AGE_KEYSERVER_POLICY" ); policyPath != "" {
64+ p , err := os .ReadFile (policyPath )
65+ if err != nil {
66+ fmt .Fprintf (os .Stderr , "Error: failed to read policy file: %v\n " , err )
67+ os .Exit (1 )
68+ }
69+ policyBytes = p
6370 }
64- v , err := note . NewVerifier ( vkey )
71+ policy , err := torchwood . ParsePolicy ( policyBytes )
6572 if err != nil {
66- fmt .Fprintf (os .Stderr , "Error: invalid keyserver public key : %v\n " , err )
73+ fmt .Fprintf (os .Stderr , "Error: invalid policy : %v\n " , err )
6774 os .Exit (1 )
6875 }
69- policy := torchwood .ThresholdPolicy (2 , torchwood .OriginPolicy (v .Name ()), torchwood .SingleVerifierPolicy (v ))
7076
7177 vrfKeyB64 := os .Getenv ("AGE_KEYSERVER_VRFKEY" )
7278 if vrfKeyB64 == "" {
0 commit comments