ECDSA test vectors#

Test vectors for ECDSA.

exception crypto_condor.vectors.ECDSA.EcdsaParametersError#

Bases: Exception

Exception for parameter errors.

exception crypto_condor.vectors.ECDSA.EcdsaVectorsError#

Bases: Exception

Exception for errors when loading or parsing vectors.

enum crypto_condor.vectors.ECDSA.Curve(value)#

Bases: StrEnum

Defines all supported curves.

Member Type:

str

Valid values are as follows:

SECP192R1 = <Curve.SECP192R1: 'secp192r1'>#
SECP224R1 = <Curve.SECP224R1: 'secp224r1'>#
SECP256R1 = <Curve.SECP256R1: 'secp256r1'>#
SECP384R1 = <Curve.SECP384R1: 'secp384r1'>#
SECP521R1 = <Curve.SECP521R1: 'secp521r1'>#
SECP256K1 = <Curve.SECP256K1: 'secp256k1'>#
BRAINPOOLP224R1 = <Curve.BRAINPOOLP224R1: 'brainpoolP224r1'>#
BRAINPOOLP256R1 = <Curve.BRAINPOOLP256R1: 'brainpoolP256r1'>#
SECT283R1 = <Curve.SECT283R1: 'sect283r1'>#
SECT409R1 = <Curve.SECT409R1: 'sect409r1'>#
SECT571R1 = <Curve.SECT571R1: 'sect571r1'>#

The Enum and its members also have the following methods:

classmethod from_name(name)#

Matches a curve name to its corresponding enum.

Parameters:

name (str) – The name of the curve.

Returns:

The corresponding EcdsaCurve.

Raises:

ValueError – If the curve is not supported or the name not recognized.

get_nist_name()#

Returns the curve name used in NIST test vectors.

None is returned if there are no NIST vectors that use this curve.

get_wycheproof_name()#

Returns the curve name used in Wycheproof test vectors.

None is returned if there are no Wycheproof vectors that use this curve.

get_curve_instance()#

Returns an instance of the corresponding curve.

Curves come from the cryptography.hazmat.primitives.asymmetric.ec module.

class crypto_condor.vectors.ECDSA.EcdsaSigGenVectors(curve, hash_function, nist)#

Bases: object

ECDSA signature generation test vectors.

Do not instantiate directly, use load() to get test vectors for a given curve and hash function.

Parameters:
  • curve (Curve) – The elliptic curve to use.

  • hash_function (Hash) – The hash function used to generate signatures.

  • nist (EcdsaNistSigGenVectors | None) – The NIST test vectors for the given parameters, None if there are no test vectors for those parameters.

classmethod load(curve, hash_function)#

Loads ECDSA SigGen test vectors.

Parameters:
  • curve (Curve) – The elliptic curve to get test vectors for.

  • hash_function (Hash) – The hash function to get test vectors for.

Returns:

An EcdsaSigGenVectors instance with the corresponding test vectors.

class crypto_condor.vectors.ECDSA.EcdsaSigVerVectors(curve, hash_function, nist, wycheproof)#

Bases: object

A class to group ECDSA test vectors for signature verification.

Do not instantiate directly, use load() to load the corresponding test vectors.

Parameters:
  • parameters – The parameters to get test vectors for.

  • nist_vectors – An instance of loaded NIST vectors if they exist for the given parameters, None otherwise.

  • wycheproof_vectors – An instance of loaded Wycheproof vectors if they exist for the given parameters, None otherwise.

classmethod load(curve, hash_function, *, compliance=True, resilience=True)#

Loads ECDSA SigVer test vectors.

Parameters:
  • curve (Curve) – The elliptic curve to get test vectors for.

  • hash_function (Hash) – The hash function to get test vectors for.

Keyword Arguments:
  • compliance – Whether to load compliance test vectors.

  • resilience – Whether to load resilience test vectors.

Returns:

An EcdsaSigVerVectors instance with the corresponding test vectors.

enum crypto_condor.vectors.ECDSA.EcdsaVectorType(value)#

Bases: StrEnum

Defines the different types of test vectors available.

Member Type:

str

Valid values are as follows:

SIGVER = <EcdsaVectorType.SIGVER: 'sigver'>#
SIGGEN = <EcdsaVectorType.SIGGEN: 'siggen'>#
class crypto_condor.vectors.ECDSA.EcdsaWycheproofGroup#

Bases: TypedDict

Represents a Wycheproof ECDSA test group.

class crypto_condor.vectors.ECDSA.EcdsaWycheproofKey#

Bases: TypedDict

Represents a Wycheproof ECDSA key.

ECDSA test groups share a key which is provided in different formats. This format contains the curve used and the coordinates.

class crypto_condor.vectors.ECDSA.EcdsaWycheproofTest#

Bases: TypedDict

Represents a single Wycheproof ECDSA test.

class crypto_condor.vectors.ECDSA.EcdsaWycheproofVectors#

Bases: TypedDict

Represents a Wycheproof file of ECDSA test vectors.

Note that some fields are missing as they are not used by crypto-condor.

enum crypto_condor.vectors.ECDSA.Hash(value)#

Bases: StrEnum

Defines all supported hash functions.

Member Type:

str

Valid values are as follows:

SHA_256 = <Hash.SHA_256: 'SHA-256'>#
SHA_384 = <Hash.SHA_384: 'SHA-384'>#
SHA_512 = <Hash.SHA_512: 'SHA-512'>#
SHA3_256 = <Hash.SHA3_256: 'SHA3-256'>#
SHA3_384 = <Hash.SHA3_384: 'SHA3-384'>#
SHA3_512 = <Hash.SHA3_512: 'SHA3-512'>#

The Enum and its members also have the following methods:

classmethod from_name(name)#

Matches a hash function name to its corresponding enum.

Parameters:

name (str) – The name of the hash function.

Returns:

The corresponding EcdsaHash.

Raises:

ValueError – If the hash function is not supported or the name not recognized.

get_nist_name()#

Returns the hash function name used in NIST test vectors.

None is returned if there are no NIST vectors that use this hash function.

get_wycheproof_name()#

Returns the hash function name used in Wycheproof test vectors.

None is returned if there are no Wycheproof vectors that use this hash function.

get_hash_instance()#

Returns an instance of the corresponding hash function.

Hash functions come from cryptography.hazmat.primitives.hashes module.