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 + } +}