Package org.apache.sysds.runtime.controlprogram.paramserv.homomorphicEncryption

## Class SEALServer

- java.lang.Object
- - org.apache.sysds.runtime.controlprogram.paramserv.homomorphicEncryption.SEALServer

-     public class SEALServer
      extends Object

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SEALServer()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `CiphertextMatrix` | `accumulateCiphertexts​(CiphertextMatrix[] ciphertexts)` | accumulates the given ciphertext blocks into a sum ciphertext and returns it
    `PublicKey` | `aggregatePartialPublicKeys​(PublicKey[] partial_public_keys)` | accumulates the given partial public keys into a public key, stores it in ctx and returns it
    `MatrixObject` | `average​(CiphertextMatrix encrypted_sum, PlaintextMatrix[] partial_plaintexts)` | averages the partial decryptions
    `byte[]` | `generateA()` | this generates the a constant.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SEALServer

          public SEALServer()

  - ### Method Detail

    - #### generateA

          public byte[] generateA()

      this generates the a constant. in a future version we want to generate this together with the clients to prevent misuse
      Returns:
        serialized a constant

    - #### aggregatePartialPublicKeys

          public PublicKey aggregatePartialPublicKeys​(PublicKey[] partial_public_keys)

      accumulates the given partial public keys into a public key, stores it in ctx and returns it
      Parameters:
        `partial_public_keys` - an array of partial public keys generated with SEALServer::generatePartialPublicKey
      Returns:
        the aggregated public key

    - #### accumulateCiphertexts

          public CiphertextMatrix accumulateCiphertexts​(CiphertextMatrix[] ciphertexts)

      accumulates the given ciphertext blocks into a sum ciphertext and returns it
      Parameters:
        `ciphertexts` - ciphertexts encrypted with the partial public keys
      Returns:
        the accumulated ciphertext (which is the homomorphic sum of ciphertexts)

    - #### average

          public MatrixObject average​(CiphertextMatrix encrypted_sum,
                                      PlaintextMatrix[] partial_plaintexts)

      averages the partial decryptions
      Parameters:
        `encrypted_sum` - is the result of accumulateCiphertexts()
        `partial_plaintexts` - is the result of SEALServer::partiallyDecrypt of each ciphertext fed into accumulateCiphertexts
      Returns:
        the unencrypted, element-wise average of the original matrices