Base Classes¶
Abstract base classes shared by all IPFE schemes.
- class pyfe4ai.schemes.ipfe.ParameterCacheMixin[source]¶
Bases:
objectMixin that provides JSON-based parameter caching with validation.
Subclasses must set
_scheme_type(a CryptoCONST string) and implement_param_verification(),_apply_parameters(), and_generate_and_save().
- class pyfe4ai.schemes.ipfe.IPFEAbsKeyGenerator(config, **kwargs)[source]¶
Bases:
ABCAbstract base for all inner-product FE key generators.
Subclasses implement
setup()(generate keys),get_public_parameters(),get_private_keys(), andget_decryption_keys().- Parameters:
config (
dict) – Scheme configuration dict. Expected keys vary by scheme; common keys includesec_param,eta,n,s,lst_nid.
- __init__(config, **kwargs)[source]¶
Perform the __init__ operation.
- Parameters:
config (
dict) – Scheme configuration dict.- Return type:
None
- abstractmethod get_private_keys(nid, **kwargs)[source]¶
Return the private (encryption) keys for client nid.
- abstractmethod get_decryption_keys(sid, **kwargs)[source]¶
Derive a functional decryption key for session sid.
- Parameters:
sid (
str) – A session identifier.**kwargs – Must include
credentialswith afusion_weightentry.
- Return type:
- Returns:
A dict containing the decryption key material.
- Raises:
FEKeyError – If credentials are missing.
FEValidationError – If fusion weights are invalid.
- class pyfe4ai.schemes.ipfe.IPFEAbsCrypto(config, **kwargs)[source]¶
Bases:
ABCAbstract base for all inner-product FE crypto operations.
Subclasses implement
encrypt_lst_ndarray(),compute_lst_ndarray_ct(), anddecrypt_lst_ndarray_ct().- Parameters:
config (
dict) – Runtime configuration dict containing at leastkeys(a dict withpp,sk, and/ordksub-dicts) and optionallyid,type, andprecision.
- __init__(config, **kwargs)[source]¶
Perform the __init__ operation.
- Parameters:
config (
dict) – Scheme configuration dict.- Return type:
None
- abstractmethod encrypt_lst_ndarray(lst_ndarray, **kwargs)[source]¶
Encrypt a list of ndarray-like plaintexts.
DDH Base Classes¶
Base classes for DDH-family key generators.
Provides shared parameter caching logic (group generation, verification, serialisation) so that concrete SIFE / MIFE / MCFE DDH schemes only need to declare which configuration fields they use.
- class pyfe4ai.schemes.ddh_base.DDHKeyGeneratorBase(config, **kwargs)[source]¶
Bases:
IPFEAbsKeyGenerator,ParameterCacheMixinBase for standard DDH key generators sharing a (p, q, r, g) group.
Subclasses must set
_scheme_typeand_verify_keys, and may override_extra_param_fieldsto persist additional configuration.- Parameters:
config (
dict)
- class pyfe4ai.schemes.ddh_base.DamgardDDHKeyGeneratorBase(config, **kwargs)[source]¶
Bases:
IPFEAbsKeyGenerator,ParameterCacheMixinBase for Damgard DDH key generators sharing a (p, q, g, h) group.
Subclasses must set
_scheme_typeand_verify_keys, implement_validate_bounds, and may override_extra_param_fields.- Parameters:
config (
dict)
LWE Base Classes¶
Base classes for LWE-family key generators and crypto operations.
Provides shared parameter caching logic (LWE parameter derivation, matrix A sampling, serialisation) so that concrete SIFE / MIFE / MCFE LWE schemes only need to declare which configuration fields they use.
- class pyfe4ai.schemes.lwe_base.LWEKeyGeneratorBase(config, **kwargs)[source]¶
Bases:
IPFEAbsKeyGenerator,ParameterCacheMixinBase for LWE key generators sharing (p, q, m, sigma_q, l_sigma, A).
Subclasses must set
_scheme_typeand_verify_keys, and may override_extra_param_fieldsand_extra_verifyto persist and verify additional configuration.- Parameters:
config (
dict)
- class pyfe4ai.schemes.lwe_base.LWECryptoBase(config, **kwargs)[source]¶
Bases:
IPFEAbsCryptoBase for LWE crypto operations sharing encrypt/decrypt core logic.
Subclasses may override
_pre_encrypt()to inject label masking.- Parameters:
config (
dict)
Paillier Base Classes¶
Base classes for Paillier-family key generators and crypto operations.
Provides shared Paillier group generation (p, q, n_mod, n_square, g), parameter caching, bound validation, and encrypt/decrypt core logic so that concrete SIFE / MIFE / MCFE Paillier schemes avoid code duplication.
- class pyfe4ai.schemes.paillier_base.PaillierKeyGeneratorBase(config, **kwargs)[source]¶
Bases:
IPFEAbsKeyGenerator,ParameterCacheMixinBase for Paillier key generators sharing (p, q, n_mod, n_square, g).
Subclasses must set
_scheme_typeand_verify_keys, and may override_extra_param_fields,_extra_verify, and_validate_boundsto persist/verify additional configuration.- Parameters:
config (
dict)
- class pyfe4ai.schemes.paillier_base.PaillierCryptoBase(config, **kwargs)[source]¶
Bases:
IPFEAbsCryptoBase for Paillier crypto operations sharing encrypt/decrypt core logic.
- Parameters:
config (
dict)
Ring-LWE Base Classes¶
Shared base classes for Ring-LWE-family inner-product FE schemes.
Extracts duplicated parameter handling and crypto initialisation that is identical across SIFE Ring-LWE, MIFE Ring-LWE and MCFE Ring-LWE.
- class pyfe4ai.schemes.ring_lwe_base.RingLWEKeyGeneratorBase(config, **kwargs)[source]¶
Bases:
IPFEAbsKeyGenerator,ParameterCacheMixinCommon key-generator base for Ring-LWE schemes.
Subclasses MUST set:
_scheme_type–CryptoCONST.TYPE_*_verify_keys– tuple of config attribute names checked by_param_verification(e.g.("sec_param", "eta", "bound_x", "bound_y"))
Subclasses MAY override:
_extra_verify(param)– additional param-cache checks (default True)_extra_param_fields()– extra fields for the param JSON (default {})
- Parameters:
config (
dict)
- class pyfe4ai.schemes.ring_lwe_base.RingLWECryptoBase(config, **kwargs)[source]¶
Bases:
IPFEAbsCryptoCommon crypto base for Ring-LWE schemes.
Provides the shared
__init__that loadspp,Aandsk.- Parameters:
config (
dict)
Threshold Utilities¶
Shared threshold secret-sharing utilities for threshold FE schemes.
Provides polynomial evaluation, Shamir secret sharing, Lagrange interpolation and modular centering used identically by both the LWE and Ring-LWE threshold variants.
- pyfe4ai.schemes.threshold_utils.eval_poly(coeffs, x_value, modulus)[source]¶
Evaluate a polynomial at x_value modulo modulus.
Create Shamir secret shares of secret.