'Sign the given data with the given public key.
By default, this will call getPrivateKey to get the private key,
then sign the data using Key.sign().
This method is factored out so that it can be overridden to use
alternate methods, such as a key agent.
@param publicKey: The public key object returned from L{getPublicKey}
@type publicKey: L{keys.Key}
@param signData: the data to be signed by the private key.
@type signData: L{bytes}
@return: a Deferred that\'s called back with the signature
@rtype: L{defer.Deferred}'

def signData(self, publicKey, signData):

    key = self.getPrivateKey()
    if (not key):
        return
    return key.addCallback(self._cbSignData, signData)
