File: test_conversion_uniqueness.py

package info (click to toggle)
python-xeddsa 1.1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 204 kB
  • sloc: python: 421; makefile: 15; ansic: 15
file content (45 lines) | stat: -rw-r--r-- 1,660 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import secrets

import xeddsa


__all__ = [
    "test_conversion_uniqueness"
]

NUM_KEYS = 8192


def test_conversion_uniqueness() -> None:
    """
    Test conversion uniqueness between public key formats.
    """

    # Test on a set of different keys
    for _ in range(NUM_KEYS):
        # Generate a Curve25519 key pair (the private key is not used).
        curve_priv = secrets.token_bytes(32)
        curve_pub_original = xeddsa.priv_to_curve25519_pub(curve_priv)

        # Convert the Curve25519 public key to an Ed25519 public key
        ed_pub_converted = xeddsa.curve25519_pub_to_ed25519_pub(curve_pub_original, False)

        # Convert the Ed25519 public key back into a Curve25519 public key
        curve_pub_converted = xeddsa.ed25519_pub_to_curve25519_pub(ed_pub_converted)

        # Check whether the converted Curve25519 public key is equal to the original
        assert curve_pub_original == curve_pub_converted

        # Generate an Ed25519 key pair (the private key is not used).
        ed_priv = secrets.token_bytes(32)
        ed_pub_original = xeddsa.priv_to_ed25519_pub(ed_priv)

        # Convert the Ed25519 public key to a Curve25519 public key
        curve_pub_converted = xeddsa.ed25519_pub_to_curve25519_pub(ed_pub_original)

        # Convert the Curve25519 public key back into an Ed25519 public key. Set the sign accordingly.
        original_sign = bool(ed_pub_original[31] & 0x80)
        ed_pub_converted = xeddsa.curve25519_pub_to_ed25519_pub(curve_pub_converted, original_sign)

        # Check whether the converted Ed25519 public key is equal to the original
        assert ed_pub_original == ed_pub_converted