Operate on Encrypted Scalar from two different clients

I saw a similar question about “EncryptedScalar from client and ClearScalar from server” below. The answer in that thread was that the feature would be in upcoming release. But my question is slightly different so thought I would ask.

I would like to have two different clients encrypt scalars and be able to have the server perform a simple circuit on them [(a+b)//2]. But ‘a’ comes from client 1 and ‘b’ comes from client 2. Is there a way to do that with current concrete? It appears that PublicArguments need to be from same client right now from what I can tell. Or would that also be an upcoming release? Thank you so much in advance.


Hi @ronhume,

Splitting PublicArguments into separate objects is a feature that is being worked on as we speak, so it should arrive in the near feature.

That being said, in order to perform (a + b) // 2, client 1 and client 2 should have the same keys for the computation to make sense. This is doable with the explicit key management API, which will be available in the next release.

See concrete/keys.py at main · zama-ai/concrete · GitHub and concrete/test_keys.py at main · zama-ai/concrete · GitHub for the usage for now. It’ll have its own documentation page before release!

Let us know if you have more questions :slight_smile:

Thank you so much. That is exactly what I wanted to know.

1 Like