this repo has no description

legit: validate public keys

Changed files
+10
legit
routes
+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")