3.0.ipv8.attestation.wallet.primitives.boneh ============================================ .. py:module:: 3.0.ipv8.attestation.wallet.primitives.boneh .. autoapi-nested-parse:: Implementation of the Boneh 2-DNF scheme ("Evaluating 2-DNF Formulas on Ciphertexts" by Boneh et al.). Functions --------- .. autoapisummary:: 3.0.ipv8.attestation.wallet.primitives.boneh.generate_prime 3.0.ipv8.attestation.wallet.primitives.boneh.bilinear_group 3.0.ipv8.attestation.wallet.primitives.boneh.get_random_exponentiation 3.0.ipv8.attestation.wallet.primitives.boneh.get_random_base 3.0.ipv8.attestation.wallet.primitives.boneh.is_good_wp 3.0.ipv8.attestation.wallet.primitives.boneh.get_good_wp 3.0.ipv8.attestation.wallet.primitives.boneh.generate_primes 3.0.ipv8.attestation.wallet.primitives.boneh.generate_keypair 3.0.ipv8.attestation.wallet.primitives.boneh.encode 3.0.ipv8.attestation.wallet.primitives.boneh.decode Module Contents --------------- .. py:function:: generate_prime(n: int) -> int Generate p = l * n - 1 such that: - p is "prime" - p mod 3 = 2 - l is an as small as possible positive integer. .. py:function:: bilinear_group(n: int, p: int, g1x: int, g1y: int, g2x: int, g2y: int) -> 3.0.ipv8.attestation.wallet.primitives.value.FP2Value Generate a bilinear group for two generators. .. py:function:: get_random_exponentiation(p: 3.0.ipv8.attestation.wallet.primitives.value.FP2Value, n: int) -> 3.0.ipv8.attestation.wallet.primitives.value.FP2Value Create a random exponentiation of p in message space n. .. py:function:: get_random_base(n: int) -> tuple[int, int] Create a generator for the EC. .. py:function:: is_good_wp(n: int, wp: 3.0.ipv8.attestation.wallet.primitives.value.FP2Value) -> bool A good pairing is not 0 and has order n. .. py:function:: get_good_wp(n: int, p: int | None = None) -> tuple[int, 3.0.ipv8.attestation.wallet.primitives.value.FP2Value] Instead of inspecting torsion points and checking for co-primality: just brute force generate pairings until we get a good one. :return: modulus, weilparing. .. py:function:: generate_primes(key_size: int = 128) -> tuple[int, int] Generate some primes. Key size in bits. .. py:function:: generate_keypair(key_size: int = 32) -> tuple[3.0.ipv8.attestation.wallet.primitives.structs.BonehPublicKey, 3.0.ipv8.attestation.wallet.primitives.structs.BonehPrivateKey] Generate a keypair for a certain prime bit space. .. py:function:: encode(pubkey: 3.0.ipv8.attestation.wallet.primitives.structs.BonehPublicKey, m: int) -> 3.0.ipv8.attestation.wallet.primitives.value.FP2Value Encode a message m given a public key. .. py:function:: decode(privkey: 3.0.ipv8.attestation.wallet.primitives.structs.BonehPrivateKey, msgspace: list[int], c: 3.0.ipv8.attestation.wallet.primitives.value.FP2Value) -> int | None Decode a ciphertext c given a private key and the possible source messages.