From a2cf1d6b7b2b30262a1d86e39c77a7cc8c9ccae7 Mon Sep 17 00:00:00 2001 From: cheddar Date: Thu, 20 Feb 2025 23:00:04 -0500 Subject: [PATCH] Add some registration validation --- server/server.go | 6 ++++++ server/validation.go | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 server/validation.go diff --git a/server/server.go b/server/server.go index 3e5eda6..e568598 100644 --- a/server/server.go +++ b/server/server.go @@ -90,6 +90,12 @@ func getRegistrationHandler(keyDir keydirectory.RegistrationDirectory) http.Hand return } + if !isValidKeyType(key) { + fmt.Println("Attempted to register invalid key type") + http.Error(w, "Invalid key type", 400) + return + } + fmt.Printf("Registering key for %s\n", request.UserId) keyId, err := keyDir.RegisterKey(key, request.UserId) diff --git a/server/validation.go b/server/validation.go new file mode 100644 index 0000000..0601411 --- /dev/null +++ b/server/validation.go @@ -0,0 +1,17 @@ +package server + +import ( + "crypto" + "crypto/ecdsa" + "crypto/ed25519" + "crypto/rsa" +) + +func isValidKeyType(key crypto.PublicKey) bool { + switch key.(type) { + case ed25519.PublicKey, *rsa.PublicKey, *ecdsa.PublicKey: + return true + default: + return false + } +}