/// <summary> /// Finalize the key exchange, preparing the CipherSuite for actual use. /// </summary> /// <param name="peer_pk">Our peer's private key/key exchange information.</param> /// <returns>The raw shared secret.</returns> public byte[] FinalizeKeyExchange(byte[] peer_pk) { var shared = KeyExchange.FinalizeKeyExchange(peer_pk); HKDFAdditionalInfo = string.Format(HKDFAdditionalInfo, Cipher.HumanName, KeyExchange.HumanName); Cipher.Initialize(CalculateHKDF(shared, Cipher.SecretBytes)); MAC.Initialize(CalculateHKDF(shared, MAC.SecretBytes)); return(shared); }