in certificate/main.go [51:92]
func postCertificate(c *gin.Context) {
logger.SetLogger()
certHeader, err := c.FormFile("certificate")
if err != nil {
log.Error().Err(err).Msg("Could not read certificate from request")
c.String(http.StatusBadRequest, "Could not read certificate from request: %s", err.Error())
return
}
certReader, err := certHeader.Open()
if err != nil {
log.Error().Err(err).Msg("Could not open certificate from form data")
c.String(http.StatusBadRequest, "Could not open certificate from form data: %s", err.Error())
return
}
certPEM, err := io.ReadAll(certReader)
if err != nil {
log.Error().Err(err).Msg("Could not read certificate from form data")
c.String(http.StatusBadRequest, "Could not read certificate from form data: %s", err.Error())
return
}
block, _ := pem.Decode(certPEM)
if block == nil {
log.Error().Err(err).Msg("Failed to parse certificate PEM")
c.String(http.StatusBadRequest, "Failed to parse certificate PEM")
return
}
certX509, err := x509.ParseCertificate(block.Bytes)
if err != nil {
log.Error().Err(err).Msg("Could not parse X.509 certificate")
c.String(http.StatusBadRequest, "Could not parse X.509 certificate: %s", err.Error())
return
}
cert := CertToJSON(certX509)
c.JSON(http.StatusCreated, cert)
}