func Sha256(authFn func(context.Context) (Auth, error)) sasl.Mechanism {
	return scram{authFn, sha256.New, "SCRAM-SHA-256"}
}
Sha256 returns a SCRAM-SHA-256 sasl mechanism that will call authFn
whenever authentication is needed. The returned Auth is used for a single
session.
package scram
import (
	"bytes"
	"context"
	"crypto/hmac"
	"crypto/rand"
	"crypto/sha256"
	"crypto/sha512"
	"encoding/base64"
	"errors"
	"fmt"
	"hash"
	"strconv"
	"strings"
	"golang.org/x/crypto/pbkdf2"
	"github.com/twmb/franz-go/pkg/sasl"
)
type Auth struct {
	Zid string
	User string
	Pass string
	Nonce []byte
	IsToken bool
	_internal struct{}  
}
func (a Auth) AsSha256Mechanism() sasl.Mechanism {
	return Sha256(func(context.Context) (Auth, error) {
		return a, nil
	})
}
func (a Auth) AsSha512Mechanism() sasl.Mechanism {
	return Sha512(func(context.Context) (Auth, error) {
		return a, nil
	})
}