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 }