Ejemplo n.º 1
0
        private static DerivedKeys CalculateDerivedKeys(byte[] masterSecret)
        {
            Hkdf kdf = new HkdFv3();

            byte[]   derivedSecretBytes = kdf.DeriveSecrets(masterSecret, Encoding.UTF8.GetBytes("WhisperText"), 64);
            byte[][] derivedSecrets     = ByteUtil.Split(derivedSecretBytes, 32, 32);

            return(new DerivedKeys(new RootKey(kdf, derivedSecrets[0]),
                                   new ChainKey(kdf, derivedSecrets[1], 0)));
        }
Ejemplo n.º 2
0
        public SenderMessageKey(uint iteration, byte[] seed)
        {
            byte[]   derivative = new HkdFv3().DeriveSecrets(seed, Encoding.UTF8.GetBytes("WhisperGroup"), 48);
            byte[][] parts      = ByteUtil.Split(derivative, 16, 32);

            _iteration = iteration;
            _seed      = seed;
            _iv        = parts[0];
            _cipherKey = parts[1];
        }