'Create a new DSA key factory.
:Keywords:
use_fast_math : bool
Specify which mathematic library to use:
- *None* (default). Use fastest math available.
- *True* . Use fast math.
- *False* . Use slow math.
default_randfunc : callable
Specify how to collect random data:
- *None* (default). Use Random.new().read().
- not *None* . Use the specified function directly.
:Raise RuntimeError:
When **use_fast_math** =True but fast math is not available.'

def __init__(self, **kwargs):

    use_fast_math = kwargs.get('use_fast_math', None)
    if (use_fast_math is None):
        if (_fastmath is not None):
            self._math = _fastmath
        else:
            self._math = _slowmath
    elif use_fast_math:
        if (_fastmath is not None):
            self._math = _fastmath
        else:
            raise RuntimeError('fast    math    module    not    available')
    else:
        self._math = _slowmath
    self.error = self._math.error
    self._default_randfunc = kwargs.get('default_randfunc', None)
    self._current_randfunc = None
