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=[&lt;value&gt;]</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 @@
 
[![GoDoc](https://godoc.org/github.com/beevik/etree?status.svg)](https://godoc.org/github.com/beevik/etree)
+[![Go](https://github.com/beevik/etree/actions/workflows/go.yml/badge.svg)](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

Reply via email to