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)),
},
})
}
}