示例#1
0
        public void ShouldKmac(
            string label,
            string fixedInfoPattern,
            Kda kdfType,
            KdaOneStepAuxFunction kdfAuxFunction,
            int l,
            BitString salt,
            BitString z,
            BitString algorithmId,
            BitString uPartyId,
            BitString uEphemData,
            BitString vPartyid,
            BitString vEphemData,
            BitString issueFixedData,
            BitString issueDkm,
            BitString expectedDkm)
        {
            var param = new KdfParameterOneStep()
            {
                L                  = l,
                Salt               = salt,
                Z                  = z,
                AlgorithmId        = algorithmId,
                AuxFunction        = kdfAuxFunction,
                FixedInfoPattern   = fixedInfoPattern,
                FixedInputEncoding = FixedInfoEncoding.Concatenation
            };

            var fixedInfoFactory   = new FixedInfoFactory(new FixedInfoStrategyFactory());
            var fixedInfoParameter = new FixedInfoParameter()
            {
                AlgorithmId      = algorithmId,
                FixedInfoPattern = fixedInfoPattern,
                Encoding         = FixedInfoEncoding.Concatenation,
                L    = l,
                Salt = salt
            };

            fixedInfoParameter.SetFixedInfo(
                new PartyFixedInfo(uPartyId, uEphemData),
                new PartyFixedInfo(vPartyid, vEphemData));

            var fixedInfo = fixedInfoFactory
                            .Get()
                            .Get(fixedInfoParameter);

            var kdf = _kdfOneStepFactory.GetInstance(param.AuxFunction, true);

            var result = kdf.DeriveKey(param.Z, param.L, fixedInfo, param.Salt);

            Assert.AreEqual(issueFixedData.ToHex(), fixedInfo.ToHex(), nameof(issueFixedData));
            Assert.AreEqual(issueDkm.ToHex(), result.DerivedKey.ToHex(), nameof(issueDkm));
            //Assert.AreEqual(expectedDkm.ToHex(), result.DerivedKey.ToHex(), nameof(expectedDkm));
        }
示例#2
0
        public void ShouldKdfWithEntropyBits()
        {
            var fixedInfo = new FixedInfoFactory(new FixedInfoStrategyFactory()).Get()
                            .Get(new FixedInfoParameter()
            {
                FixedInfoPattern = "entropyBits[96]",
                EntropyBits      = new BitString("1EE48EE4593B28D592D6ABFD"),
                L        = 256,
                Encoding = FixedInfoEncoding.Concatenation,
            });
            var result = _kdfVisitor.Kdf(new KdfParameterOneStep()
            {
                L           = 256,
                Z           = new BitString("A641EE6887A5C679A6398B398DC14394B8BE1750A38616A80A5C3D3A59DDB302"),
                AuxFunction = KdaOneStepAuxFunction.SHA2_D256
            }, fixedInfo);

            var expectedDkm = new BitString("C56E3F1ADA02DB5511C7941839A68A4CAFD7B3F3BBFDBAAD430F49619FFEDF28");

            Assert.AreEqual(expectedDkm.ToHex(), result.DerivedKey.ToHex());
        }