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

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 Details

### SEALServer

public SEALServer()

## Method Details

### 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