AaltoTLS.PluginInterface.PseudoRandomFunction.CreateDeriveBytes C# (CSharp) Method

CreateDeriveBytes() public method

public CreateDeriveBytes ( byte secret, string label, byte seed ) : DeriveBytes
secret byte
label string
seed byte
return System.Security.Cryptography.DeriveBytes
        public virtual DeriveBytes CreateDeriveBytes(byte[] secret, string label, byte[] seed)
        {
            if (label != null) {
                /* Construct the final seed from (label + seed) */
                byte[] labelBytes = Encoding.ASCII.GetBytes(label);
                byte[] finalSeed = new byte[labelBytes.Length + seed.Length];

                Buffer.BlockCopy(labelBytes, 0, finalSeed, 0, labelBytes.Length);
                Buffer.BlockCopy(seed, 0, finalSeed, labelBytes.Length, seed.Length);

                return CreateDeriveBytes(secret, finalSeed);
            } else {
                return CreateDeriveBytes(secret, seed);
            }
        }

Same methods

PseudoRandomFunction::CreateDeriveBytes ( byte secret, byte seed ) : DeriveBytes

Usage Example

 public override byte[] GetMasterSecret(PseudoRandomFunction prf, byte[] seed)
 {
     // TODO: Add more PRF IDs and their respective master secrets
     byte[] prfID = prf.CreateDeriveBytes(new byte[0], new byte[0]).GetBytes(48);
     if (CompareArrays(prfID, SSLv3ID)) {
         return GetSSLv3MasterSecret(seed);
     } else if (CompareArrays(prfID, TLSv1ID)) {
         return GetTLSv1MasterSecret(seed);
     } else {
         throw new Exception("Unidentified PRF while getting ECDHE master secret");
     }
 }
All Usage Examples Of AaltoTLS.PluginInterface.PseudoRandomFunction::CreateDeriveBytes