latest.ipv8.attestation.wallet.pengbaorange.algorithm

Module Contents

Classes

PengBaoAttestation

An attestation for a Peng Bao range proof.

PengBaoRangeAlgorithm

IPv8 wrapper around Peng and Bao's efficient range proof scheme.

class latest.ipv8.attestation.wallet.pengbaorange.algorithm.PengBaoAttestation(publicdata: PengBaoPublicData, privatedata: PengBaoCommitmentPrivate | None, id_format: str | None = None)

Bases: latest.ipv8.attestation.identity_formats.Attestation

An attestation for a Peng Bao range proof.

serialize() bytes

Serialize this Attestation to a string.

Returns:

the serialized form of this attestation

Return type:

str

serialize_private(PK: latest.ipv8.attestation.wallet.primitives.structs.BonehPublicKey) bytes

Serialize this Attestation to a string, include shared secrets (not to be published!).

Parameters:

PK – the public key to encode for

Returns:

the serialized form of this attestation

Return type:

str

classmethod unserialize(s: bytes, id_format: str | None = None) PengBaoAttestation

Given a string, create an Attestation object.

Parameters:
  • s (str) – the string to unserialize

  • id_format (str) – the identity format

Returns:

the attestation object

Return type:

Attestation

classmethod unserialize_private(SK: latest.ipv8.attestation.wallet.primitives.structs.BonehPrivateKey, s: bytes, id_format: str | None = None) PengBaoAttestation

Given a string, create an Attestation object. The input contains shared secrets not to be published.

Parameters:
  • SK – the secret key to decode with

  • s (str) – the string to unserialize

  • id_format (str) – the identity format

Returns:

the attestation object

Return type:

Attestation

class latest.ipv8.attestation.wallet.pengbaorange.algorithm.PengBaoRangeAlgorithm(id_format: str, formats: dict[str, dict[str, Any]])

Bases: latest.ipv8.attestation.identity_formats.IdentityAlgorithm

IPv8 wrapper around Peng and Bao’s efficient range proof scheme.

generate_secret_key() latest.ipv8.attestation.wallet.primitives.structs.BonehPrivateKey

Generate a secret key.

Returns:

the secret key

load_secret_key(serialized: bytes) latest.ipv8.attestation.wallet.primitives.structs.BonehPrivateKey | None

Unserialize a secret key from the key material.

Parameters:

serialized – the string of the private key

Returns:

the private key

load_public_key(serialized: bytes) latest.ipv8.attestation.wallet.primitives.structs.BonehPublicKey | None

Unserialize a public key from the key material.

Parameters:

serialized – the string of the public key

Returns:

the public key

get_attestation_class() type[latest.ipv8.attestation.wallet.pengbaorange.structs.PengBaoAttestation]

Return the Attestation (sub)class for serialization.

Returns:

the Attestation object

Return type:

PengBaoAttestation

attest(PK: latest.ipv8.attestation.wallet.primitives.structs.BonehPublicKey, value: bytes) bytes

Attest to a value for a certain public key.

Parameters:
  • PK (BonehPublicKey) – the public key of the party we are attesting for

  • value (str) – the value we are attesting to

Returns:

the attestation string

Return type:

str

certainty(value: bytes, aggregate: dict) float

The current certainty of the aggregate object representing a certain value.

1 is in range, 0 is out of range.

Parameters:
  • value (str) – the value to match to

  • aggregate (dict) – the aggregate object

Returns:

the matching factor [0.0-1.0]

Return type:

float

create_challenges(PK: latest.ipv8.attestation.wallet.primitives.structs.BonehPublicKey, attestation: latest.ipv8.attestation.wallet.pengbaorange.structs.PengBaoAttestation) list[bytes]

Create challenges for a certain counterparty.

Parameters:
Returns:

the challenges to send

Return type:

[str]

create_challenge_response(SK: latest.ipv8.attestation.wallet.primitives.structs.BonehPrivateKey, attestation: latest.ipv8.attestation.wallet.pengbaorange.structs.PengBaoAttestation, challenge: bytes) bytes

Create an honest response to a challenge of our value.

Parameters:
  • SK (BonehPrivateKey) – our secret key

  • attestation (Attestation) – the attestation information

  • challenge – the challenge to respond to

Returns:

the response to a challenge

Return type:

str

create_certainty_aggregate(attestation: latest.ipv8.attestation.wallet.pengbaorange.structs.PengBaoAttestation | None) dict

Create an empty aggregate object, for matching to values.

Returns:

the aggregate object

Return type:

dict

abstract create_honesty_challenge(PK: latest.ipv8.attestation.wallet.primitives.structs.BonehPublicKey, value: int) bytes

Use a known value to check for honesty.

Parameters:
  • PK (BonehPublicKey) – the public key of the party we are challenging

  • value (str) – the value to use

Returns:

the challenge to send

Return type:

str

abstract process_honesty_challenge(value: int, response: bytes) bool

Given a response, check if it matches the expected value.

Parameters:
  • value (int) – the expected value

  • response (str) – the returned response

Returns:

if the value matches the response

Return type:

bool

process_challenge_response(aggregate: dict, challenge: bytes, response: bytes) dict

Given a response, update the current aggregate.

Parameters:
  • aggregate (dict) – the aggregate object

  • challenge (str) – the sent challenge

  • response (str) – the response to introduce

Returns:

the new aggregate

Return type:

dict

abstract import_blob(blob: bytes) tuple[bytes, latest.ipv8.attestation.wallet.database.SecretKeyProtocol]

Not supported.