flwr-nightly 1.9.0.dev20240502__py3-none-any.whl → 1.9.0.dev20240503__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of flwr-nightly might be problematic. Click here for more details.

flwr/server/app.py CHANGED
@@ -43,6 +43,7 @@ from flwr.common.constant import (
43
43
  from flwr.common.exit_handlers import register_exit_handlers
44
44
  from flwr.common.logger import log
45
45
  from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
46
+ private_key_to_bytes,
46
47
  public_key_to_bytes,
47
48
  ssh_types_to_elliptic_curve,
48
49
  )
@@ -374,13 +375,18 @@ def run_superlink() -> None:
374
375
  server_private_key,
375
376
  server_public_key,
376
377
  ) = maybe_keys
377
- interceptors = [
378
- AuthenticateServerInterceptor(
379
- client_public_keys,
380
- server_private_key,
381
- server_public_key,
382
- )
383
- ]
378
+ state = state_factory.state()
379
+ state.store_client_public_keys(client_public_keys)
380
+ state.store_server_private_public_key(
381
+ private_key_to_bytes(server_private_key),
382
+ public_key_to_bytes(server_public_key),
383
+ )
384
+ log(
385
+ INFO,
386
+ "Client authentication enabled with %d known public keys",
387
+ len(client_public_keys),
388
+ )
389
+ interceptors = [AuthenticateServerInterceptor(state)]
384
390
 
385
391
  fleet_server = _run_fleet_api_grpc_rere(
386
392
  address=address,
@@ -16,17 +16,16 @@
16
16
 
17
17
 
18
18
  import base64
19
- from logging import INFO
20
- from typing import Any, Callable, Sequence, Set, Tuple, Union
19
+ from logging import WARNING
20
+ from typing import Any, Callable, Sequence, Tuple, Union
21
21
 
22
22
  import grpc
23
- from cryptography.hazmat.primitives.asymmetric import ec
24
23
 
25
24
  from flwr.common.logger import log
26
25
  from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
26
+ bytes_to_private_key,
27
27
  bytes_to_public_key,
28
28
  generate_shared_key,
29
- public_key_to_bytes,
30
29
  verify_hmac,
31
30
  )
32
31
  from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
@@ -43,6 +42,7 @@ from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
43
42
  PushTaskResRequest,
44
43
  PushTaskResResponse,
45
44
  )
45
+ from flwr.server.superlink.state import State
46
46
 
47
47
  _PUBLIC_KEY_HEADER = "public-key"
48
48
  _AUTH_TOKEN_HEADER = "auth-token"
