aboutsummaryrefslogtreecommitdiff
path: root/keyserver
diff options
context:
space:
mode:
Diffstat (limited to 'keyserver')
-rw-r--r--keyserver/keyserver.go32
-rw-r--r--keyserver/routing/keys.go33
-rw-r--r--keyserver/routing/routing.go56
3 files changed, 121 insertions, 0 deletions
diff --git a/keyserver/keyserver.go b/keyserver/keyserver.go
new file mode 100644
index 00000000..1e0d5cb4
--- /dev/null
+++ b/keyserver/keyserver.go
@@ -0,0 +1,32 @@
+// Copyright 2020 The Matrix.org Foundation C.I.C.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package keyserver
+
+import (
+ "github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
+ "github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
+ "github.com/matrix-org/dendrite/common/basecomponent"
+ "github.com/matrix-org/dendrite/keyserver/routing"
+)
+
+// SetupFederationSenderComponent sets up and registers HTTP handlers for the
+// FederationSender component.
+func SetupKeyServerComponent(
+ base *basecomponent.BaseDendrite,
+ deviceDB devices.Database,
+ accountsDB accounts.Database,
+) {
+ routing.Setup(base.APIMux, base.Cfg, accountsDB, deviceDB)
+}
diff --git a/keyserver/routing/keys.go b/keyserver/routing/keys.go
new file mode 100644
index 00000000..a279a747
--- /dev/null
+++ b/keyserver/routing/keys.go
@@ -0,0 +1,33 @@
+// Copyright 2020 The Matrix.org Foundation C.I.C.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package routing
+
+import (
+ "net/http"
+
+ "github.com/matrix-org/util"
+)
+
+func QueryKeys(
+ req *http.Request,
+) util.JSONResponse {
+ return util.JSONResponse{
+ Code: http.StatusOK,
+ JSON: map[string]interface{}{
+ "failures": map[string]interface{}{},
+ "device_keys": map[string]interface{}{},
+ },
+ }
+}
diff --git a/keyserver/routing/routing.go b/keyserver/routing/routing.go
new file mode 100644
index 00000000..d79ce6d4
--- /dev/null
+++ b/keyserver/routing/routing.go
@@ -0,0 +1,56 @@
+// Copyright 2020 The Matrix.org Foundation C.I.C.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package routing
+
+import (
+ "net/http"
+
+ "github.com/gorilla/mux"
+ "github.com/matrix-org/dendrite/clientapi/auth"
+ "github.com/matrix-org/dendrite/clientapi/auth/authtypes"
+ "github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
+ "github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
+ "github.com/matrix-org/dendrite/common"
+ "github.com/matrix-org/dendrite/common/config"
+ "github.com/matrix-org/util"
+)
+
+const pathPrefixR0 = "/_matrix/client/r0"
+
+// Setup registers HTTP handlers with the given ServeMux. It also supplies the given http.Client
+// to clients which need to make outbound HTTP requests.
+//
+// Due to Setup being used to call many other functions, a gocyclo nolint is
+// applied:
+// nolint: gocyclo
+func Setup(
+ apiMux *mux.Router, cfg *config.Dendrite,
+ accountDB accounts.Database,
+ deviceDB devices.Database,
+) {
+ r0mux := apiMux.PathPrefix(pathPrefixR0).Subrouter()
+
+ authData := auth.Data{
+ AccountDB: accountDB,
+ DeviceDB: deviceDB,
+ AppServices: cfg.Derived.ApplicationServices,
+ }
+
+ r0mux.Handle("/keys/query",
+ common.MakeAuthAPI("queryKeys", authData, func(req *http.Request, device *authtypes.Device) util.JSONResponse {
+ return QueryKeys(req)
+ }),
+ ).Methods(http.MethodPost, http.MethodOptions)
+}