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