| 1234567891011121314151617181920212223242526 |
- package middleware
- import (
- "net/http"
- "github.com/ncarlier/webhookd/pkg/middleware/signature"
- "github.com/ncarlier/webhookd/pkg/truststore"
- )
- // Signature is a middleware to checks HTTP request signature
- func Signature(ts truststore.TrustStore) Middleware {
- return func(next http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- handler := signature.HTTPSignatureHandler
- if signature.IsEd25519SignatureRequest(r.Header) {
- handler = signature.Ed25519SignatureHandler
- }
- if err := handler(r, ts); err != nil {
- w.WriteHeader(401)
- w.Write([]byte("401 Unauthorized: " + err.Error()))
- return
- }
- next.ServeHTTP(w, r)
- })
- }
- }
|