38 lines
730 B
Go
38 lines
730 B
Go
package main
|
|
|
|
import (
|
|
"crypto/ed25519"
|
|
"encoding/base64"
|
|
"errors"
|
|
"net/http"
|
|
)
|
|
|
|
func verify(id string, body []byte) error {
|
|
b, err := base64.RawURLEncoding.DecodeString(id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if len(body) < ed25519.SignatureSize {
|
|
return errors.New("body too short")
|
|
}
|
|
message := body[:len(body)-ed25519.SignatureSize]
|
|
sig := body[len(body)-ed25519.SignatureSize:]
|
|
if !ed25519.Verify(ed25519.PublicKey(b), message, sig) {
|
|
return errors.New("signature verification failed")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Create user
|
|
func createHandler(w http.ResponseWriter, r *http.Request) {
|
|
r.ParseForm()
|
|
id := r.Form.Get("id")
|
|
dhtGet(id)
|
|
|
|
}
|
|
|
|
// Delete user
|
|
func deleteHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|