public void TestCasesFromGhIssues(string label, ModeValues mode, DigestSizes digestSize, int keyLen, string zzHex, string otherInfoHex, string expectedHex)
        {
            var zz        = new BitString(zzHex);
            var otherInfo = new BitString(otherInfoHex);

            var hashFunction = new HashFunction(mode, digestSize);
            var sha          = _factory.GetShaInstance(hashFunction);
            var subject      = new AnsiX942Concat(sha);

            var param = new ConcatAns942Parameters
            {
                Zz        = zz,
                KeyLen    = keyLen,
                OtherInfo = otherInfo
            };

            var result = subject.DeriveKey(param);

            Assert.True(result.Success);
            Assert.AreEqual(new BitString(expectedHex).ToHex(), result.DerivedKey.ToHex());
        }
        // [TestCase(5)]
        // [TestCase(6)]
        // [TestCase(7)]
        public void TestMultipleBitLengthsOfZz(int bitsToDrop)
        {
            var zz = new BitString("51020F0B4423F066FFA2B9CA5FA536603F307A52048D7FBE4FA2D0A8F5B6ACF116BE68A28F6D21C37A4A76F082A5CE0D240FB84D6E3291C9B49E6865E76AB166934C701DB25A7FF77DE8849657244CB818B813B72D404D86DC1B0CFF64AFABFEE0CE24DF6DD6C537B6E58DBBC96DD4B18DDD0583699234B82BDDF4778236DD0B944E042BE5DA951E4B7D4962086964D0929F3641AB403CE4FA0AB9F2E500A5004786153E3E7740C41EA0C396773EC2D5D0E98837372491B97C42A336AEA3CF1F13C090CB3F45BA1AC67D763D09B9279D4158A6B41FB8C0E8515473F882174184EDDD5FAECC043E779DA7F0080CE31DE03B255DE038ACEC636F6CDF7DCD47B2C6757310179952B29F48DF510C2C204520C2313034DDB7080DE4F9018EA37756FEA41C285213E0216B5A3BA730AAC15C60EB72E5143656E2ADD533F7CACE1CCAE0100BDD789130A3B755669BC064DD31ECB3CFAB6E5766FA7194C982B79776D1F5FC1C1DECBE102096E14C7B30C8876757EB9F419002C6FC2DE88B98B1C784F3C0976447DC352D8BF56FBE255394E2FD3D7B5A4C9B4770");

            zz = zz.GetMostSignificantBits(zz.BitLength - bitsToDrop);
            var otherInfo = new BitString("82852BF64C6CF56399CC0E5F7ADAE2DF286B51E0D1A274BE949AF3D72A29CBB21F8AC17574BB12550804F4A8AA498082");

            var hashFunction = new HashFunction(ModeValues.SHA1, DigestSizes.d160);
            var sha          = _factory.GetShaInstance(hashFunction);
            var subject      = new AnsiX942Concat(sha);

            var param = new ConcatAns942Parameters
            {
                Zz        = zz,
                KeyLen    = 384,
                OtherInfo = otherInfo
            };

            var result = subject.DeriveKey(param);

            Assert.True(result.Success);
            Assert.AreEqual(new BitString("DD8469A101758AA949516B0AE4B8F6B56438A0A119575D3265163C6BBBEA2CB58629F387A1AA163D5AE164C5206E1DB5").ToHex(), result.DerivedKey.ToHex());
        }