':return:
If an RSA key, an RSAPublicKey object. If a DSA key, an Integer
object. If an EC key, an ECPointBitString object.'

@property
def public_key(self):

    if (self._public_key is None):
        if (self.algorithm == u'ec'):
            key = self[u'private_key'].parsed
            if key[u'public_key']:
                self._public_key = key[u'public_key'].untag()
            else:
                self._public_key = self._compute_public_key()
        else:
            self._public_key = self._compute_public_key()
    return self._public_key
