smallstep-certificates/api/crl.go

33 lines
831 B
Go
Raw Normal View History

2021-10-30 07:52:50 +00:00
package api
import (
"encoding/pem"
"net/http"
2022-09-14 18:50:11 +00:00
"github.com/smallstep/certificates/api/render"
)
2021-10-30 07:52:50 +00:00
2021-11-04 06:05:07 +00:00
// CRL is an HTTP handler that returns the current CRL in DER or PEM format
func CRL(w http.ResponseWriter, r *http.Request) {
crlBytes, err := mustAuthority(r.Context()).GetCertificateRevocationList()
2021-10-30 07:52:50 +00:00
if err != nil {
2022-09-14 18:50:11 +00:00
render.Error(w, err)
2021-11-04 06:05:07 +00:00
return
}
2022-09-14 18:50:11 +00:00
_, formatAsPEM := r.URL.Query()["pem"]
2021-11-04 06:05:07 +00:00
if formatAsPEM {
pemBytes := pem.EncodeToMemory(&pem.Block{
Type: "X509 CRL",
Bytes: crlBytes,
})
w.Header().Add("Content-Type", "application/x-pem-file")
w.Header().Add("Content-Disposition", "attachment; filename=\"crl.pem\"")
2022-09-14 18:50:11 +00:00
w.Write(pemBytes)
2021-11-04 06:05:07 +00:00
} else {
w.Header().Add("Content-Type", "application/pkix-crl")
w.Header().Add("Content-Disposition", "attachment; filename=\"crl.der\"")
2022-09-14 18:50:11 +00:00
w.Write(crlBytes)
2021-11-04 06:05:07 +00:00
}
2021-10-30 07:52:50 +00:00
}