public static Bytes decryptMsgEIP8(final Bytes msgBytes, final NodeKey nodeKey)
      throws InvalidCipherTextException {
    final SECPPublicKey ephPubKey =
        SIGNATURE_ALGORITHM.get().createPublicKey(msgBytes.slice(3, 64));

    // Strip off the IV to use.
    final Bytes iv = msgBytes.slice(3 + 64, IV_SIZE);

    // Extract the encrypted payload.
    final Bytes encrypted = msgBytes.slice(3 + 64 + IV_SIZE);

    // Perform the decryption.
    final ECIESEncryptionEngine decryptor =
        ECIESEncryptionEngine.forDecryption(nodeKey, ephPubKey, iv);
    return decryptor.decrypt(encrypted, msgBytes.slice(0, 2).toArray());
  }
Decrypts the ciphertext using our private key.

@param msgBytes The ciphertext.
@param nodeKey Abstraction of this nodes private key & associated cryptographic operations
@return The plaintext.
@throws InvalidCipherTextException Thrown if decryption failed.
ethereum/p2p/src/main/java/org/hyperledger/besu/ethereum/p2p/rlpx/handshake/ecies/EncryptedMessage.java