docs: def FromPublicKey(cls, public_key):
      """An alternate constructor which generates a new client id."""
      # Our CN will be the first 64 bits of the hash of the public key
      # in MPI format - the length of the key in 4 bytes + the key
      # prefixed with a 0. This weird format is an artifact from the way
      # M2Crypto handled this, we have to live with it for now.
      n = public_key.GetN()
      raw_n = binascii.unhexlify("%x" % n)
  
      mpi_format = struct.pack(">i", len(raw_n) + 1) + b"\x00" + raw_n
  
      digest = binascii.hexlify(hashlib.sha256(mpi_format).digest()[:8])
      return cls("C.{}".format(digest.decode("ascii")))