| Viewing file:  utils.py (1.68 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
# This file is dual licensed under the terms of the Apache License, Version# 2.0, and the BSD License. See the LICENSE file in the root of this repository
 # for complete details.
 
 from __future__ import absolute_import, division, print_function
 
 import warnings
 
 from asn1crypto.algos import DSASignature
 
 import six
 
 from cryptography import utils
 from cryptography.hazmat.primitives import hashes
 
 
 def decode_rfc6979_signature(signature):
 warnings.warn(
 "decode_rfc6979_signature is deprecated and will "
 "be removed in a future version, use decode_dss_signature instead.",
 utils.PersistentlyDeprecated,
 stacklevel=2
 )
 return decode_dss_signature(signature)
 
 
 def decode_dss_signature(signature):
 data = DSASignature.load(signature, strict=True).native
 return data['r'], data['s']
 
 
 def encode_rfc6979_signature(r, s):
 warnings.warn(
 "encode_rfc6979_signature is deprecated and will "
 "be removed in a future version, use encode_dss_signature instead.",
 utils.PersistentlyDeprecated,
 stacklevel=2
 )
 return encode_dss_signature(r, s)
 
 
 def encode_dss_signature(r, s):
 if (
 not isinstance(r, six.integer_types) or
 not isinstance(s, six.integer_types)
 ):
 raise ValueError("Both r and s must be integers")
 
 return DSASignature({'r': r, 's': s}).dump()
 
 
 class Prehashed(object):
 def __init__(self, algorithm):
 if not isinstance(algorithm, hashes.HashAlgorithm):
 raise TypeError("Expected instance of HashAlgorithm.")
 
 self._algorithm = algorithm
 self._digest_size = algorithm.digest_size
 
 digest_size = utils.read_only_property("_digest_size")
 
 |