}, "bundle": func() (http.Handler, error) { return bundle.NewHandler(conf.CABundleFile, conf.IntBundleFile) }, "newkey": func() (http.Handler, error) { return generator.NewHandler(generator.CSRValidate) }, "init_ca": func() (http.Handler, error) { return initca.NewHandler(), nil }, "scan": func() (http.Handler, error) { return scan.NewHandler(conf.CABundleFile) }, "scaninfo": func() (http.Handler, error) { return scan.NewInfoHandler(), nil }, "certinfo": func() (http.Handler, error) { return certinfo.NewHandler(), nil }, "ocspsign": func() (http.Handler, error) { if ocspSigner == nil { return nil, errBadSigner } return apiocsp.NewHandler(ocspSigner), nil
}, "bundle": func() (http.Handler, error) { return bundle.NewHandler(conf.CABundleFile, conf.IntBundleFile) }, "newkey": func() (http.Handler, error) { return generator.NewHandler(generator.CSRValidate) }, "init_ca": func() (http.Handler, error) { return initca.NewHandler(), nil }, "scan": func() (http.Handler, error) { return scan.NewHandler(), nil }, "scaninfo": func() (http.Handler, error) { return scan.NewInfoHandler(), nil }, "/": func() (http.Handler, error) { return http.FileServer(FS(conf.UseLocal)), nil }, } // v1APIPath prepends the V1 API prefix to endpoints not func v1APIPath(endpoint string) string { prefix := "/api/v1/cfssl/" if strings.HasPrefix(endpoint, "/") {