Skip to main content

Fast elliptic curve digital signatures

Project description

PyPI Documentation Status

About

This is a python package for doing fast elliptic curve cryptography, specifically digital signatures.

Security

There is no nonce reuse, no branching on secret material, and all points are validated before any operations are performed on them. Timing side challenges are mitigated via Montgomery point multiplication. Nonces are generated per RFC6979. The default curve used throughout the package is P256 which provides 128 bits of security. If you require a higher level of security you can specify the curve parameter in a method to use a curve over a bigger field e.g. P384. All that being said, crypto is tricky and I’m not beyond making mistakes. Please use a more established and reviewed library for security critical applications. Open an issue or email me if you see any security issue or risk with this library.

Python Versions Supported

The initial release of this package was targeted at python2.7. Earlier versions may work but have no guarantee of correctness or stability. As of release 1.2.1+ python3 is supported as well. Due to python2’s EOL on January 1st 2020 release 2.x of this package only supports python3.5+.

Operating Systems Supported

This package is targeted at the Linux and MacOS operating systems. Due to the the dependency on the GMP C library building this package on Windows is difficult and no official support or distributions are provided for Windows OSes. See issue11 for what users have done to get things building.

Supported Primitives

Curves over Prime Fields

Name

Class

Proposed By

P192 / secp192r1

fastecdsa.curve.P192

NIST / NSA

P224 / secp224r1

fastecdsa.curve.P224

NIST / NSA

P256 / secp256r1

fastecdsa.curve.P256

NIST / NSA

P384 / secp384r1

fastecdsa.curve.P384

NIST / NSA

P521 / secp521r1

fastecdsa.curve.P521

NIST / NSA

secp192k1

fastecdsa.curve.secp192k1

Certicom

secp224k1

fastecdsa.curve.secp224k1

Certicom

secp256k1 (bitcoin curve)

fastecdsa.curve.secp256k1

Certicom

brainpoolP160r1

fastecdsa.curve.brainpoolP160r1

BSI

brainpoolP192r1

fastecdsa.curve.brainpoolP192r1

BSI

brainpoolP224r1

fastecdsa.curve.brainpoolP224r1

BSI

brainpoolP256r1

fastecdsa.curve.brainpoolP256r1

BSI

brainpoolP320r1

fastecdsa.curve.brainpoolP320r1

BSI

brainpoolP384r1

fastecdsa.curve.brainpoolP384r1

BSI

brainpoolP512r1

fastecdsa.curve.brainpoolP512r1

BSI

Arbitrary Curves

As of version 1.5.1 construction of arbitrary curves in Weierstrass form (y^2 = x^3 + ax + b (mod p)) is supported. I advise against using custom curves for any security critical applications. It’s up to you to make sure that the parameters you pass here are correct, no validation of the base point is done, and in general no sanity checks are done. Use at your own risk.

from fastecdsa.curve import Curve
curve = Curve(
    name,  # (str): The name of the curve
    p,  # (long): The value of p in the curve equation.
    a,  # (long): The value of a in the curve equation.
    b,  # (long): The value of b in the curve equation.
    q,  # (long): The order of the base point of the curve.
    gx,  # (long): The x coordinate of the base point of the curve.
    gy,  # (long): The y coordinate of the base point of the curve.
    oid  # (str): The object identifier of the curve (optional).
)

Hash Functions

Any hash function in the hashlib module (md5, sha1, sha224, sha256, sha384, sha512) will work, as will any hash function that implements the same interface / core functionality as the those in hashlib. For instance, if you wish to use SHA3 as the hash function the pysha3 package will work with this library as long as it is at version >=1.0b1 (as previous versions didn’t work with the hmac module which is used in nonce generation). Note that sha3_224, sha3_256, sha3_384, sha3_512 are all in hashlib as of python3.6.

Performance

Curves over Prime Fields

Currently it does elliptic curve arithmetic significantly faster than the ecdsa package. You can see the times for 1,000 signature and verification operations over various curves below. These were run on an early 2014 MacBook Air with a 1.4 GHz Intel Core i5.

Curve

fastecdsa time

ecdsa time

Speedup

P192

3.62s

1m35.49s

~26x

P224

4.50s

2m13.42s

~29x

P256

6.15s

2m52.43s

~28x

P384

12.11s

6m21.01s

~31x

P521

22.21s

11m39.53s

