Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package go-sendxmpp for openSUSE:Factory checked in at 2024-01-09 20:51:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/go-sendxmpp (Old) and /work/SRC/openSUSE:Factory/.go-sendxmpp.new.21961 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "go-sendxmpp" Tue Jan 9 20:51:28 2024 rev:9 rq:1137737 version:0.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/go-sendxmpp/go-sendxmpp.changes 2023-11-14 21:42:39.735797464 +0100 +++ /work/SRC/openSUSE:Factory/.go-sendxmpp.new.21961/go-sendxmpp.changes 2024-01-09 20:51:39.760603348 +0100 @@ -1,0 +2,11 @@ +Tue Jan 9 14:09:06 UTC 2024 - Michael Vetter <[email protected]> + +- Update to 0.8.0: + Added: + * Add no parameter --scram-mech-pinning. + Changed: + * Refuse to upload a file if upload slot doesn't provide https. + * Use XEP-0474 instead of SCRAM mechanism pinning to prevent + downgrade attacks + +------------------------------------------------------------------- Old: ---- go-sendxmpp-0.7.0.tar.gz New: ---- go-sendxmpp-0.8.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ go-sendxmpp.spec ++++++ --- /var/tmp/diff_new_pack.GoUHgF/_old 2024-01-09 20:51:40.692637234 +0100 +++ /var/tmp/diff_new_pack.GoUHgF/_new 2024-01-09 20:51:40.692637234 +0100 @@ -1,7 +1,7 @@ # # spec file for package go-sendxmpp # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: go-sendxmpp -Version: 0.7.0 +Version: 0.8.0 Release: 0 Summary: A little tool to send messages to an XMPP contact or MUC License: BSD-2-Clause ++++++ _service ++++++ --- /var/tmp/diff_new_pack.GoUHgF/_old 2024-01-09 20:51:40.720638252 +0100 +++ /var/tmp/diff_new_pack.GoUHgF/_new 2024-01-09 20:51:40.724638397 +0100 @@ -3,7 +3,7 @@ <param name="url">https://salsa.debian.org/mdosch/go-sendxmpp.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.7.0</param> + <param name="revision">v0.8.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">disable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ go-sendxmpp-0.7.0.tar.gz -> go-sendxmpp-0.8.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/CHANGELOG.md new/go-sendxmpp-0.8.0/CHANGELOG.md --- old/go-sendxmpp-0.7.0/CHANGELOG.md 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/CHANGELOG.md 2024-01-09 11:37:22.000000000 +0100 @@ -1,10 +1,18 @@ # Changelog +## [v0.8.0] 2024-01-09 +### Added +- Add no parameter `--scram-mech-pinning`. + +### Changed +- Refuse to upload a file if upload slot doesn't provide https. +- Use XEP-0474 instead of SCRAM mechanism pinning to prevent downgrade attacks (requires go-xmpp commit 39f5b80375b6f6f266df37b4a4adcbeb606ffec2). + ## [v0.7.0] 2023-11-11 ### Added - Reply to XEP-0092 software version requests. -- Add support for PLUS variants of SCRAM authentification mechanisms (requires go-xmpp commit 4c385a334c606e8bc387f0a3d4d84975802b3984). -- Add pinning of last used authentification mechanism if a SCRAM mechanism was used. +- Add support for PLUS variants of SCRAM authentication mechanisms (requires go-xmpp commit 4c385a334c606e8bc387f0a3d4d84975802b3984). +- Add pinning of last used authentication mechanism if a SCRAM mechanism was used. ### Changed - Print every stanza in a new line (requires go-xmpp commit 31c7eb6919b67b18e901dc45a8e5681040ea7f31). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/README.md new/go-sendxmpp-0.8.0/README.md --- old/go-sendxmpp-0.7.0/README.md 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/README.md 2024-01-09 11:37:22.000000000 +0100 @@ -76,6 +76,7 @@ ```plain Usage: go-sendxmpp [-cdilnt] [-a value] [-f value] [--headline] [--help] [-h value] [-j value] [-m value] [--muc-password value] [--oob-file value] [--ox] [--ox-delete-nodes] [--ox-genprivkey-rsa] [--ox-genprivkey-x25519] [--ox-import-privkey value] [--ox-passphrase value] [-p value] [--raw] [--timeout value] [--tls-version value] [-u value] [--version] [recipientsâ¦] +Usage: go-sendxmpp [-cdilnt] [-a value] [-f value] [--headline] [--help] [-h value] [-j value] [-m value] [--muc-password value] [--oob-file value] [--ox] [--ox-delete-nodes] [--ox-genprivkey-rsa] [--ox-genprivkey-x25519] [--ox-import-privkey value] [--ox-passphrase value] [-p value] [--raw] [--scram-mech-pinning value] [--timeout value] [--tls-version value] [-u value] [--version] [recipientsâ¦] -a, --alias=value Set alias/nicknamefor chatrooms. -c, --chatroom Send message to a chatroom. -d, --debug Show debugging info. @@ -114,6 +115,8 @@ -p, --password=value Password for XMPP account. --raw Send raw XML. + --scram-mech-pinning=value + Enforce the use of a certain SCRAM authentication mechanism. --timeout=value Connection timeout in seconds. [10] -t, --tls Use direct TLS. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/connect.go new/go-sendxmpp-0.8.0/connect.go --- old/go-sendxmpp-0.7.0/connect.go 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/connect.go 2024-01-09 11:37:22.000000000 +0100 @@ -9,7 +9,7 @@ "net" "strings" - "github.com/mattn/go-xmpp" // BSD-3-Clause + "github.com/mattn/go-xmpp" // BSD-3-Clause "salsa.debian.org/mdosch/xmppsrv" // BSD-2-Clause ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/const.go new/go-sendxmpp-0.8.0/const.go --- old/go-sendxmpp-0.7.0/const.go 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/const.go 2024-01-09 11:37:22.000000000 +0100 @@ -5,7 +5,7 @@ package main const ( - version = "0.7.0" + version = "0.8.0" // defaults defaultBufferSize = 100 defaultConfigRowSep = 2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/go.mod new/go-sendxmpp-0.8.0/go.mod --- old/go-sendxmpp-0.7.0/go.mod 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/go.mod 2024-01-09 11:37:22.000000000 +0100 @@ -4,9 +4,9 @@ require ( github.com/ProtonMail/gopenpgp/v2 v2.7.4 - github.com/beevik/etree v1.2.0 + github.com/beevik/etree v1.3.0 github.com/gabriel-vasile/mimetype v1.4.3 - github.com/mattn/go-xmpp v0.0.2-0.20231111141053-31c7eb6919b6 + github.com/mattn/go-xmpp v0.0.2-0.20240109092456-39f5b80375b6 github.com/pborman/getopt/v2 v2.1.0 salsa.debian.org/mdosch/xmppsrv v0.2.5 ) @@ -14,10 +14,10 @@ require ( github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c // indirect github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f // indirect - github.com/cloudflare/circl v1.3.6 // indirect + github.com/cloudflare/circl v1.3.7 // indirect github.com/pkg/errors v0.9.1 // indirect - golang.org/x/crypto v0.15.0 // indirect - golang.org/x/net v0.18.0 // indirect - golang.org/x/sys v0.14.0 // indirect + golang.org/x/crypto v0.18.0 // indirect + golang.org/x/net v0.20.0 // indirect + golang.org/x/sys v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/go.sum new/go-sendxmpp-0.8.0/go.sum --- old/go-sendxmpp-0.7.0/go.sum 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/go.sum 2024-01-09 11:37:22.000000000 +0100 @@ -5,19 +5,19 @@ github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw= github.com/ProtonMail/gopenpgp/v2 v2.7.4 h1:Vz/8+HViFFnf2A6XX8JOvZMrA6F5puwNvvF21O1mRlo= github.com/ProtonMail/gopenpgp/v2 v2.7.4/go.mod h1:IhkNEDaxec6NyzSI0PlxapinnwPVIESk8/76da3Ct3g= -github.com/beevik/etree v1.2.0 h1:l7WETslUG/T+xOPs47dtd6jov2Ii/8/OjCldk5fYfQw= -github.com/beevik/etree v1.2.0/go.mod h1:aiPf89g/1k3AShMVAzriilpcE4R/Vuor90y83zVZWFc= +github.com/beevik/etree v1.3.0 h1:hQTc+pylzIKDb23yYprodCWWTt+ojFfUZyzU09a/hmU= +github.com/beevik/etree v1.3.0/go.mod h1:aiPf89g/1k3AShMVAzriilpcE4R/Vuor90y83zVZWFc= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= -github.com/cloudflare/circl v1.3.6 h1:/xbKIqSHbZXHwkhbrhrt2YOHIwYJlXH94E3tI/gDlUg= -github.com/cloudflare/circl v1.3.6/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= -github.com/mattn/go-xmpp v0.0.2-0.20231111141053-31c7eb6919b6 h1:ZF2XyCIy6BWPwtUDDZKVAe69plDfDEDlZMnLMU7V2bQ= -github.com/mattn/go-xmpp v0.0.2-0.20231111141053-31c7eb6919b6/go.mod h1:HBSVZzomYzxh5UNQq6sXImCsgh01O55Pvb6fopW/u74= +github.com/mattn/go-xmpp v0.0.2-0.20240109092456-39f5b80375b6 h1:ks0S9C3JZYldBbuk5TEvbH4H6I1dV1ZannTY3A33EkI= +github.com/mattn/go-xmpp v0.0.2-0.20240109092456-39f5b80375b6/go.mod h1:HBSVZzomYzxh5UNQq6sXImCsgh01O55Pvb6fopW/u74= github.com/pborman/getopt/v2 v2.1.0 h1:eNfR+r+dWLdWmV8g5OlpyrTYHkhVNxHBdN2cCrJmOEA= github.com/pborman/getopt/v2 v2.1.0/go.mod h1:4NtW75ny4eBw9fO1bhtNdYTlZKYX5/tBLtsOpwKIKd0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -33,8 +33,10 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -45,8 +47,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -61,8 +63,10 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -71,6 +75,8 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/handlemechanisminfo.go new/go-sendxmpp-0.8.0/handlemechanisminfo.go --- old/go-sendxmpp-0.7.0/handlemechanisminfo.go 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/handlemechanisminfo.go 1970-01-01 01:00:00.000000000 +0100 @@ -1,72 +0,0 @@ -// Copyright Martin Dosch. -// Use of this source code is governed by the BSD-2-clause -// license that can be found in the LICENSE file. - -package main - -import ( - "errors" - "fmt" - "os" - "os/user" - "strings" -) - -func findPinFilePath(username string) (string, error) { - osDataDir := os.Getenv("$XDG_DATA_HOME") - if osDataDir == "" { - // Get the current user. - curUser, err := user.Current() - if err != nil { - return strError, fmt.Errorf("findConfig: failed to get current user: %w", err) - } - // Get home directory. - home := curUser.HomeDir - if home == "" { - return strError, errors.New("no home directory found") - } - osDataDir = home + "/.local/share/" - } - authPinFilePath := osDataDir + "/go-sendxmpp/" + username + "/" - - return authPinFilePath, nil -} - -// Opens the auth mechanism pin file and returns the value. -func parsePinFile(user string) (string, error) { - // Find auth pin file - authPinFile, err := findPinFilePath(user) - if err != nil { - return "", err - } - - // Read file. - m, err := os.ReadFile(authPinFile + "authmechanism") - if err != nil { - return "", err - } - // Strip trailing newline. - mechanism := strings.TrimSuffix(string(m), "\n") - - return mechanism, nil -} - -// Writes the used mechanism to the auth pin file. -func writePinFile(mechanism string, user string) error { - // Find auth pin file - authPinFilePath, err := findPinFilePath(user) - if err != nil { - return err - } - if _, err = os.Stat(authPinFilePath); os.IsNotExist(err) { - err = os.MkdirAll(authPinFilePath, defaultDirRights) - if err != nil { - return fmt.Errorf("writePinFile: could not create folder for auth pin file: %w", err) - } - } - err = os.WriteFile(authPinFilePath+"authmechanism", []byte(mechanism+"\n"), 0o400) - if err != nil { - return err - } - return nil -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/httpupload.go new/go-sendxmpp-0.8.0/httpupload.go --- old/go-sendxmpp-0.7.0/httpupload.go 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/httpupload.go 2024-01-09 11:37:22.000000000 +0100 @@ -14,10 +14,11 @@ "path/filepath" "regexp" "strconv" + "strings" "github.com/beevik/etree" // BSD-2-clause "github.com/gabriel-vasile/mimetype" // MIT License - "github.com/mattn/go-xmpp" // BSD-3-Clause + "github.com/mattn/go-xmpp" // BSD-3-Clause ) func httpUpload(client *xmpp.Client, iqc chan xmpp.IQ, jserver string, filePath string) string { @@ -185,7 +186,9 @@ if iqHTTPUploadSlotXMLPutURL == nil { log.Fatal("http-upload: no url attribute") } - + if !strings.HasPrefix(iqHTTPUploadSlotXMLPutURL.Value, "https://") { + log.Fatal("http-upload: upload slot does not provide https") + } // Upload file httpClient := &http.Client{} req, err := http.NewRequest(http.MethodPut, iqHTTPUploadSlotXMLPutURL.Value, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/main.go new/go-sendxmpp-0.8.0/main.go --- old/go-sendxmpp-0.7.0/main.go 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/main.go 2024-01-09 11:37:22.000000000 +0100 @@ -18,7 +18,7 @@ "time" "github.com/ProtonMail/gopenpgp/v2/crypto" // MIT License - "github.com/mattn/go-xmpp" // BSD-3-Clause + "github.com/mattn/go-xmpp" // BSD-3-Clause "github.com/pborman/getopt/v2" // BSD-3-Clause ) @@ -122,6 +122,7 @@ flagOxDeleteNodes := getopt.BoolLong("ox-delete-nodes", 0, "Delete existing OpenPGP nodes on the server.") flagOOBFile := getopt.StringLong("oob-file", 0, "", "URL to send a file as out of band data.") flagHeadline := getopt.BoolLong("headline", 0, "Send message as type headline.") + flagSCRAMPinning := getopt.StringLong("scram-mech-pinning", 0, "", "Enforce the use of a certain SCRAM authentication mechanism.") // Parse command line flags. getopt.Parse() @@ -156,6 +157,13 @@ log.Fatal("Can't use message type headline for groupchat messages.") } + switch *flagSCRAMPinning { + case "", "SCRAM-SHA-1", "SCRAM-SHA-1-PLUS", "SCRAM-SHA-256", "SCRAM-SHA-256-PLUS", + "SCRAM-SHA-512", "SCRAM-SHA-512-PLUS": + default: + log.Fatal("Unknown SCRAM mechanism: ", *flagSCRAMPinning) + } + // Read recipients from command line and quit if none are specified. // For listening or sending raw XML it's not required to specify a recipient except // when sending raw messages to MUCs (go-sendxmpp will join the MUC automatically). @@ -229,9 +237,6 @@ os.Exit(0) } - // Check whether an authentification mechanism is pinned. - authMech, _ := parsePinFile(user) - // Set XMPP connection options. options := xmpp.Options{ Host: server, @@ -249,7 +254,7 @@ StartTLS: !*flagDirectTLS, Debug: *flagDebug, TLSConfig: &tlsConfig, - Mechanism: authMech, + Mechanism: *flagSCRAMPinning, } // Read message from file. @@ -296,14 +301,6 @@ if err != nil { log.Fatal(err) } - // If no authentification mechanism is pinned and a SCRAM mechanism is - // used, write the used mechanism to the pin file. - if authMech == "" && strings.HasPrefix(client.Mechanism, "SCRAM") { - err = writePinFile(client.Mechanism, user) - if err != nil { - log.Println("could not write authentification mechanism pin file:", err) - } - } iqc := make(chan xmpp.IQ, defaultBufferSize) msgc := make(chan xmpp.Chat, defaultBufferSize) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/man/go-sendxmpp.1 new/go-sendxmpp-0.8.0/man/go-sendxmpp.1 --- old/go-sendxmpp-0.7.0/man/go-sendxmpp.1 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/man/go-sendxmpp.1 2024-01-09 11:37:22.000000000 +0100 @@ -1,10 +1,10 @@ .\" generated with Ronn-NG/v0.9.1 .\" http://github.com/apjanke/ronn-ng/tree/0.9.1 -.TH "GO\-SENDXMPP" "1" "October 2023" "" +.TH "GO\-SENDXMPP" "1" "January 2024" "" .SH "NAME" \fBgo\-sendxmpp\fR \- A tool to send messages to an XMPP contact or MUC\. .SH "SYNOPSIS" -\fBgo\-sendxmpp\fR [\-cdilnt] [\-a value] [\-f value] [\-\-headline] [\-\-help] [\-h value] [\-j value] [\-m value] [\-\-muc\-password value] [\-\-oob\-file value] [\-\-ox] [\-\-ox\-delete\-nodes] [\-\-ox\-genprivkey\-rsa] [\-\-ox\-genprivkey\-x25519] [\-\-ox\-import\-privkey value] [\-\-ox\-passphrase value] [\-p value] [\-\-raw] [\-\-timeout value] [\-\-tls\-version value] [\-u value] [\-\-version] [recipientsâ¦] +\fBgo\-sendxmpp [\-cdilnt] [\-a value] [\-f value] [\-\-headline] [\-\-help] [\-h value] [\-j value] [\-m value] [\-\-muc\-password value] [\-\-oob\-file value] [\-\-ox] [\-\-ox\-delete\-nodes] [\-\-ox\-genprivkey\-rsa] [\-\-ox\-genprivkey\-x25519] [\-\-ox\-import\-privkey value] [\-\-ox\-passphrase value] [\-p value] [\-\-raw] [\-\-scram\-mech\-pinning value] [\-\-timeout value] [\-\-tls\-version value] [\-u value] [\-\-version] [recipientsâ¦]\fR .SH "DESCRIPTION" A tool to send messages to an XMPP contact or MUC inspired by (but not as powerful as) \fBsendxmpp\fR\. .br @@ -86,6 +86,9 @@ \fB\-\-raw\fR Send raw XML\. To send raw XML to a contact as normal chat message no contact must be specified\. To send raw XML to a MUC you have to specify the MUC via \fB\-c\fR and go\-sendxmpp will join the MUC\. .TP +\fB\-\-scram\-mech\-pinning=[<value>]\fR +Enforce the use of a certain SCRAM authentication mechanism\. Currently go\-sendxmpp supports \fISCRAM\-SHA\-1\fR, \fISCRAM\-SHA\-1\-PLUS\fR, \fISCRAM\-SHA\-256\fR, \fISCRAM\-SHA\-256\-PLUS\fR, \fISCRAM\-SHA\-512\fR and \fISCRAM\-SHA\-512\-PLUS\fR\. You should know what you are doing when using this setting and make sure the chosen mechanism is supported by the server\. If not set go\-sendxmpp will use XEP\-0474 to prevent downgrade attacks (needs server support)\. +.TP \fB\-\-timeout=\fR[\fIvalue\fR] Connection timeout in seconds\. (Default: 10) .TP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/man/go-sendxmpp.1.html new/go-sendxmpp-0.8.0/man/go-sendxmpp.1.html --- old/go-sendxmpp-0.7.0/man/go-sendxmpp.1.html 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/man/go-sendxmpp.1.html 2024-01-09 11:37:22.000000000 +0100 @@ -79,7 +79,10 @@ </p> <h2 id="SYNOPSIS">SYNOPSIS</h2> -<p><code>go-sendxmpp</code> [-cdilnt] [-a value] [-f value] [--headline] [--help] [-h value] [-j value] [-m value] [--muc-password value] [--oob-file value] [--ox] [--ox-delete-nodes] [--ox-genprivkey-rsa] [--ox-genprivkey-x25519] [--ox-import-privkey value] [--ox-passphrase value] [-p value] [--raw] [--timeout value] [--tls-version value] [-u value] [--version] [recipientsâ¦]</p> +<p><code>go-sendxmpp [-cdilnt] [-a value] [-f value] [--headline] [--help] [-h value] [-j value] [-m value] [--muc-password value] +[--oob-file value] [--ox] [--ox-delete-nodes] [--ox-genprivkey-rsa] [--ox-genprivkey-x25519] [--ox-import-privkey value] +[--ox-passphrase value] [-p value] [--raw] [--scram-mech-pinning value] [--timeout value] [--tls-version value] [-u value] +[--version] [recipientsâ¦]</code></p> <h2 id="DESCRIPTION">DESCRIPTION</h2> @@ -181,6 +184,12 @@ <dt><code>--raw</code></dt> <dd>Send raw XML. To send raw XML to a contact as normal chat message no contact must be specified. To send raw XML to a MUC you have to specify the MUC via <code>-c</code> and go-sendxmpp will join the MUC.</dd> +<dt><code>--scram-mech-pinning=[<value>]</code></dt> +<dd>Enforce the use of a certain SCRAM authentication mechanism. Currently go-sendxmpp supports +<em>SCRAM-SHA-1</em>, <em>SCRAM-SHA-1-PLUS</em>, <em>SCRAM-SHA-256</em>, <em>SCRAM-SHA-256-PLUS</em>, <em>SCRAM-SHA-512</em> +and <em>SCRAM-SHA-512-PLUS</em>. You should know what you are doing when using this setting and +make sure the chosen mechanism is supported by the server. If not set go-sendxmpp will use XEP-0474 +to prevent downgrade attacks (needs server support).</dd> <dt> <code>--timeout=</code>[<var>value</var>]</dt> <dd>Connection timeout in seconds. (Default: 10)</dd> @@ -232,7 +241,7 @@ <ol class='man-decor man-foot man foot'> <li class='tl'></li> - <li class='tc'>October 2023</li> + <li class='tc'>January 2024</li> <li class='tr'>go-sendxmpp(1)</li> </ol> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/man/go-sendxmpp.1.ronn new/go-sendxmpp-0.8.0/man/go-sendxmpp.1.ronn --- old/go-sendxmpp-0.7.0/man/go-sendxmpp.1.ronn 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/man/go-sendxmpp.1.ronn 2024-01-09 11:37:22.000000000 +0100 @@ -3,7 +3,10 @@ ## SYNOPSIS -`go-sendxmpp` [-cdilnt] [-a value] [-f value] [--headline] [--help] [-h value] [-j value] [-m value] [--muc-password value] [--oob-file value] [--ox] [--ox-delete-nodes] [--ox-genprivkey-rsa] [--ox-genprivkey-x25519] [--ox-import-privkey value] [--ox-passphrase value] [-p value] [--raw] [--timeout value] [--tls-version value] [-u value] [--version] [recipientsâ¦] +`go-sendxmpp [-cdilnt] [-a value] [-f value] [--headline] [--help] [-h value] [-j value] [-m value] [--muc-password value] +[--oob-file value] [--ox] [--ox-delete-nodes] [--ox-genprivkey-rsa] [--ox-genprivkey-x25519] [--ox-import-privkey value] +[--ox-passphrase value] [-p value] [--raw] [--scram-mech-pinning value] [--timeout value] [--tls-version value] [-u value] +[--version] [recipientsâ¦]` ## DESCRIPTION @@ -107,6 +110,13 @@ Send raw XML. To send raw XML to a contact as normal chat message no contact must be specified. To send raw XML to a MUC you have to specify the MUC via `-c` and go-sendxmpp will join the MUC. +* `--scram-mech-pinning=[<value>]`: +Enforce the use of a certain SCRAM authentication mechanism. Currently go-sendxmpp supports +*SCRAM-SHA-1*, *SCRAM-SHA-1-PLUS*, *SCRAM-SHA-256*, *SCRAM-SHA-256-PLUS*, *SCRAM-SHA-512* +and *SCRAM-SHA-512-PLUS*. You should know what you are doing when using this setting and +make sure the chosen mechanism is supported by the server. If not set go-sendxmpp will use XEP-0474 +to prevent downgrade attacks (needs server support). + * `--timeout=`[<value>]: Connection timeout in seconds. (Default: 10) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/ox.go new/go-sendxmpp-0.8.0/ox.go --- old/go-sendxmpp-0.7.0/ox.go 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/ox.go 2024-01-09 11:37:22.000000000 +0100 @@ -16,7 +16,7 @@ "github.com/ProtonMail/gopenpgp/v2/crypto" // MIT License "github.com/beevik/etree" // BSD-2-clause - "github.com/mattn/go-xmpp" // BSD-3-Clause + "github.com/mattn/go-xmpp" // BSD-3-Clause ) func oxDeleteNodes(jid string, client *xmpp.Client, iqc chan xmpp.IQ) error { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/go-sendxmpp-0.7.0/stanzahandling.go new/go-sendxmpp-0.8.0/stanzahandling.go --- old/go-sendxmpp-0.7.0/stanzahandling.go 2023-11-11 15:20:09.000000000 +0100 +++ new/go-sendxmpp-0.8.0/stanzahandling.go 2024-01-09 11:37:22.000000000 +0100 @@ -10,7 +10,7 @@ "log" "runtime" - "github.com/beevik/etree" // BSD-2-clause + "github.com/beevik/etree" // BSD-2-clause "github.com/mattn/go-xmpp" // BSD-3-Clause ) ++++++ vendor.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/beevik/etree/CONTRIBUTORS new/vendor/github.com/beevik/etree/CONTRIBUTORS --- old/vendor/github.com/beevik/etree/CONTRIBUTORS 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/github.com/beevik/etree/CONTRIBUTORS 2024-01-09 15:08:53.000000000 +0100 @@ -10,3 +10,4 @@ Gabriel de Labachelerie (wuzuf) Martin Dosch (mdosch) Hugo Wetterberg (hugowetterberg) +Tobias Theel (nerzal) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/beevik/etree/README.md new/vendor/github.com/beevik/etree/README.md --- old/vendor/github.com/beevik/etree/README.md 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/github.com/beevik/etree/README.md 2024-01-09 15:08:53.000000000 +0100 @@ -1,4 +1,5 @@ [](https://godoc.org/github.com/beevik/etree) +[](https://github.com/beevik/etree/actions/workflows/go.yml) etree ===== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/beevik/etree/RELEASE_NOTES.md new/vendor/github.com/beevik/etree/RELEASE_NOTES.md --- old/vendor/github.com/beevik/etree/RELEASE_NOTES.md 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/github.com/beevik/etree/RELEASE_NOTES.md 2024-01-09 15:08:53.000000000 +0100 @@ -1,3 +1,12 @@ +Release v1.3.0 +============== + +**New Features** + +* Add support for double-quotes in filter path queries. +* Add `PreserveDuplicateAttrs` to `ReadSettings`. +* Add `ReindexChildren` to `Element`. + Release v1.2.0 ============== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/beevik/etree/etree.go new/vendor/github.com/beevik/etree/etree.go --- old/vendor/github.com/beevik/etree/etree.go 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/github.com/beevik/etree/etree.go 2024-01-09 15:08:53.000000000 +0100 @@ -46,6 +46,10 @@ // false. PreserveCData bool + // When an element has two or more attributes with the same name, + // preserve them instead of keeping only one. Default: false. + PreserveDuplicateAttrs bool + // Entity to be passed to standard xml.Decoder. Default: nil. Entity map[string]string } @@ -549,6 +553,15 @@ return e.Tag } +// ReindexChildren recalculates the index values of the element's child +// tokens. This is necessary only if you have manually manipulated the +// element's `Child` array. +func (e *Element) ReindexChildren() { + for i := 0; i < len(e.Child); i++ { + e.Child[i].setIndex(i) + } +} + // Text returns all character data immediately following the element's opening // tag. func (e *Element) Text() string { @@ -827,7 +840,7 @@ case xml.StartElement: e := newElement(t.Name.Space, t.Name.Local, top) for _, a := range t.Attr { - e.createAttr(a.Name.Space, a.Name.Local, a.Value, e) + e.createAttr(a.Name.Space, a.Name.Local, a.Value, e, settings.PreserveDuplicateAttrs) } stack.push(e) case xml.EndElement: @@ -1223,17 +1236,20 @@ // prefix followed by a colon. func (e *Element) CreateAttr(key, value string) *Attr { space, skey := spaceDecompose(key) - return e.createAttr(space, skey, value, e) + return e.createAttr(space, skey, value, e, false) } // createAttr is a helper function that creates attributes. -func (e *Element) createAttr(space, key, value string, parent *Element) *Attr { - for i, a := range e.Attr { - if space == a.Space && key == a.Key { - e.Attr[i].Value = value - return &e.Attr[i] +func (e *Element) createAttr(space, key, value string, parent *Element, preserveDups bool) *Attr { + if !preserveDups { + for i, a := range e.Attr { + if space == a.Space && key == a.Key { + e.Attr[i].Value = value + return &e.Attr[i] + } } } + a := Attr{ Space: space, Key: key, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/beevik/etree/helpers.go new/vendor/github.com/beevik/etree/helpers.go --- old/vendor/github.com/beevik/etree/helpers.go 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/github.com/beevik/etree/helpers.go 2024-01-09 15:08:53.000000000 +0100 @@ -299,10 +299,10 @@ } } -// nextIndex returns the index of the next occurrence of sep in s, -// starting from offset. It returns -1 if the sep string is not found. -func nextIndex(s, sep string, offset int) int { - switch i := strings.Index(s[offset:], sep); i { +// nextIndex returns the index of the next occurrence of byte ch in s, +// starting from offset. It returns -1 if the byte is not found. +func nextIndex(s string, ch byte, offset int) int { + switch i := strings.IndexByte(s[offset:], ch); i { case -1: return -1 default: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/beevik/etree/path.go new/vendor/github.com/beevik/etree/path.go --- old/vendor/github.com/beevik/etree/path.go 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/github.com/beevik/etree/path.go 2024-01-09 15:08:53.000000000 +0100 @@ -242,12 +242,17 @@ var pieces []string start := 0 inquote := false + var quote byte for i := 0; i+1 <= len(path); i++ { - if path[i] == '\'' { - inquote = !inquote - } else if path[i] == '/' && !inquote { - pieces = append(pieces, path[start:i]) - start = i + 1 + if !inquote { + if path[i] == '\'' || path[i] == '"' { + inquote, quote = true, path[i] + } else if path[i] == '/' { + pieces = append(pieces, path[start:i]) + start = i + 1 + } + } else if path[i] == quote { + inquote = false } } return append(pieces, path[start:]) @@ -302,30 +307,34 @@ return nil } - // Filter contains [@attr='val'], [fn()='val'], or [tag='val']? - eqindex := strings.Index(path, "='") - if eqindex >= 0 { - rindex := nextIndex(path, "'", eqindex+2) - if rindex != len(path)-1 { - c.err = ErrPath("path has mismatched filter quotes.") - return nil - } + // Filter contains [@attr='val'], [@attr="val"], [fn()='val'], + // [fn()="val"], [tag='val'] or [tag="val"]? + eqindex := strings.IndexByte(path, '=') + if eqindex >= 0 && eqindex+1 < len(path) { + quote := path[eqindex+1] + if quote == '\'' || quote == '"' { + rindex := nextIndex(path, quote, eqindex+2) + if rindex != len(path)-1 { + c.err = ErrPath("path has mismatched filter quotes.") + return nil + } - key := path[:eqindex] - value := path[eqindex+2 : rindex] + key := path[:eqindex] + value := path[eqindex+2 : rindex] - switch { - case key[0] == '@': - return newFilterAttrVal(key[1:], value) - case strings.HasSuffix(key, "()"): - name := key[:len(key)-2] - if fn, ok := fnTable[name]; ok { - return newFilterFuncVal(fn, value) + switch { + case key[0] == '@': + return newFilterAttrVal(key[1:], value) + case strings.HasSuffix(key, "()"): + name := key[:len(key)-2] + if fn, ok := fnTable[name]; ok { + return newFilterFuncVal(fn, value) + } + c.err = ErrPath("path has unknown function " + name) + return nil + default: + return newFilterChildText(key, value) } - c.err = ErrPath("path has unknown function " + name) - return nil - default: - return newFilterChildText(key, value) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/mattn/go-xmpp/xmpp.go new/vendor/github.com/mattn/go-xmpp/xmpp.go --- old/vendor/github.com/mattn/go-xmpp/xmpp.go 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/github.com/mattn/go-xmpp/xmpp.go 2024-01-09 15:08:53.000000000 +0100 @@ -34,6 +34,7 @@ "net/http" "net/url" "os" + "slices" "strconv" "strings" "time" @@ -46,6 +47,7 @@ nsTLS = "urn:ietf:params:xml:ns:xmpp-tls" nsSASL = "urn:ietf:params:xml:ns:xmpp-sasl" nsBind = "urn:ietf:params:xml:ns:xmpp-bind" + nsSASLCB = "urn:xmpp:sasl-cb:0" nsClient = "jabber:client" nsSession = "urn:ietf:params:xml:ns:xmpp-session" ) @@ -521,7 +523,7 @@ if err != nil { return err } - var serverNonce string + var serverNonce, dgProtect string var salt []byte var iterations int for _, serverReply := range strings.Split(string(b), ",") { @@ -533,6 +535,9 @@ } case strings.HasPrefix(serverReply, "s="): salt, err = base64.StdEncoding.DecodeString(strings.SplitN(serverReply, "=", 2)[1]) + if err != nil { + return err + } if string(salt) == "" { return errors.New("SCRAM: server sent empty salt") } @@ -542,6 +547,37 @@ if err != nil { return err } + case strings.HasPrefix(serverReply, "d="): + serverDgProtectHash := strings.SplitN(serverReply, "=", 2)[1] + slices.Sort(f.Mechanisms.Mechanism) + for _, mech := range f.Mechanisms.Mechanism { + if dgProtect == "" { + dgProtect = mech + } else { + dgProtect = dgProtect + "," + mech + } + } + dgProtect = dgProtect + "|" + var cbsSlice []string + for _, cbs := range f.ChannelBindings.ChannelBinding { + cbsSlice = append(cbsSlice, cbs.Type) + } + slices.Sort(cbsSlice) + for i, cb := range cbsSlice { + if i == 0 { + dgProtect = dgProtect + cb + } else { + dgProtect = dgProtect + "," + cb + } + } + dgh := shaNewFn() + dgh.Write([]byte(dgProtect)) + dHash := dgh.Sum(nil) + dHashb64 := base64.StdEncoding.EncodeToString(dHash) + if dHashb64 != serverDgProtectHash { + return errors.New("SCRAM: downgrade protection hash mismatch") + } + dgh.Reset() default: return errors.New("unexpected content in SCRAM challenge") } @@ -1194,12 +1230,12 @@ // RFC 3920 C.1 Streams name space type streamFeatures struct { - XMLName xml.Name `xml:"http://etherx.jabber.org/streams features"` - StartTLS *tlsStartTLS - Mechanisms saslMechanisms - ChannelBinding saslChannelBinding - Bind bindBind - Session bool + XMLName xml.Name `xml:"http://etherx.jabber.org/streams features"` + StartTLS *tlsStartTLS + Mechanisms saslMechanisms + ChannelBindings saslChannelBindings + Bind bindBind + Session bool } type streamError struct { @@ -1233,7 +1269,7 @@ Mechanism string `xml:",attr"` } -type saslChannelBinding struct { +type saslChannelBindings struct { XMLName xml.Name `xml:"sasl-channel-binding"` Text string `xml:",chardata"` Xmlns string `xml:"xmlns,attr"` @@ -1436,6 +1472,8 @@ nv = &saslSuccess{} case nsSASL + " failure": nv = &saslFailure{} + case nsSASLCB + " sasl-channel-binding": + nv = &saslChannelBindings{} case nsBind + " bind": nv = &bindBind{} case nsClient + " message": diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/crypto/argon2/blamka_amd64.s new/vendor/golang.org/x/crypto/argon2/blamka_amd64.s --- old/vendor/golang.org/x/crypto/argon2/blamka_amd64.s 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/golang.org/x/crypto/argon2/blamka_amd64.s 2024-01-09 15:08:53.000000000 +0100 @@ -199,8 +199,8 @@ MOVQ out+0(FP), DX MOVQ a+8(FP), AX MOVQ b+16(FP), BX - MOVQ a+24(FP), CX - MOVQ $128, BP + MOVQ c+24(FP), CX + MOVQ $128, DI loop: MOVOU 0(AX), X0 @@ -213,7 +213,7 @@ ADDQ $16, BX ADDQ $16, CX ADDQ $16, DX - SUBQ $2, BP + SUBQ $2, DI JA loop RET @@ -222,8 +222,8 @@ MOVQ out+0(FP), DX MOVQ a+8(FP), AX MOVQ b+16(FP), BX - MOVQ a+24(FP), CX - MOVQ $128, BP + MOVQ c+24(FP), CX + MOVQ $128, DI loop: MOVOU 0(AX), X0 @@ -238,6 +238,6 @@ ADDQ $16, BX ADDQ $16, CX ADDQ $16, DX - SUBQ $2, BP + SUBQ $2, DI JA loop RET diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go new/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go --- old/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go 2024-01-09 15:08:53.000000000 +0100 @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build go1.7 && amd64 && gc && !purego +//go:build amd64 && gc && !purego package blake2b diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s new/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s --- old/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s 2024-01-09 15:08:53.000000000 +0100 @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build go1.7 && amd64 && gc && !purego +//go:build amd64 && gc && !purego #include "textflag.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go new/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go --- old/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go 1970-01-01 01:00:00.000000000 +0100 @@ -1,24 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.7 && amd64 && gc && !purego - -package blake2b - -import "golang.org/x/sys/cpu" - -func init() { - useSSE4 = cpu.X86.HasSSE41 -} - -//go:noescape -func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) - -func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { - if useSSE4 { - hashBlocksSSE4(h, c, flag, blocks) - } else { - hashBlocksGeneric(h, c, flag, blocks) - } -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/crypto/blake2b/register.go new/vendor/golang.org/x/crypto/blake2b/register.go --- old/vendor/golang.org/x/crypto/blake2b/register.go 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/golang.org/x/crypto/blake2b/register.go 2024-01-09 15:08:53.000000000 +0100 @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build go1.9 - package blake2b import ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s new/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s --- old/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s 2024-01-09 15:08:53.000000000 +0100 @@ -319,9 +319,9 @@ MOVQ rDi, _si(oState); \ MOVQ rDo, _so(oState) \ -// func keccakF1600(state *[25]uint64) +// func keccakF1600(a *[25]uint64) TEXT ·keccakF1600(SB), 0, $200-8 - MOVQ state+0(FP), rpState + MOVQ a+0(FP), rpState // Convert the user state into an internal state NOTQ _be(rpState) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt --- old/vendor/modules.txt 2023-11-14 07:55:27.000000000 +0100 +++ new/vendor/modules.txt 2024-01-09 15:08:53.000000000 +0100 @@ -28,10 +28,10 @@ github.com/ProtonMail/gopenpgp/v2/constants github.com/ProtonMail/gopenpgp/v2/crypto github.com/ProtonMail/gopenpgp/v2/internal -# github.com/beevik/etree v1.2.0 +# github.com/beevik/etree v1.3.0 ## explicit; go 1.13 github.com/beevik/etree -# github.com/cloudflare/circl v1.3.6 +# github.com/cloudflare/circl v1.3.7 ## explicit; go 1.19 github.com/cloudflare/circl/dh/x25519 github.com/cloudflare/circl/dh/x448 @@ -51,7 +51,7 @@ github.com/gabriel-vasile/mimetype/internal/charset github.com/gabriel-vasile/mimetype/internal/json github.com/gabriel-vasile/mimetype/internal/magic -# github.com/mattn/go-xmpp v0.0.2-0.20231111141053-31c7eb6919b6 +# github.com/mattn/go-xmpp v0.0.2-0.20240109092456-39f5b80375b6 ## explicit; go 1.20 github.com/mattn/go-xmpp # github.com/pborman/getopt/v2 v2.1.0 @@ -60,7 +60,7 @@ # github.com/pkg/errors v0.9.1 ## explicit github.com/pkg/errors -# golang.org/x/crypto v0.15.0 +# golang.org/x/crypto v0.18.0 ## explicit; go 1.18 golang.org/x/crypto/argon2 golang.org/x/crypto/blake2b @@ -68,11 +68,11 @@ golang.org/x/crypto/hkdf golang.org/x/crypto/pbkdf2 golang.org/x/crypto/sha3 -# golang.org/x/net v0.18.0 +# golang.org/x/net v0.20.0 ## explicit; go 1.18 golang.org/x/net/html golang.org/x/net/html/atom -# golang.org/x/sys v0.14.0 +# golang.org/x/sys v0.16.0 ## explicit; go 1.18 golang.org/x/sys/cpu # golang.org/x/text v0.14.0
