github.com/weedge/lib@v0.0.0-20230424045628-a36dcc1d90e4/client/mq/kafka/auth/scram_client.go (about)

     1  package auth
     2  
     3  import (
     4  	"crypto/sha256"
     5  	"crypto/sha512"
     6  
     7  	"github.com/xdg-go/scram"
     8  )
     9  
    10  var (
    11  	SHA256 scram.HashGeneratorFcn = sha256.New
    12  	SHA512 scram.HashGeneratorFcn = sha512.New
    13  )
    14  
    15  type XDGSCRAMClient struct {
    16  	*scram.Client
    17  	*scram.ClientConversation
    18  	scram.HashGeneratorFcn
    19  }
    20  
    21  func (x *XDGSCRAMClient) Begin(userName, password, authzID string) (err error) {
    22  	x.Client, err = x.HashGeneratorFcn.NewClient(userName, password, authzID)
    23  	if err != nil {
    24  		return err
    25  	}
    26  	x.ClientConversation = x.Client.NewConversation()
    27  	return nil
    28  }
    29  
    30  func (x *XDGSCRAMClient) Step(challenge string) (response string, err error) {
    31  	response, err = x.ClientConversation.Step(challenge)
    32  	return
    33  }
    34  
    35  func (x *XDGSCRAMClient) Done() bool {
    36  	return x.ClientConversation.Done()
    37  }