~31x

secp256k1

5.92s

2m57.19s

~30x

Installing

You can use pip: $ pip install fastecdsa or clone the repo and use $ python setup.py install. Note that you need to have a C compiler. You also need to have GMP on your system as the underlying C code in this package includes the gmp.h header (and links against gmp via the -lgmp flag). You can install all dependencies as follows:

apt

$ sudo apt-get install python3-dev libgmp3-dev

brew

$ brew install gmp

yum

$ sudo yum install python-devel gmp-devel

Development

This package uses uv for package management. You can install it via pip install uv. First build the C extension modules

$ uv run python setup.py build_ext --inplace

To run the test suite use the following command

$ uv run pytest

Install pre-commit hooks to ensure type checking and autoformatting happens before you commit your code

$ uv run pre-commit install

To build the docs use the following command, which will create a docs/_build directory with the docs built as HTML files

$ cd docs
$ uv run make html

Publishing

Note that currently only the package owner is able to publish releases to PyPI. The following steps can still be used to generate source and wheel distributions, but note that the publish command will not work.

To build a release first install all supported versions of python into the environment (double check pyproject.toml for which python versions are supported)

$ uv python install 3.9 3.10 3.11 3.12 3.13

Then build a source distribution, followed by wheels for each supported python version

$ uv build --sdist
$ uv build --wheel -p 3.x  # do this for each supported python version

Then publish the source and wheels distributions to the test PyPI account.

$ uv publish --token {token} --url https://test.pypi.org/simple/

Benchmarking

If you’d like to benchmark performance on your machine you can do so using the command:

$ uv run benchmark

This will use the timeit module to benchmark 1000 signature and verification operations for each curve supported by this package. Alternatively, if you have not cloned the repo but have installed the package via e.g. pip you can use the following command:

$ python -m fastecdsa.benchmark

Usage

Generating Keys

You can use this package to generate keys if you like. Recall that private keys on elliptic curves are integers, and public keys are points i.e. integer pairs.

from fastecdsa import keys, curve

"""The reason there are two ways to generate a keypair is that generating the public key requires
a point multiplication, which can be expensive. That means sometimes you may want to delay
generating the public key until it is actually needed."""

# generate a keypair (i.e. both keys) for curve P256
priv_key, pub_key = keys.gen_keypair(curve.P256)

# generate a private key for curve P256
priv_key = keys.gen_private_key(curve.P256)

# get the public key corresponding to the private key we just generated
pub_key = keys.get_public_key(priv_key, curve.P256)

Signing and Verifying

Some basic usage is shown below:

from fastecdsa import curve, ecdsa, keys
from hashlib import sha384

m = "a message to sign via ECDSA"  # some message

''' use default curve and hash function (P256 and SHA2) '''
private_key = keys.gen_private_key(curve.P256)
public_key = keys.get_public_key(private_key, curve.P256)
# standard signature, returns two integers
r, s = ecdsa.sign(m, private_key)
# should return True as the signature we just generated is valid.
valid = ecdsa.verify((r, s), m, public_key)

''' specify a different hash function to use with ECDSA '''
r, s = ecdsa.sign(m, private_key, hashfunc=sha384)
valid = ecdsa.verify((r, s), m, public_key, hashfunc=sha384)

''' specify a different curve to use with ECDSA '''
private_key = keys.gen_private_key(curve.P224)
public_key = keys.get_public_key(private_key, curve.P224)
r, s = ecdsa.sign(m, private_key, curve=curve.P224)
valid = ecdsa.verify((r, s), m, public_key, curve=curve.P224)

''' using SHA3 via pysha3>=1.0b1 package '''
import sha3  # pip install [--user] pysha3==1.0b1
from hashlib import sha3_256
private_key, public_key = keys.gen_keypair(curve.P256)
r, s = ecdsa.sign(m, private_key, hashfunc=sha3_256)
valid = ecdsa.verify((r, s), m, public_key, hashfunc=sha3_256)

Arbitrary Elliptic Curve Arithmetic

The Point class allows arbitrary arithmetic to be performed over curves. The two main operations are point addition and point multiplication (by a scalar) which can be done via the standard python operators (+ and * respectively):

# example taken from the document below (section 4.3.2):
# https://koclab.cs.ucsb.edu/teaching/cren/docs/w02/nist-routines.pdf

