func postCertificate()

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