### Question:
Functions { public static HKDFKeys hkdf_expand( BytesValue srcNodeId, BytesValue destNodeId, BytesValue srcPrivKey, BytesValue destPubKey, BytesValue idNonce) { BytesValue keyAgreement = deriveECDHKeyAgreement(srcPrivKey, destPubKey); return hkdf_expand(srcNodeId, destNodeId, keyAgreement, idNonce); }  static Bytes32 hash(BytesValue value); static Bytes32 hashKeccak(BytesValue value); static BytesValue sign(BytesValue key, BytesValue x); static boolean verifyECDSASignature(
      BytesValue signature, BytesValue x, BytesValue pubKey); static BytesValue aesgcm_encrypt(
      BytesValue privateKey, BytesValue nonce, BytesValue message, BytesValue aad); static BytesValue aesgcm_decrypt(
      BytesValue privateKey, BytesValue nonce, BytesValue encoded, BytesValue aad); static ECPoint publicKeyToPoint(BytesValue pkey); static BytesValue derivePublicKeyFromPrivate(BytesValue privateKey); static BytesValue deriveECDHKeyAgreement(BytesValue srcPrivKey, BytesValue destPubKey); static HKDFKeys hkdf_expand(
      BytesValue srcNodeId,
      BytesValue destNodeId,
      BytesValue srcPrivKey,
      BytesValue destPubKey,
      BytesValue idNonce); static HKDFKeys hkdf_expand(
      BytesValue srcNodeId, BytesValue destNodeId, BytesValue keyAgreement, BytesValue idNonce); static long getTime(); static Random getRandom(); static int logDistance(Bytes32 nodeId1, Bytes32 nodeId2); static final ECDomainParameters SECP256K1_CURVE; static final int PUBKEY_SIZE; }### Answer:
@Test public void hkdfExpandTest() { BytesValue idNonce = Bytes32.fromHexString("68b02a985ecb99cc2d10cf188879d93ae7684c4f4707770017b078c6497c5a5d"); Functions.HKDFKeys keys1 = Functions.hkdf_expand( nodeId1, nodeId2, testKey1, BytesValue.wrap(ECKeyPair.create(testKey2.extractArray()).getPublicKey().toByteArray()), idNonce); Functions.HKDFKeys keys2 = Functions.hkdf_expand( nodeId1, nodeId2, testKey2, BytesValue.wrap(ECKeyPair.create(testKey1.extractArray()).getPublicKey().toByteArray()), idNonce); assertEquals(keys1, keys2); }