mirror of
https://github.com/luxfi/lattice.git
synced 2026-09-24 00:25:44 +00:00
- Update module path to github.com/luxfi/lattice/v7 - Add GPU acceleration with Metal (macOS) and CUDA backends - Enhance threshold FHE operations - Revert to vanilla Apache 2.0 license (remove tfhe) - Update Go version to 1.25.5 - Merge upstream lattigo improvements
29 lines
1.3 KiB
Go
29 lines
1.3 KiB
Go
// Package schemes contains the implemented cryptosystems.
|
|
package schemes
|
|
|
|
import "github.com/luxfi/lattice/v7/core/rlwe"
|
|
|
|
// Encoder is a scheme-agnostic encoding interface.
|
|
type Encoder interface {
|
|
Encode(values interface{}, pt *rlwe.Plaintext) error
|
|
Decode(pt *rlwe.Plaintext, values interface{}) error
|
|
Embed(values interface{}, metadata *rlwe.MetaData, polyOut interface{}) error
|
|
}
|
|
|
|
// Evaluator is a scheme-agnostic evaluator interface.
|
|
type Evaluator interface {
|
|
rlwe.ParameterProvider
|
|
rlwe.EvaluatorProvider
|
|
Add(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error)
|
|
AddNew(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error)
|
|
Sub(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error)
|
|
SubNew(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error)
|
|
Mul(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error)
|
|
MulNew(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error)
|
|
MulRelin(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error)
|
|
MulRelinNew(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error)
|
|
MulThenAdd(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error)
|
|
Relinearize(op0, op1 *rlwe.Ciphertext) (err error)
|
|
Rescale(op0, op1 *rlwe.Ciphertext) (err error)
|
|
}
|