2018-02-08 00:18:50 +00:00
|
|
|
from cryptography.hazmat.primitives.asymmetric import ec
|
|
|
|
|
|
|
|
|
2018-02-08 04:09:47 +00:00
|
|
|
class _CONFIG:
|
2018-02-08 00:18:50 +00:00
|
|
|
__curve = None
|
2018-02-08 04:09:47 +00:00
|
|
|
__params = None
|
|
|
|
|
2018-02-08 19:30:24 +00:00
|
|
|
class UmbralConfigurationError(RuntimeError):
|
|
|
|
"""Raised when somebody does something dumb re: configuration."""
|
|
|
|
|
2018-02-08 04:09:47 +00:00
|
|
|
@classmethod
|
|
|
|
def params(cls):
|
|
|
|
if not cls.__params:
|
2018-02-08 19:30:24 +00:00
|
|
|
raise cls.UmbralConfigurationError("No default curve has been set; you need one for default params.")
|
2018-02-08 04:09:47 +00:00
|
|
|
else:
|
|
|
|
return cls.__params
|
2018-02-08 00:18:50 +00:00
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def curve(cls):
|
|
|
|
if not cls.__curve:
|
2018-02-08 19:30:24 +00:00
|
|
|
raise cls.UmbralConfigurationError("No default curve has been set.")
|
2018-02-08 00:18:50 +00:00
|
|
|
else:
|
|
|
|
return cls.__curve
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def set_curve(cls, curve: ec.EllipticCurve=None):
|
|
|
|
if cls.__curve:
|
2018-02-08 19:30:24 +00:00
|
|
|
raise cls.UmbralConfigurationError("You can only set the default curve once. Do it once and then leave it alone.")
|
2018-02-08 00:18:50 +00:00
|
|
|
else:
|
2018-02-08 04:09:47 +00:00
|
|
|
from umbral.params import UmbralParameters
|
2018-02-08 00:18:50 +00:00
|
|
|
cls.__curve = curve
|
2018-02-08 04:09:47 +00:00
|
|
|
cls.__params = UmbralParameters(curve)
|
2018-02-08 00:18:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
def set_default_curve(curve: ec.EllipticCurve=None):
|
2018-02-08 04:09:47 +00:00
|
|
|
_CONFIG.set_curve(curve)
|
|
|
|
|
2018-02-08 00:18:50 +00:00
|
|
|
|
|
|
|
def default_curve():
|
2018-02-08 04:09:47 +00:00
|
|
|
return _CONFIG.curve()
|
|
|
|
|
|
|
|
|
|
|
|
def default_params():
|
|
|
|
return _CONFIG.params()
|