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()); }