HKDFBytesGenerator 的 Bouncycastle C# 等价物?

Bouncycastle C# equivalent for HKDFBytesGenerator?

我一直在寻找将示例 Java Android 支付处理代码翻译成 C# 的方法。示例 Java 代码可在此处找到:https://developers.google.com/android-pay/integration/gateway-processor-integration

通过 BouncyCastle 的 C# 文档进行解析,我找到了与大多数 Java BouncyCastle 代码等效的代码。但是,我找不到 HKDFBytesGenerator 和 HKDFParameters 作为 C# 库的一部分,并且 BaseKDFBytesGenerator 不会生成正确的 encryptionKey 和 macKey。

有人知道 BouncyCastle C# 库中正确的 HKDF 替换吗?或者如果它不存在,如何用 .NET 的内置密码库或其他 .NET 密码库替换它?

编辑:供参考,我苦苦挣扎的代码在这里:

// Deriving encryption and mac keys.
      HKDFBytesGenerator hkdfBytesGenerator = new HKDFBytesGenerator(new SHA256Digest());
      byte[] khdfInput = ByteUtils.concatenate(ephemeralPublicKeyBytes, sharedSecret);
      hkdfBytesGenerator.init(new HKDFParameters(khdfInput, HKDF_SALT, HKDF_INFO));
      byte[] encryptionKey = new byte[SYMMETRIC_KEY_BYTE_COUNT];
      hkdfBytesGenerator.generateBytes(encryptionKey, 0, SYMMETRIC_KEY_BYTE_COUNT);
      byte[] macKey = new byte[MAC_KEY_BYTE_COUNT];
      hkdfBytesGenerator.generateBytes(macKey, 0, MAC_KEY_BYTE_COUNT);

在进一步研究外部库后,我发现 CEX-NET 有一个很棒的 HKDF class 基于 BouncyCastle 的 1.51 Java 实现。该库能够处理获取正确的 encryptionKey 和 macKey 的步骤。 Link: http://web.ncf.ca/fq329/CEX/Help/class_v_t_dev_1_1_libraries_1_1_c_e_x_engine_1_1_crypto_1_1_generator_1_1_h_k_d_f.html#details