'Sign a piece of data.
:Parameter M: The piece of data to encrypt.
:Type M: byte string or long
:Parameter K: A random parameter required by some algorithms
:Type K: byte string or long
:Return: A tuple with two items.'

def sign(self, M, K):

    if (not self.has_private()):
        raise TypeError('Private    key    not    available    in    this    object')
    if isinstance(M, types.StringType):
        M = bytes_to_long(M)
    if isinstance(K, types.StringType):
        K = bytes_to_long(K)
    return self._sign(M, K)
