+10
legit/routes/routes.go
+10
legit/routes/routes.go
···
19
"github.com/icyphox/bild/legit/db"
20
"github.com/icyphox/bild/legit/git"
21
"github.com/russross/blackfriday/v2"
22
)
23
24
type Handle struct {
···
435
}
436
437
func (h *Handle) Keys(w http.ResponseWriter, r *http.Request) {
438
switch r.Method {
439
case http.MethodGet:
440
// TODO: fetch keys from db
···
445
case http.MethodPut:
446
key := r.FormValue("key")
447
name := r.FormValue("name")
448
// TODO: add did here
449
if err := h.db.AddPublicKey("did:ashtntnashtx", name, key); err != nil {
450
h.WriteOOBNotice(w, "keys", "Failed to add key")
···
19
"github.com/icyphox/bild/legit/db"
20
"github.com/icyphox/bild/legit/git"
21
"github.com/russross/blackfriday/v2"
22
+
"golang.org/x/crypto/ssh"
23
)
24
25
type Handle struct {
···
436
}
437
438
func (h *Handle) Keys(w http.ResponseWriter, r *http.Request) {
439
+
440
switch r.Method {
441
case http.MethodGet:
442
// TODO: fetch keys from db
···
447
case http.MethodPut:
448
key := r.FormValue("key")
449
name := r.FormValue("name")
450
+
451
+
_, _, _, _, err := ssh.ParseAuthorizedKey([]byte(key))
452
+
if err != nil {
453
+
h.WriteOOBNotice(w, "keys", "Invalid public key. Check your formatting and try again.")
454
+
log.Printf("parsing public key: %s", err)
455
+
return
456
+
}
457
+
458
// TODO: add did here
459
if err := h.db.AddPublicKey("did:ashtntnashtx", name, key); err != nil {
460
h.WriteOOBNotice(w, "keys", "Failed to add key")