def decrypt_and_unpack_grad_hess(self, grad_hess_ciphertext, private_key):
        """Decrypt and Unpack Ciphertext into grad and hess
        Args:
            grad_hess_ciphertext: packed grad and hess ciphertext
            private_key: private_key for decryption
        Returns:
            list of grad and hess
        """
        assert private_key.public_key == self.public_key, \
            'private key is not paired with public key in GradHessPacker'
        grad_hess_plaintext = [
            private_key.raw_decrypt(ciphertext)
            for ciphertext in grad_hess_ciphertext
        ]
        grad_plaintext = [(plaintext >> self.offset) % self._n
                          for plaintext in grad_hess_plaintext]
        hess_plaintext = [
            plaintext % self._n for plaintext in grad_hess_plaintext
        ]
        grad = [
            FixedPointNumber(encoding, self.exponent, self._n,
                             self.max_int).decode()
            for encoding in grad_plaintext
        ]
        hess = [
            FixedPointNumber(encoding, self.exponent, self._n,
                             self.max_int).decode()
            for encoding in hess_plaintext
        ]
        return grad, hess
Decrypt and Unpack Ciphertext into grad and hess
        Args:
            grad_hess_ciphertext: packed grad and hess ciphertext
            private_key: private_key for decryption
        Returns:
            list of grad and hess
        
fedlearner/model/tree/packing.py