from fastecdsa.curve import P256
from fastecdsa.point import Point

xs = 0xde2444bebc8d36e682edd27e0f271508617519b3221a8fa0b77cab3989da97c9
ys = 0xc093ae7ff36e5380fc01a5aad1e66659702de80f53cec576b6350b243042a256
S = Point(xs, ys, curve=P256)

xt = 0x55a8b00f8da1d44e62f6b3b25316212e39540dc861c89575bb8cf92e35e0986b
yt = 0x5421c3209c2d6c704835d82ac4c3dd90f61a8a52598b9e7ab656e9d8c8b24316
T = Point(xt, yt, curve=P256)

# Point Addition
R = S + T

# Point Subtraction: (xs, ys) - (xt, yt) = (xs, ys) + (xt, -yt)
R = S - T

# Point Doubling
R = S + S  # produces the same value as the operation below
R = 2 * S  # S * 2 works fine too i.e. order doesn't matter

d = 0xc51e4753afdec1e6b6c6a5b992f43f8dd0c7a8933072708b6522468b2ffb06fd

# Scalar Multiplication
R = d * S  # S * d works fine too i.e. order doesn't matter

e = 0xd37f628ece72a462f0145cbefe3f0b355ee8332d37acdd83a358016aea029db7

# Joint Scalar Multiplication
R = d * S + e * T

Importing and Exporting Keys

You can also export keys as files, ASN.1 encoded and formatted per RFC5480 and RFC5915. Both private keys and public keys can be exported as follows:

from fastecdsa.curve import P256
from fastecdsa.keys import export_key, gen_keypair

d, Q = gen_keypair(P256)
# save the private key to disk
export_key(d, curve=P256, filepath='/path/to/exported/p256.key')
# save the public key to disk
export_key(Q, curve=P256, filepath='/path/to/exported/p256.pub')

Keys stored in this format can also be imported. The import function will figure out if the key is a public or private key and parse it accordingly:

from fastecdsa.keys import import_key

# if the file is a private key then parsed_d is a long and parsed_Q is a Point object
# if the file is a public key then parsed_d will be None
parsed_d, parsed_Q = import_key('/path/to/file.key')

Other encoding formats can also be specified, such as SEC1 for public keys. This is done using classes found in the fastecdsa.encoding package, and passing them as keyword args to the key functions:

from fastecdsa.curve import P256
from fastecdsa.encoding.sec1 import SEC1Encoder
from fastecdsa.keys import export_key, gen_keypair, import_key

_, Q = gen_keypair(P256)
export_key(Q, curve=P256, filepath='/path/to/p256.key', encoder=SEC1Encoder)
parsed_Q = import_key('/path/to/p256.key', curve=P256, public=True, decoder=SEC1Encoder)

Encoding Signatures

DER encoding of ECDSA signatures as defined in RFC2459 is also supported. The fastecdsa.encoding.der provides the DEREncoder class which encodes signatures:

from fastecdsa.encoding.der import DEREncoder

r, s = 0xdeadc0de, 0xbadc0de
encoded = DEREncoder.encode_signature(r, s)
decoded_r, decoded_s = DEREncoder.decode_signature(encoded)

Acknowledgements

Thanks to those below for contributing improvements:

  • boneyard93501

  • clouds56

  • m-kus

  • sirk390

  • targon

  • NotStatilko

  • bbbrumley

  • luinxz

  • JJChiDguez

  • J08nY

  • trevor-crypto

  • sylvainpelissier

  • akaIDIOT

  • Peter-Bergman

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastecdsa-3.0.1.tar.gz (47.6 kB view details)

Uploaded Source

Built Distributions

