--- /dev/null
+pkg hash, type XOF interface { BlockSize, Read, Reset, Write } #69518
+pkg hash, type XOF interface, BlockSize() int #69518
+pkg hash, type XOF interface, Read([]uint8) (int, error) #69518
+pkg hash, type XOF interface, Reset() #69518
+pkg hash, type XOF interface, Write([]uint8) (int, error) #69518
--- /dev/null
+The new [XOF](/pkg/hash#XOF) interface can be implemented by "extendable output
+functions", which are hash functions with arbitrary or unlimited output length
+such as [BLAKE2Xb](https://pkg.go.dev/golang.org/x/crypto/blake2b).
Hash
Sum64() uint64
}
+
+// XOF (extendable output function) is a hash function with arbitrary or unlimited output length.
+type XOF interface {
+ // Write absorbs more data into the XOF's state. It panics if called
+ // after Read.
+ io.Writer
+
+ // Read reads more output from the XOF. It may return io.EOF if there
+ // is a limit to the XOF output length.
+ io.Reader
+
+ // Reset resets the XOF to its initial state.
+ Reset()
+
+ // BlockSize returns the XOF's underlying block size.
+ // The Write method must be able to accept any amount
+ // of data, but it may operate more efficiently if all writes
+ // are a multiple of the block size.
+ BlockSize() int
+}