+ if err = WriteFileSync(dirPath, path+SHA256Ext, digest); err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ }
+ for _, file := range r.MultipartForm.File["gpg_signature"] {
+ filename := file.Filename
+ if _, exists := gpgSigsExpected[filename]; !exists {
+ http.Error(w, "unexpected GPG signature filename", http.StatusBadRequest)
+ return
+ }
+ delete(gpgSigsExpected, filename)
+ log.Println(r.RemoteAddr, "put", filename, "by", username)
+ path := filepath.Join(dirPath, filename)
+ if _, err = os.Stat(path); err == nil {
+ log.Println(r.RemoteAddr, "already exists", filename)
+ http.Error(w, "Already exists", http.StatusBadRequest)
+ return
+ }
+ src, err := file.Open()
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ sig, err := ioutil.ReadAll(src)
+ src.Close()
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ if err = WriteFileSync(dirPath, path, sig); err != nil {