'Sign the passed-in bytes.
This requires the key to have a private component.  It performs
a PKCS1 signature on the passed-in data.
@type bytes: L{bytearray} of unsigned bytes
@param bytes: The value which will be signed.
@rtype: L{bytearray} of unsigned bytes.
@return: A PKCS1 signature on the passed-in data.'

def sign(self, bytes):

    if (not self.hasPrivateKey()):
        raise AssertionError()
    paddedBytes = self._addPKCS1Padding(bytes, 1)
    m = bytesToNumber(paddedBytes)
    if (m >= self.n):
        raise ValueError()
    c = self._rawPrivateKeyOp(m)
    sigBytes = numberToByteArray(c, numBytes(self.n))
    return sigBytes
