code: func mgf1XOR(out []byte, hash hash.Hash, seed []byte) {
  	var counter [4]byte
  	var digest []byte
  
  	done := 0
  	for done < len(out) {
  		hash.Write(seed)
  		hash.Write(counter[0:4])
  		digest = hash.Sum(digest[:0])
  		hash.Reset()
  
  		for i := 0; i < len(digest) && done < len(out); i++ {
  			out[done] ^= digest[i]
  			done++
  		}
  		incCounter(&counter)
  	}
  }
docs: // mgf1XOR XORs the bytes in out with a mask generated using the MGF1 function
  // specified in PKCS#1 v2.1.