code: func finishedSum30(md5, sha1 hash.Hash, masterSecret []byte, magic []byte) []byte {
  	md5.Write(magic)
  	md5.Write(masterSecret)
  	md5.Write(ssl30Pad1[:])
  	md5Digest := md5.Sum(nil)
  
  	md5.Reset()
  	md5.Write(masterSecret)
  	md5.Write(ssl30Pad2[:])
  	md5.Write(md5Digest)
  	md5Digest = md5.Sum(nil)
  
  	sha1.Write(magic)
  	sha1.Write(masterSecret)
  	sha1.Write(ssl30Pad1[:40])
  	sha1Digest := sha1.Sum(nil)
  
  	sha1.Reset()
  	sha1.Write(masterSecret)
  	sha1.Write(ssl30Pad2[:40])
  	sha1.Write(sha1Digest)
  	sha1Digest = sha1.Sum(nil)
  
  	ret := make([]byte, len(md5Digest)+len(sha1Digest))
  	copy(ret, md5Digest)
  	copy(ret[len(md5Digest):], sha1Digest)
  	return ret
  }
docs: // finishedSum30 calculates the contents of the verify_data member of a SSLv3
  // Finished message given the MD5 and SHA1 hashes of a set of handshake
  // messages.