blob: d233c5013789ab721bf29ce5eda4e599c29093dc [file] [log] [blame]
#
# Copyright 2018-2020 NXP
# SPDX-License-Identifier: Apache-2.0
#
#
"""License text"""
from cryptography.hazmat.primitives.asymmetric import ec
import cryptography.hazmat as hazmat
from cryptography import utils
if hasattr(hazmat, "_oid"):
from cryptography.hazmat._oid import ObjectIdentifier # pylint: disable=protected-access
# pylint: disable=missing-class-docstring,too-few-public-methods
@utils.register_interface(ec.EllipticCurve)
class SECP224K1:
name = "secp224k1"
key_size = 224
@utils.register_interface(ec.EllipticCurve)
class SECP192K1:
name = "secp192k1"
key_size = 192
@utils.register_interface(ec.EllipticCurve)
class SECP160K1:
name = "secp160k1"
key_size = 160
@utils.register_interface(ec.EllipticCurve)
class BrainpoolP160R1:
name = "brainpoolP160r1"
key_size = 160
@utils.register_interface(ec.EllipticCurve)
class BrainpoolP192R1:
name = "brainpoolP192r1"
key_size = 192
@utils.register_interface(ec.EllipticCurve)
class BrainpoolP224R1:
name = "brainpoolP224r1"
key_size = 224
@utils.register_interface(ec.EllipticCurve)
class BrainpoolP256R1:
name = "brainpoolP256r1"
key_size = 256
@utils.register_interface(ec.EllipticCurve)
class BrainpoolP320R1:
name = "brainpoolP320r1"
key_size = 320
@utils.register_interface(ec.EllipticCurve)
class BrainpoolP384R1:
name = "brainpoolP384r1"
key_size = 384
@utils.register_interface(ec.EllipticCurve)
class BrainpoolP512R1:
name = "brainpoolP512r1"
key_size = 512
# pylint: enable=missing-class-docstring,too-few-public-methods
def patch():
"""
Apply patch to python cryptography module to support all ecc curves
:return: None
"""
if not hasattr(ec, 'PatchedKoblitshBrainpool'):
setattr(ec, 'SECP160K1', SECP160K1)
setattr(ec, 'SECP192K1', SECP192K1)
setattr(ec, 'SECP224K1', SECP224K1)
setattr(ec, 'BrainpoolP160R1', BrainpoolP160R1)
setattr(ec, 'BrainpoolP192R1', BrainpoolP192R1)
setattr(ec, 'BrainpoolP224R1', BrainpoolP224R1)
setattr(ec, 'BrainpoolP256R1', BrainpoolP256R1)
setattr(ec, 'BrainpoolP320R1', BrainpoolP320R1)
setattr(ec, 'BrainpoolP384R1', BrainpoolP384R1)
setattr(ec, 'BrainpoolP512R1', BrainpoolP512R1)
# pylint: disable=no-member, protected-access
ec._CURVE_TYPES["secp160k1"] = ec.SECP160K1
ec._CURVE_TYPES["secp192k1"] = ec.SECP192K1
ec._CURVE_TYPES["secp224k1"] = ec.SECP224K1
ec._CURVE_TYPES["brainpoolP160r1"] = ec.BrainpoolP160R1
ec._CURVE_TYPES["brainpoolP192r1"] = ec.BrainpoolP192R1
ec._CURVE_TYPES["brainpoolP224r1"] = ec.BrainpoolP224R1
ec._CURVE_TYPES["brainpoolP256r1"] = ec.BrainpoolP256R1
ec._CURVE_TYPES["brainpoolP320r1"] = ec.BrainpoolP320R1
ec._CURVE_TYPES["brainpoolP384r1"] = ec.BrainpoolP384R1
ec._CURVE_TYPES["brainpoolP512r1"] = ec.BrainpoolP512R1
if 'ObjectIdentifier' in globals():
setattr(ec.EllipticCurveOID, 'SECP160K1', ObjectIdentifier("1.3.132.0.9"))
setattr(ec.EllipticCurveOID, 'SECP192K1', ObjectIdentifier("1.3.132.0.31"))
setattr(ec.EllipticCurveOID, 'SECP224K1', ObjectIdentifier("1.3.132.0.32"))
setattr(ec.EllipticCurveOID, 'BRAINPOOLP160R1',
ObjectIdentifier("1.3.36.3.3.2.8.1.1.1"))
setattr(ec.EllipticCurveOID, 'BRAINPOOLP192R1',
ObjectIdentifier("1.3.36.3.3.2.8.1.1.3"))
setattr(ec.EllipticCurveOID, 'BRAINPOOLP224R1',
ObjectIdentifier("1.3.36.3.3.2.8.1.1.5"))
setattr(ec.EllipticCurveOID, 'BRAINPOOLP256R1',
ObjectIdentifier("1.3.36.3.3.2.8.1.1.7"))
setattr(ec.EllipticCurveOID, 'BRAINPOOLP320R1',
ObjectIdentifier("1.3.36.3.3.2.8.1.1.9"))
setattr(ec.EllipticCurveOID, 'BRAINPOOLP384R1',
ObjectIdentifier("1.3.36.3.3.2.8.1.1.11"))
setattr(ec.EllipticCurveOID, 'BRAINPOOLP512R1',
ObjectIdentifier("1.3.36.3.3.2.8.1.1.13"))
if hasattr(ec, '_OID_TO_CURVE'):
ec._OID_TO_CURVE[ec.EllipticCurveOID.SECP160K1] = ec.SECP160K1
ec._OID_TO_CURVE[ec.EllipticCurveOID.SECP192K1] = ec.SECP192K1
ec._OID_TO_CURVE[ec.EllipticCurveOID.SECP224K1] = ec.SECP224K1
ec._OID_TO_CURVE[ec.EllipticCurveOID.BRAINPOOLP160R1] = ec.BrainpoolP160R1
ec._OID_TO_CURVE[ec.EllipticCurveOID.BRAINPOOLP192R1] = ec.BrainpoolP192R1
ec._OID_TO_CURVE[ec.EllipticCurveOID.BRAINPOOLP224R1] = ec.BrainpoolP224R1
ec._OID_TO_CURVE[ec.EllipticCurveOID.BRAINPOOLP256R1] = ec.BrainpoolP256R1
ec._OID_TO_CURVE[ec.EllipticCurveOID.BRAINPOOLP320R1] = ec.BrainpoolP320R1
ec._OID_TO_CURVE[ec.EllipticCurveOID.BRAINPOOLP384R1] = ec.BrainpoolP384R1
ec._OID_TO_CURVE[ec.EllipticCurveOID.BRAINPOOLP512R1] = ec.BrainpoolP512R1
# pylint: enable=no-member, protected-access
setattr(ec, 'PatchedKoblitshBrainpool', True)