package handler import ( "encoding/json" "fmt" "io" "net/http" ) func (h *Handler) EncryptData(w http.ResponseWriter, r *http.Request) { //ctx := context.Background() var cipherText string reqBody, err := io.ReadAll(r.Body) if err != nil { h.Logger.Error("Invalid data received", "error", err) fmt.Fprintf(w, "Invalid data received") w.WriteHeader(http.StatusInternalServerError) return } else { h.Logger.Debug("received input data", "length", len(reqBody)) } // get the json input var input map[string]string if err := json.Unmarshal(reqBody, &input); err != nil { h.Logger.Error("unable to unmarshal json", "error", err) prettyPrint(reqBody) w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusInternalServerError) json.NewEncoder(w).Encode(map[string]string{ "status": "ERROR", "message": fmt.Sprintf("Unable to unmarshal JSON in request body: '%s'", err), }) return } else { h.Logger.Debug("successfully decoded JSON") //prettyPrint(input) } //cipher, err := h.Secret.Encrypt() for k := range input { //h.Logger.Debug("foo", "key", k, "value", input[k]) cipherText, err = h.Secret.Encrypt([]byte(input[k])) if err != nil { h.Logger.Error("Unable to encrypt", "error", err) } else { h.Logger.Debug("Encrypted plaintext", "length", len(input[k]), "ciphertext", cipherText) w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]string{ "status": "OK", "message": cipherText, }) return } } // return the result }