Improve sasl2 user agent id stuff.

sasl2
Martin Dosch 6 months ago
parent c7376832ce
commit b2d090a623
No known key found for this signature in database
GPG Key ID: 52A57CFCE13D657D

@ -41,6 +41,7 @@ const (
oxAltBody = "This message is encrypted (XEP-0373: OpenPGP for XMPP)." oxAltBody = "This message is encrypted (XEP-0373: OpenPGP for XMPP)."
pubsubPubOptions = "http://jabber.org/protocol/pubsub#publish-options" pubsubPubOptions = "http://jabber.org/protocol/pubsub#publish-options"
strChat = "chat" strChat = "chat"
strEmpty = ""
strError = "error" strError = "error"
strGroupchat = "groupchat" strGroupchat = "groupchat"
strHeadline = "headline" strHeadline = "headline"

@ -63,7 +63,7 @@ func getClientID() (string, error) {
clientID = uuid.NewString() clientID = uuid.NewString()
file, err := os.Create(clientIDLoc) file, err := os.Create(clientIDLoc)
if err != nil { if err != nil {
return strError, fmt.Errorf("getClientID: failed to create clientid file: %w", err) return strEmpty, fmt.Errorf("getClientID: failed to create clientid file: %w", err)
} }
defer file.Close() defer file.Close()
if runtime.GOOS != "windows" { if runtime.GOOS != "windows" {
@ -73,7 +73,7 @@ func getClientID() (string, error) {
} }
_, err = file.Write([]byte(clientID)) _, err = file.Write([]byte(clientID))
if err != nil { if err != nil {
return strError, fmt.Errorf("getClientID: failed to write client id file: %w", err) return strEmpty, fmt.Errorf("getClientID: failed to write client id file: %w", err)
} }
} else { } else {
clientID = buf.String() clientID = buf.String()

@ -431,7 +431,7 @@ func (c *Client) init(o *Options) error {
return err return err
} }
var mechanism, channelBinding, clientFirstMessage, clientFinalMessageBare, authMessage string var mechanism, channelBinding, clientFirstMessage, clientFinalMessageBare, authMessage string
var bind2Data, resource, userAgentSW, userAgentDev string var bind2Data, resource, userAgentSW, userAgentDev, userAgentID string
var serverSignature, keyingMaterial []byte var serverSignature, keyingMaterial []byte
var scramPlus, ok, tlsConnOK, tls13, serverEndPoint, sasl2, bind2 bool var scramPlus, ok, tlsConnOK, tls13, serverEndPoint, sasl2, bind2 bool
var cbsSlice, mechSlice []string var cbsSlice, mechSlice []string
@ -601,9 +601,12 @@ func (c *Client) init(o *Options) error {
if o.UserAgentDev != "" { if o.UserAgentDev != "" {
userAgentDev = fmt.Sprintf("<device>%s</device>", o.UserAgentDev) userAgentDev = fmt.Sprintf("<device>%s</device>", o.UserAgentDev)
} }
if o.UserAgentID != "" {
userAgentID = fmt.Sprintf(" id='%s'", o.UserAgentID)
}
fmt.Fprintf(c.stanzaWriter, fmt.Fprintf(c.stanzaWriter,
"<authenticate xmlns='%s' mechanism='%s'><initial-response>%s</initial-response><user-agent id='%s'>%s%s</user-agent>%s</authenticate>\n", "<authenticate xmlns='%s' mechanism='%s'><initial-response>%s</initial-response><user-agent%s>%s%s</user-agent>%s</authenticate>\n",
nsSASL2, mechanism, base64.StdEncoding.EncodeToString([]byte(clientFirstMessage)), o.UserAgentID, userAgentSW, userAgentDev, bind2Data) nsSASL2, mechanism, base64.StdEncoding.EncodeToString([]byte(clientFirstMessage)), userAgentID, userAgentSW, userAgentDev, bind2Data)
} else { } else {
fmt.Fprintf(c.stanzaWriter, "<auth xmlns='%s' mechanism='%s'>%s</auth>\n", fmt.Fprintf(c.stanzaWriter, "<auth xmlns='%s' mechanism='%s'>%s</auth>\n",
nsSASL, mechanism, base64.StdEncoding.EncodeToString([]byte(clientFirstMessage))) nsSASL, mechanism, base64.StdEncoding.EncodeToString([]byte(clientFirstMessage)))

Loading…
Cancel
Save