public CreateDeriveBytes ( byte secret, string label, byte seed ) : |
||
secret | byte | |
label | string | |
seed | byte | |
리턴 |
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);
}
}
PseudoRandomFunction::CreateDeriveBytes ( byte secret, byte seed ) : |
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"); } }