'Return the values of the public key as a dictionary.
@rtype: L{dict}'

def data(self):

    if isinstance(self._keyObject, rsa.RSAPublicKey):
        numbers = self._keyObject.public_numbers()
        return {'n': numbers.n, 'e': numbers.e}
    elif isinstance(self._keyObject, rsa.RSAPrivateKey):
        numbers = self._keyObject.private_numbers()
        return {'n': numbers.public_numbers.n, 'e': numbers.public_numbers.e, 'd': numbers.d, 'p': numbers.p, 'q': numbers.q, 'u': rsa.rsa_crt_iqmp(numbers.q, numbers.p)}
    elif isinstance(self._keyObject, dsa.DSAPublicKey):
        numbers = self._keyObject.public_numbers()
        return {'y': numbers.y, 'g': numbers.parameter_numbers.g, 'p': numbers.parameter_numbers.p, 'q': numbers.parameter_numbers.q}
    elif isinstance(self._keyObject, dsa.DSAPrivateKey):
        numbers = self._keyObject.private_numbers()
        return {'x': numbers.x, 'y': numbers.public_numbers.y, 'g': numbers.public_numbers.parameter_numbers.g, 'p': numbers.public_numbers.parameter_numbers.p, 'q': numbers.public_numbers.parameter_numbers.q}
    elif isinstance(self._keyObject, ec.EllipticCurvePublicKey):
        numbers = self._keyObject.public_numbers()
        return {'x': numbers.x, 'y': numbers.y, 'curve': self.sshType()}
    elif isinstance(self._keyObject, ec.EllipticCurvePrivateKey):
        numbers = self._keyObject.private_numbers()
        return {'x': numbers.public_numbers.x, 'y': numbers.public_numbers.y, 'privateValue': numbers.private_value, 'curve': self.sshType()}
    else:
        raise RuntimeError(('Unexpected    key    type:    %s' % (self._keyObject,)))
