Example #1
0
        /// <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);
        }