~bigbes/core-go

e4b0261f350d786d05afed62ce73fdc48801d9c5 — Drew DeVault 1 year, 6 months ago d3f7b91
Export webhooks public key via api-meta.json
2 files changed, 10 insertions(+), 5 deletions(-)

M crypto/crypto.go
M server/server.go
M crypto/crypto.go => crypto/crypto.go +4 -3
@@ 15,9 15,10 @@ import (
	"github.com/vaughan0/go-ini"
)

var WebhookPubkey ed25519.PublicKey

var (
	webhookSk ed25519.PrivateKey
	webhookPk ed25519.PublicKey
	bearerKey []byte
	fernetKey *fernet.Key
)


@@ 32,7 33,7 @@ func InitCrypto(config ini.File) {
		log.Fatalf("base64 decode webhooks private key: %v", err)
	}
	webhookSk = ed25519.NewKeyFromSeed(seed)
	webhookPk, _ = webhookSk.Public().(ed25519.PublicKey)
	WebhookPubkey, _ = webhookSk.Public().(ed25519.PublicKey)

	b64fernet, ok := config.Get("sr.ht", "network-key")
	if !ok {


@@ 52,7 53,7 @@ func Sign(payload []byte) []byte {
}

func Verify(payload, signature []byte) bool {
	return ed25519.Verify(webhookPk, payload, signature)
	return ed25519.Verify(WebhookPubkey, payload, signature)
}

func Encrypt(payload []byte) []byte {

M server/server.go => server/server.go +6 -2
@@ 3,6 3,7 @@ package server
import (
	"context"
	"database/sql"
	"encoding/base64"
	"encoding/json"
	"fmt"
	"log"


@@ 30,6 31,7 @@ import (

	"git.sr.ht/~sircmpwn/core-go/auth"
	"git.sr.ht/~sircmpwn/core-go/config"
	"git.sr.ht/~sircmpwn/core-go/crypto"
	"git.sr.ht/~sircmpwn/core-go/database"
	"git.sr.ht/~sircmpwn/core-go/email"
	"git.sr.ht/~sircmpwn/core-go/redis"


@@ 124,9 126,11 @@ func (server *Server) WithSchema(

		r.Handle("/query/metrics", promhttp.Handler())
		r.Get("/query/api-meta.json", func(w http.ResponseWriter, r *http.Request) {
			pkey := base64.StdEncoding.EncodeToString(crypto.WebhookPubkey)
			info := struct {
				Scopes []string `json:"scopes"`
			}{scopes}
				Scopes       []string `json:"scopes"`
				WebhookPulic string   `json:"webhook-pubkey"`
			}{scopes, pkey}

			j, err := json.Marshal(&info)
			if err != nil {