code: func prf30(result, secret, label, seed []byte) {
  	hashSHA1 := sha1.New()
  	hashMD5 := md5.New()
  
  	done := 0
  	i := 0
  	// RFC5246 section 6.3 says that the largest PRF output needed is 128
  	// bytes. Since no more ciphersuites will be added to SSLv3, this will
  	// remain true. Each iteration gives us 16 bytes so 10 iterations will
  	// be sufficient.
  	var b [11]byte
  	for done < len(result) {
  		for j := 0; j <= i; j++ {
  			b[j] = 'A' + byte(i)
  		}
  
  		hashSHA1.Reset()
  		hashSHA1.Write(b[:i+1])
  		hashSHA1.Write(secret)
  		hashSHA1.Write(seed)
  		digest := hashSHA1.Sum(nil)
  
  		hashMD5.Reset()
  		hashMD5.Write(secret)
  		hashMD5.Write(digest)
  
  		done += copy(result[done:], hashMD5.Sum(nil))
  		i++
  	}
  }
docs: // prf30 implements the SSL 3.0 pseudo-random function, as defined in
  // www.mozilla.org/projects/security/pki/nss/ssl/draft302.txt section 6.