func()

in server/cmd/harp-server/internal/dispatchers/vault/routes/transit.go [50:83]


func (h *vaultTransitHandler) encryptData() http.HandlerFunc {
	type request struct {
		PlainText string `json:"plaintext,omitempty"`
	}

	return func(w http.ResponseWriter, r *http.Request) {
		var req request
		if err := decodeJSONBody(w, r, &req); err != nil {
			http.Error(w, "request is invalid", http.StatusBadRequest)
			return
		}

		// Check plaintext encoding
		rawPlainText, err := base64.StdEncoding.DecodeString(req.PlainText)
		if err != nil {
			http.Error(w, "plaintext must be a valid base64 encoded value", http.StatusBadRequest)
			return
		}

		// Encrypt plaintext with transformer
		cipherRaw, err := h.tr.To(r.Context(), rawPlainText)
		if err != nil {
			http.Error(w, "unable to encrypt plaintext", http.StatusBadRequest)
			return
		}

		// Return response
		with(w, r, http.StatusOK, &KV{
			"data": &KV{
				"ciphertext": fmt.Sprintf("vault:v1:%s", base64.StdEncoding.EncodeToString(cipherRaw)),
			},
		})
	}
}