From ea80dbb49601eb6a66627434f092a8ba0c99ae7b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 11 Aug 2020 12:57:34 +0000 Subject: [PATCH] Upload multiple keys --- daemon.py | 49 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/daemon.py b/daemon.py index b40fafb51..fdc7c2edc 100644 --- a/daemon.py +++ b/daemon.py @@ -5824,20 +5824,43 @@ class PubServer(BaseHTTPRequestHandler): if not deviceKeys: self._400() return - if not E2EEvalidDevice(deviceKeys): - self._400() + if isinstance(deviceKeys, list): + keyCtr = 0 + for devKey in deviceKeys: + if not E2EEvalidDevice(devKey): + continue + E2EEaddDevice(self.server.baseDir, + self.authorizedNickname, + self.server.domain, + devKey['deviceId'], + devKey['name'], + devKey['claim'], + devKey['fingerprintKey']['publicKeyBase64'], + devKey['identityKey']['publicKeyBase64'], + devKey['fingerprintKey']['type'], + devKey['identityKey']['type']) + keyCtr += 1 + if keyCtr > 10: + break + self._200() return - E2EEaddDevice(self.server.baseDir, - self.authorizedNickname, - self.server.domain, - deviceKeys['deviceId'], - deviceKeys['name'], - deviceKeys['claim'], - deviceKeys['fingerprintKey']['publicKeyBase64'], - deviceKeys['identityKey']['publicKeyBase64'], - deviceKeys['fingerprintKey']['type'], - deviceKeys['identityKey']['type']) - self._200() + elif isinstance(deviceKeys, dict): + if not E2EEvalidDevice(deviceKeys): + self._400() + return + E2EEaddDevice(self.server.baseDir, + self.authorizedNickname, + self.server.domain, + deviceKeys['deviceId'], + deviceKeys['name'], + deviceKeys['claim'], + deviceKeys['fingerprintKey']['publicKeyBase64'], + deviceKeys['identityKey']['publicKeyBase64'], + deviceKeys['fingerprintKey']['type'], + deviceKeys['identityKey']['type']) + self._200() + return + self._400() elif path.startswith('/api/v1/crypto/keys/query'): # TODO self._200()