@@ -79,22 +79,21 @@ def _get_value_from_tuples(
79
79
  class AuthenticateServerInterceptor(grpc.ServerInterceptor): # type: ignore
80
80
  """Server interceptor for client authentication."""
81
81
 
82
- def __init__(
83
- self,
84
- client_public_keys: Set[bytes],
85
- private_key: ec.EllipticCurvePrivateKey,
86
- public_key: ec.EllipticCurvePublicKey,
87
- ):
88
- self.server_private_key = private_key
89
- self.client_public_keys = client_public_keys
90
- self.encoded_server_public_key = base64.urlsafe_b64encode(
91
- public_key_to_bytes(public_key)
92
- )
93
- log(
94
- INFO,
95
- "Client authentication enabled with %d known public keys",
96
- len(client_public_keys),
97
- )
82
+ def __init__(self, state: State):
83
+ self.state = state
84
+
85
+ self.client_public_keys = state.get_client_public_keys()
86
+ if len(self.client_public_keys) == 0:
87
+ log(WARNING, "Authentication enabled, but no known public keys configured")
88
+
89
+ private_key = self.state.get_server_private_key()
90
+ public_key = self.state.get_server_public_key()
91
+
92
+ if private_key is None or public_key is None:
93
+ raise ValueError("Error loading authentication keys")
94
+
95
+ self.server_private_key = bytes_to_private_key(private_key)
96
+ self.encoded_server_public_key = base64.urlsafe_b64encode(public_key)
98
97
 
99
98
  def intercept_service(
100
99
  self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.9.0.dev20240502
3
+ Version: 1.9.0.dev20240503
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -126,7 +126,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
126
126
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
127
127
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
128
  flwr/server/__init__.py,sha256=dNLbXIERZ6X9aA_Bit3R9AARwcaZZzEfDuFmEx8VVOE,1785
129
- flwr/server/app.py,sha256=W5AzN9Gg3nQVnekXgCOzpN3dlpP3T-oh-N2ugdfuF7o,28282
129
+ flwr/server/app.py,sha256=RUSgmhMm-U5FVZo3jk59t4o6v0JU-Y8avs_yVDHKWJM,28600
130
130
  flwr/server/client_manager.py,sha256=T8UDSRJBVD3fyIDI7NTAA-NA7GPrMNNgH2OAF54RRxE,6127
131
131
  flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
132
132
  flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
@@ -179,7 +179,7 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=kuD7R1yB1Ite0s
179
179
  flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=_zWknjP7CRjwLDvofzmv1QoSI8Qq1cZC5nNw9nkSS7I,11932
180
180
  flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=bEJOMWbSlqkw-y5ZHtEXczhoSlAxErcRYffmTMQAV8M,758
181
181
  flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=YGn1IPpuX-6NDgaG1UbyREbI9iAyKDimZuNeWxbG6s0,3387
182
- flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=3EuoVOb5pXrN52XlDGjEfJdXYmcfFunZeYYMlDlu7ug,5902
182
+ flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=5PpqauKY1SzTtR9Nj7R1L_gYG6xgWmEAXCpNrj3YeEg,5994
183
183
  flwr/server/superlink/fleet/message_handler/__init__.py,sha256=hEY0l61ojH8Iz30_K1btm1HJ6J49iZJSFUsVYqUTw3A,731
184
184
  flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=lG3BkiONcikDVowK0An06V7p2SNkwGbWE5hfN2xlsZw,3622
185
185
  flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=VKDvDq5H8koOUztpmQacVzGJXPLEEkL1Vmolxt3mvnY,735
@@ -212,8 +212,8 @@ flwr/simulation/ray_transport/ray_actor.py,sha256=_wv2eP7qxkCZ-6rMyYWnjLrGPBZRxj
212
212
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=oDu4sEPIOu39vrNi-fqDAe10xtNUXMO49bM2RWfRcyw,6738
213
213
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
214
214
  flwr/simulation/run_simulation.py,sha256=LszcnkCLM9YE-kgezB_H7b_NdDrK_Q0yN24mqYtZdfI,15957
215
- flwr_nightly-1.9.0.dev20240502.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
216
- flwr_nightly-1.9.0.dev20240502.dist-info/METADATA,sha256=iVRawILxl5cTNXl8O6imsEOvK_dUuFjLkjYk-1nJoo8,15303
217
- flwr_nightly-1.9.0.dev20240502.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
218
- flwr_nightly-1.9.0.dev20240502.dist-info/entry_points.txt,sha256=8JJPfpqMnXz9c5V_FSt07Xwd-wCWbAO3MFUDXQ5ZGsI,378
219
- flwr_nightly-1.9.0.dev20240502.dist-info/RECORD,,
215
+ flwr_nightly-1.9.0.dev20240503.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
216
+ flwr_nightly-1.9.0.dev20240503.dist-info/METADATA,sha256=S9BjsRoM_sgU4CFVZDPoxnKocULT0POUWulJBBcyfuY,15303
217
+ flwr_nightly-1.9.0.dev20240503.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
218
+ flwr_nightly-1.9.0.dev20240503.dist-info/entry_points.txt,sha256=8JJPfpqMnXz9c5V_FSt07Xwd-wCWbAO3MFUDXQ5ZGsI,378
219
+ flwr_nightly-1.9.0.dev20240503.dist-info/RECORD,,