Exemple #1
0
        public KdfResult Kdf(KdfParameterTls12 param, BitString fixedInfo = null)
        {
            var result      = _kdfVisitor.Kdf(param, fixedInfo);
            var dkmBytesLen = result.DerivedKey.BitLength.CeilingDivide(BitString.BITSINBYTE);

            // Modify a random byte within DKM
            result.DerivedKey[_random.GetRandomInt(0, dkmBytesLen)] += 2;

            return(result);
        }
Exemple #2
0
        public KdfResult Kdf(KdfParameterTls12 param, BitString fixedInfo = null)
        {
            var hashFunction = ShaAttributes.GetHashFunctionFromEnum(param.HashFunction);

            var kdf = _tlsFactory.GetTlsKdfInstance(TlsModes.v12, hashFunction);

            var result = kdf.DeriveKey(
                param.Z,
                param.InitiatorEphemeralData,
                param.ResponderEphemeralData,
                param.AdditionalInitiatorNonce,
                param.AdditionalResponderNonce,
                param.L);

            return(new KdfResult(result.DerivedKey));
        }
Exemple #3
0
        public KdfResult Kdf(KdfParameterTls12 param, BitString fixedInfo = null)
        {
            var zBytesLen = param.Z.BitLength.CeilingDivide(BitString.BITSINBYTE);

            var modifiedParam = new KdfParameterTls12()
            {
                L            = param.L,
                Z            = param.Z.GetDeepCopy(),
                HashFunction = param.HashFunction
            };

            // Modify a random byte within Z
            modifiedParam.Z[_random.GetRandomInt(0, zBytesLen)] += 2;

            return(_kdfVisitor.Kdf(modifiedParam, fixedInfo));
        }