diff --git a/crypto/BouncyCastle.Android.csproj b/crypto/BouncyCastle.Android.csproj
index b339f4f79..96564a984 100644
--- a/crypto/BouncyCastle.Android.csproj
+++ b/crypto/BouncyCastle.Android.csproj
@@ -689,6 +689,7 @@
<Compile Include="src\crypto\IKeyUnwrapper.cs" />
<Compile Include="src\crypto\IKeyWrapper.cs" />
<Compile Include="src\crypto\IMac.cs" />
+ <Compile Include="src\crypto\IMacDerivationFunction.cs" />
<Compile Include="src\crypto\IMacFactory.cs" />
<Compile Include="src\crypto\IRawAgreement.cs" />
<Compile Include="src\crypto\IRsa.cs" />
@@ -847,6 +848,9 @@
<Compile Include="src\crypto\generators\GOST3410ParametersGenerator.cs" />
<Compile Include="src\crypto\generators\Kdf1BytesGenerator.cs" />
<Compile Include="src\crypto\generators\Kdf2BytesGenerator.cs" />
+ <Compile Include="src\crypto\generators\KDFCounterBytesGenerator.cs" />
+ <Compile Include="src\crypto\generators\KDFDoublePipelineIterationBytesGenerator.cs" />
+ <Compile Include="src\crypto\generators\KDFFeedbackBytesGenerator.cs" />
<Compile Include="src\crypto\generators\Mgf1BytesGenerator.cs" />
<Compile Include="src\crypto\generators\NaccacheSternKeyPairGenerator.cs" />
<Compile Include="src\crypto\generators\OpenSSLPBEParametersGenerator.cs" />
@@ -963,6 +967,9 @@
<Compile Include="src\crypto\parameters\ISO18033KDFParameters.cs" />
<Compile Include="src\crypto\parameters\IesParameters.cs" />
<Compile Include="src\crypto\parameters\IesWithCipherParameters.cs" />
+ <Compile Include="src\crypto\parameters\KDFCounterParameters.cs" />
+ <Compile Include="src\crypto\parameters\KDFDoublePipelineIterationParameters.cs" />
+ <Compile Include="src\crypto\parameters\KDFFeedbackParameters.cs" />
<Compile Include="src\crypto\parameters\KdfParameters.cs" />
<Compile Include="src\crypto\parameters\KeyParameter.cs" />
<Compile Include="src\crypto\parameters\MgfParameters.cs" />
diff --git a/crypto/BouncyCastle.csproj b/crypto/BouncyCastle.csproj
index af51afd16..8b7ae06e9 100644
--- a/crypto/BouncyCastle.csproj
+++ b/crypto/BouncyCastle.csproj
@@ -683,6 +683,7 @@
<Compile Include="src\crypto\IKeyUnwrapper.cs" />
<Compile Include="src\crypto\IKeyWrapper.cs" />
<Compile Include="src\crypto\IMac.cs" />
+ <Compile Include="src\crypto\IMacDerivationFunction.cs" />
<Compile Include="src\crypto\IMacFactory.cs" />
<Compile Include="src\crypto\IRawAgreement.cs" />
<Compile Include="src\crypto\IRsa.cs" />
@@ -841,6 +842,9 @@
<Compile Include="src\crypto\generators\GOST3410ParametersGenerator.cs" />
<Compile Include="src\crypto\generators\Kdf1BytesGenerator.cs" />
<Compile Include="src\crypto\generators\Kdf2BytesGenerator.cs" />
+ <Compile Include="src\crypto\generators\KDFCounterBytesGenerator.cs" />
+ <Compile Include="src\crypto\generators\KDFDoublePipelineIterationBytesGenerator.cs" />
+ <Compile Include="src\crypto\generators\KDFFeedbackBytesGenerator.cs" />
<Compile Include="src\crypto\generators\Mgf1BytesGenerator.cs" />
<Compile Include="src\crypto\generators\NaccacheSternKeyPairGenerator.cs" />
<Compile Include="src\crypto\generators\OpenSSLPBEParametersGenerator.cs" />
@@ -957,6 +961,9 @@
<Compile Include="src\crypto\parameters\ISO18033KDFParameters.cs" />
<Compile Include="src\crypto\parameters\IesParameters.cs" />
<Compile Include="src\crypto\parameters\IesWithCipherParameters.cs" />
+ <Compile Include="src\crypto\parameters\KDFCounterParameters.cs" />
+ <Compile Include="src\crypto\parameters\KDFDoublePipelineIterationParameters.cs" />
+ <Compile Include="src\crypto\parameters\KDFFeedbackParameters.cs" />
<Compile Include="src\crypto\parameters\KdfParameters.cs" />
<Compile Include="src\crypto\parameters\KeyParameter.cs" />
<Compile Include="src\crypto\parameters\MgfParameters.cs" />
diff --git a/crypto/BouncyCastle.iOS.csproj b/crypto/BouncyCastle.iOS.csproj
index a90f01785..03bcf2835 100644
--- a/crypto/BouncyCastle.iOS.csproj
+++ b/crypto/BouncyCastle.iOS.csproj
@@ -684,6 +684,7 @@
<Compile Include="src\crypto\IKeyUnwrapper.cs" />
<Compile Include="src\crypto\IKeyWrapper.cs" />
<Compile Include="src\crypto\IMac.cs" />
+ <Compile Include="src\crypto\IMacDerivationFunction.cs" />
<Compile Include="src\crypto\IMacFactory.cs" />
<Compile Include="src\crypto\IRawAgreement.cs" />
<Compile Include="src\crypto\IRsa.cs" />
@@ -842,6 +843,9 @@
<Compile Include="src\crypto\generators\GOST3410ParametersGenerator.cs" />
<Compile Include="src\crypto\generators\Kdf1BytesGenerator.cs" />
<Compile Include="src\crypto\generators\Kdf2BytesGenerator.cs" />
+ <Compile Include="src\crypto\generators\KDFCounterBytesGenerator.cs" />
+ <Compile Include="src\crypto\generators\KDFDoublePipelineIterationBytesGenerator.cs" />
+ <Compile Include="src\crypto\generators\KDFFeedbackBytesGenerator.cs" />
<Compile Include="src\crypto\generators\Mgf1BytesGenerator.cs" />
<Compile Include="src\crypto\generators\NaccacheSternKeyPairGenerator.cs" />
<Compile Include="src\crypto\generators\OpenSSLPBEParametersGenerator.cs" />
@@ -958,6 +962,9 @@
<Compile Include="src\crypto\parameters\ISO18033KDFParameters.cs" />
<Compile Include="src\crypto\parameters\IesParameters.cs" />
<Compile Include="src\crypto\parameters\IesWithCipherParameters.cs" />
+ <Compile Include="src\crypto\parameters\KDFCounterParameters.cs" />
+ <Compile Include="src\crypto\parameters\KDFDoublePipelineIterationParameters.cs" />
+ <Compile Include="src\crypto\parameters\KDFFeedbackParameters.cs" />
<Compile Include="src\crypto\parameters\KdfParameters.cs" />
<Compile Include="src\crypto\parameters\KeyParameter.cs" />
<Compile Include="src\crypto\parameters\MgfParameters.cs" />
diff --git a/crypto/crypto.csproj b/crypto/crypto.csproj
index 01e6b24a3..74a372a54 100644
--- a/crypto/crypto.csproj
+++ b/crypto/crypto.csproj
@@ -3274,6 +3274,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\IMacDerivationFunction.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\IMacFactory.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -4074,12 +4079,27 @@
BuildAction = "Compile"
/>
<File
- RelPath = "src\crypto\generators\KDF1BytesGenerator.cs"
+ RelPath = "src\crypto\generators\Kdf1BytesGenerator.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
- RelPath = "src\crypto\generators\KDF2BytesGenerator.cs"
+ RelPath = "src\crypto\generators\Kdf2BytesGenerator.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\generators\KDFCounterBytesGenerator.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\generators\KDFDoublePipelineIterationBytesGenerator.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\generators\KDFFeedbackBytesGenerator.cs"
SubType = "Code"
BuildAction = "Compile"
/>
@@ -4674,7 +4694,22 @@
BuildAction = "Compile"
/>
<File
- RelPath = "src\crypto\parameters\KDFParameters.cs"
+ RelPath = "src\crypto\parameters\KDFCounterParameters.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\parameters\KDFDoublePipelineIterationParameters.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\parameters\KDFFeedbackParameters.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\parameters\KdfParameters.cs"
SubType = "Code"
BuildAction = "Compile"
/>
@@ -8108,6 +8143,34 @@
BuildAction = "EmbeddedResource"
/>
<File
+ RelPath = "test\data\crypto\cavp\original_KDFCTR_gen.rsp"
+ BuildAction = "EmbeddedResource"
+ />
+ <File
+ RelPath = "test\data\crypto\cavp\KDFCTR_gen.rsp"
+ BuildAction = "EmbeddedResource"
+ />
+ <File
+ RelPath = "test\data\crypto\cavp\KDFDblPipelineCounter_gen.rsp"
+ BuildAction = "EmbeddedResource"
+ />
+ <File
+ RelPath = "test\data\crypto\cavp\KDFDblPipelineNoCounter_gen.rsp"
+ BuildAction = "EmbeddedResource"
+ />
+ <File
+ RelPath = "test\data\crypto\cavp\KDFFeedbackCounter_gen.rsp"
+ BuildAction = "EmbeddedResource"
+ />
+ <File
+ RelPath = "test\data\crypto\cavp\KDFFeedbackNoCounter_gen.rsp"
+ BuildAction = "EmbeddedResource"
+ />
+ <File
+ RelPath = "test\data\crypto\cavp\KDFFeedbackNoIV_gen.rsp"
+ BuildAction = "EmbeddedResource"
+ />
+ <File
RelPath = "test\data\hc256\hc128\ecrypt_HC-128.txt"
BuildAction = "EmbeddedResource"
/>
diff --git a/crypto/test/UnitTests.csproj b/crypto/test/UnitTests.csproj
index d8d798e61..8dee69be2 100644
--- a/crypto/test/UnitTests.csproj
+++ b/crypto/test/UnitTests.csproj
@@ -477,6 +477,13 @@
<EmbeddedResource Include="data\ThawteSGCCA.crl" />
<EmbeddedResource Include="data\crypto\SHA3TestVectors.txt" />
<EmbeddedResource Include="data\crypto\SHAKETestVectors.txt" />
+ <EmbeddedResource Include="data\crypto\cavp\original_KDFCTR_gen.rsp" />
+ <EmbeddedResource Include="data\crypto\cavp\KDFCTR_gen.rsp" />
+ <EmbeddedResource Include="data\crypto\cavp\KDFDblPipelineCounter_gen.rsp" />
+ <EmbeddedResource Include="data\crypto\cavp\KDFDblPipelineNoCounter_gen.rsp" />
+ <EmbeddedResource Include="data\crypto\cavp\KDFFeedbackCounter_gen.rsp" />
+ <EmbeddedResource Include="data\crypto\cavp\KDFFeedbackNoCounter_gen.rsp" />
+ <EmbeddedResource Include="data\crypto\cavp\KDFFeedbackNoIV_gen.rsp" />
<EmbeddedResource Include="data\PKITS\README.txt" />
<EmbeddedResource Include="data\PKITS\certs\AllCertificatesNoPoliciesTest2EE.crt" />
<EmbeddedResource Include="data\PKITS\certs\AllCertificatesSamePoliciesTest10EE.crt" />
diff --git a/crypto/test/data/crypto/cavp/[original]_KDFCTR_gen.rsp b/crypto/test/data/crypto/cavp/original_KDFCTR_gen.rsp
index 8121dc644..8121dc644 100644
--- a/crypto/test/data/crypto/cavp/[original]_KDFCTR_gen.rsp
+++ b/crypto/test/data/crypto/cavp/original_KDFCTR_gen.rsp
|