Skip to main content

Introduction

This package is a Python library for calculating the Tate bilinear pairing, especially on the super-singular elliptic curve $E:y^2=x^3-x+1$ in affine coordinates over the Galois Field $\text{GF}(3^m)$. The largest order of $G_1$ supported is 911 bits.

It also provides functions for:

  • Point addition on the elliptic curve group
  • Scalar multiplication ($k \cdot P$).

The Tate pairing implementation follows the paper by Beuchat et al. [3], while the elliptic curve group operations follow Kerins et al. [2].

This package is in Pure Python., working with Python 2.7 and 3.2+.

Performance: One Tate bilinear pairing takes approximately 3.26 seconds on an Intel Core2 L7500 (1.60 GHz) when $|G_1| = 151$ bits.


What is Tate bilinear pairing?

The Tate bilinear pairing is a map that takes two points on an elliptic curve and outputs a nonzero element in the extension field $\text{GF}(3^{6m})$.

The most efficient method for computing it in characteristic three is the $\eta_T$ pairing, introduced by Barreto et al.

For more information, see references [1], [2], [3], and [4].


Usage

1. Tate Bilinear Pairing

from tate_bilinear_pairing import eta

# Initialize for 151-bit order of G1
eta.init(151)

import random
a = random.randint(0, 1000)
b = random.randint(0, 1000)

from tate_bilinear_pairing import ecc
g = ecc.gen()

inf1, x1, y1 = ecc.scalar_mult(a, g)
inf2, x2, y2 = ecc.scalar_mult(b, g)

# Compute Tate pairing
t = eta.pairing(x1, y1, x2, y2)

2. Point Addition

# p1 = [inf1, x1, y1]
# p2 = [inf2, x2, y2]
p3 = ecc.add(p1, p2)

3. Scalar Multiplication

k = random.randint(0, 1000)
p3 = ecc.scalar_mult(k, p1)

References

[1] I. Duursma, H.S. Lee. Tate pairing implementation for hyper-elliptic curves $y^2=x^p-x+d$. Advances in Cryptology - Proc. ASIACRYPT ’03, pp. 111-123, 2003.

[2] T. Kerins, W.P. Marnane, E.M. Popovici, and P.S.L.M. Barreto. Efficient hardware for the Tate pairing calculation in characteristic three. Cryptographic Hardware and Embedded Systems - Proc. CHES ’05, pp. 412-426, 2005.

[3] J. Beuchat, N. Brisebarre, J. Detrey, E. Okamoto, M. Shirase, and T. Takagi. Algorithms and Arithmetic Operators for Computing the $\eta_T$ Pairing in Characteristic Three. IEEE Transactions on Computers, Special Section on Special-Purpose Hardware for Cryptography and Cryptanalysis, vol. 57 no. 11 pp. 1454-1468, 2008.

[4] P.S.L.M. Barreto, S.D. Galbraith, C. O hEigeartaigh, and M. Scott, Efficient Pairing Computation on Supersingular Abelian Varieties. Designs, Codes and Cryptography, vol. 42, no. 3, pp. 239-271, Mar. 2007.

Metadata

Release files for tate-bilinear-pairing 1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tate-bilinear-pairing 1.0
File Size Uploaded Provenance
tate_bilinear_pairing-1.0.tar.gz 26.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for tate-bilinear-pairing 1.0
File Interpreter ABI Platform
tate_bilinear_pairing-1.0-py3-none-any.whl Python 3 none any Details

Total release size: 51.3 kB

Release files / tate_bilinear_pairing-1.0.tar.gz

Download URL tate_bilinear_pairing-1.0.tar.gz
Size 26.3 kB
Tags Source
SHA-256 checksum
How to use checksums
745d8ff1e64f8b23ecfc79eab281a14e5bf0bc36c06d4cc493bf8b24f61f9b80
BLAKE2b-256 checksum
How to use checksums
144de5ae7940f157f61fc1d982e8a4e21e1806a61b335747723060da6ced0d63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release files / tate_bilinear_pairing-1.0-py3-none-any.whl

Download URL tate_bilinear_pairing-1.0-py3-none-any.whl
Size 25.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
56d2ddb0113c12f30d7e1d3d7d7c6f63c4dcd96b2df397bb5d4179634b932deb
BLAKE2b-256 checksum
How to use checksums
30c7dfe058a0e822c43ef953d1515cb9775c9a3683ff22874814fb5e393053b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Security for tate-bilinear-pairing 1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page