fastecdsa-3.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (302.6 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

fastecdsa-3.0.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (287.5 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ i686

fastecdsa-3.0.1-cp313-cp313-macosx_14_0_arm64.whl (254.8 kB view details)

Uploaded CPython 3.13 macOS 14.0+ ARM64

fastecdsa-3.0.1-cp313-cp313-macosx_13_0_x86_64.whl (274.3 kB view details)

Uploaded CPython 3.13 macOS 13.0+ x86-64

fastecdsa-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (302.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

fastecdsa-3.0.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (287.5 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

fastecdsa-3.0.1-cp312-cp312-macosx_14_0_arm64.whl (254.8 kB view details)

Uploaded CPython 3.12 macOS 14.0+ ARM64

fastecdsa-3.0.1-cp312-cp312-macosx_13_0_x86_64.whl (274.3 kB view details)

Uploaded CPython 3.12 macOS 13.0+ x86-64

fastecdsa-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (302.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fastecdsa-3.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (287.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

fastecdsa-3.0.1-cp311-cp311-macosx_14_0_arm64.whl (254.8 kB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

fastecdsa-3.0.1-cp311-cp311-macosx_13_0_x86_64.whl (274.2 kB view details)

Uploaded CPython 3.11 macOS 13.0+ x86-64

fastecdsa-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (302.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fastecdsa-3.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (287.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

fastecdsa-3.0.1-cp310-cp310-macosx_14_0_arm64.whl (254.8 kB view details)

Uploaded CPython 3.10 macOS 14.0+ ARM64

fastecdsa-3.0.1-cp310-cp310-macosx_13_0_x86_64.whl (274.2 kB view details)

Uploaded CPython 3.10 macOS 13.0+ x86-64

fastecdsa-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (302.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fastecdsa-3.0.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (287.5 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

fastecdsa-3.0.1-cp39-cp39-macosx_14_0_arm64.whl (254.8 kB view details)

Uploaded CPython 3.9 macOS 14.0+ ARM64

fastecdsa-3.0.1-cp39-cp39-macosx_13_0_x86_64.whl (274.2 kB view details)

Uploaded CPython 3.9 macOS 13.0+ x86-64

File details

Details for the file fastecdsa-3.0.1.tar.gz.

File metadata

  • Download URL: fastecdsa-3.0.1.tar.gz
  • Upload date:
  • Size: 47.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for fastecdsa-3.0.1.tar.gz
Algorithm Hash digest
SHA256 f4b4a50fd5e346c4949aba365c061c3f6b25eee7983c973e1d31de7672ba48ea
MD5 4aa26d824d7ccf9bb17bfe610c7a6c3a
BLAKE2b-256 b2883a4a4c4b6143fe0e4c20fe4b5bb0142e6fa5f2d8763710b1f3d7dff9d5e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1.tar.gz:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 53680c1791f1f74e13005941c97b7f38a2f45016027a5b648b93488e50773563
MD5 4497acf7f9bee1a449b38e7f1d168a39
BLAKE2b-256 d7b8ddef975efa12a74591135d5bb575fe1eeaafb69bce9b6854e4876506e81e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4a4bb5b7bc01cef888142b47b764086a6ac2d0632630f07a83444e5f976d3aa6
MD5 b747f2a0fca375e47cef87909d760944
BLAKE2b-256 414fe15f00dc747f5febcb50601054a537101fc00bf56dcb1118cc9bf5678569

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c3e5b8a41ea620739628990fe90ef38f8a4a62bcdd2ce28c62d165f0863373f7
MD5 7f9502056b74d3b78d4540f7cf35f718
BLAKE2b-256 47c4913974857f98942d2cf488efe207a95ae3a3672b252b75030d9a23cdcac0

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 7b1c1cb4fd9a9d9999cffc20b223b1f805d423d2105e93742ccd2938fb82d0d4
MD5 293d87c2b3fe5f2c6aa61950c9e1c192
BLAKE2b-256 a56a543251ee857c1defeea386e4640f11207304a67dcb46968ff27dde383e2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp313-cp313-macosx_13_0_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 abeb065ce8fb3b2765ac7a1f7d693d5785e584629ff83ad271c02c1d55789bb1
MD5 896002acff153c16f4c7925d7b749d0f
BLAKE2b-256 0951f0a03480d932c487587d3effd34c9481d279f624d4b303af91932a4b5216

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6f16d79411ea8a3cb467da53b75e10d66db3a0f716e4d56a9d7e77e5f3ad9f71
MD5 cfdbd07ee7ce38dfa72e7630b5b3eb8f
BLAKE2b-256 977322afe3500d674d817ce5f0ec51e043965076503fced6af3468a869a9e8c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 82272ca3c91e20433e0ca66c2d96f4d4997850846586f9ff7a9533a5c3f6e253
MD5 589591daf8c8a7d773c09119db75b4e7
BLAKE2b-256 16ba647a3d2ce818738e6ff1f107f1a7c662696d13e205ce3ad4ee591e596e61

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 2dab30e3eceb773244baadb6dbc8977f0a28741e8d2ea790f529cc1f8419b265
MD5 8cd489808a6844b199faf948f3730195
BLAKE2b-256 a3f137413a26a8b664b53d959c5744064b7b95a67721f926ddd3c4d77e743429

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp312-cp312-macosx_13_0_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cacb1a0486ed62d09ec2eb4cb6c97910956c9dc6f9af220e1632b35cf2e6fcd7
MD5 aec7fb9286f6706f25c06aa69c495be3
BLAKE2b-256 8fdf90859d232fa4b8a075c706684f4fc0f8e108384677d60fd82b87b91bdfb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9537ec297a899c2cfbd9cf596bac73a8677d15cddca19487edf2be47145ec6d1
MD5 f57d18d8ffbf74c4e4dec665ee16cd8b
BLAKE2b-256 1af5a5cef9a6d1f30f5c8a08a02e2c0fe8494dadc3a75a1dd73fa6919065e527

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5ea3e874316689d4101edd3527056a07f3c6f4d684142368f1f062dda174022a
MD5 a8bba8ba43a25b933bf26d22469a3d36
BLAKE2b-256 142941529815d1d40e477b386005bc0f1f731b534568f869b946e7507042baab

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 dad6e7dc1048f538e8de8d9abfabf6198b34be4cb03f1f7919c6386e9412bdde
MD5 ef97773c2a436cc5c997d755f9d6515a
BLAKE2b-256 2b88edc752ef1b0f4cd2de95b055037a6e86b9fe9a548cd85543f772ad99a17f

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp311-cp311-macosx_13_0_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bb11b805f0c9c4e6b8eb8766b7eeaf9b7e425ff2f17eed08a402568e0548734d
MD5 c00d27a8d6836ca5c0d36fa2329f05e5
BLAKE2b-256 9bb7de7e1789c3a7e97dedffa01a61868669d4aff5500e71bf71f220473212ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2c730285951bd3dce40ff6ba0527847864d4fc63145c8479d5245e5544de4ee8
MD5 887acc0f3bf476d1e8469d798a572f96
BLAKE2b-256 781cf37f8afb09f32ce7874b312dfa5098a2b4963e40ed094c46b4d939677d8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e99b2695f3cbf363fa4fc12e036b5a2b50a01004b82972dce102bb73fa1833bd
MD5 869b48e126bb2fd99398aea4a0e1189e
BLAKE2b-256 d5d1641baf79b39671488b2f0141b80ef816a5c8bf5128d469da1dd9b729108b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 5793ac17891bc8c7002c8364b5df32ac17b486a68c6e32d941f3f0b3641b417b
MD5 a8f5fd55a0e62f10947ee66397ffb7be
BLAKE2b-256 917cd7d224daabf5b00eb1ca154b90fa73f3a46f292df1af636338c7039c2c35

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp310-cp310-macosx_13_0_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a59a2488302fdd9b92a17629740a5fc1800e9cc51ff7f0a279277a13ed7ad00
MD5 b03a256d2d33f79eaf4f542ff4799179
BLAKE2b-256 91da3f0458754b850743b7bd2c219b26917d9d368360e66fef101a8310da3bfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 637657f860bb0335af3ad87b1e00dfdd679aa05509945c9277ee96df1b07d437
MD5 dc5b0155e85c9225997c84c1b8c2847e
BLAKE2b-256 8707ff511db993cd78d2ed1cda68e0c5f5ec937f1677789ac0903c6000d7cb21

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 67209d556a2da673a52b6dfaddb90be551b0deb9eb7802c313f8495b0b5071e5
MD5 89826a3ff1340bbbf3220bde87bb0317
BLAKE2b-256 53b0aab9131895b5932787d97a7b383ae65cf6feee1c7833394e9fd2f078ad85

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp39-cp39-macosx_14_0_arm64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastecdsa-3.0.1-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fastecdsa-3.0.1-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 1a33ae3779500226fb1a8ae9b14e25467169f6021a611735d9cf9303575c903f
MD5 a499fc54649a93aca2b4b4c2fd8e576c
BLAKE2b-256 25328cd8b76293a82feaef9760795259cd07d494b7d10832c3c2ea9ee4950b31

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastecdsa-3.0.1-cp39-cp39-macosx_13_0_x86_64.whl:

Publisher: publish-to-prod.yaml on AntonKueltz/fastecdsa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page