@Override
    public void init(final DerivationParameters param) {
      checkArgument(param instanceof KDFParameters, "unexpected expected KDF params type");

      final KDFParameters p = (KDFParameters) param;
      shared = p.getSharedSecret();
      iv = p.getIV();
    }
Key generation function as defined in NIST SP 800-56A, but swapping the order of the digested
values (counter first, shared secret second) to comply with Ethereum's approach.

<p>This class has been adapted from the <code>BaseKDFBytesGenerator</code> implementation of
Bouncy Castle.
ethereum/p2p/src/main/java/org/hyperledger/besu/ethereum/p2p/rlpx/handshake/ecies/ECIESEncryptionEngine.java