Skip to content

Commit 0835a7e

Browse files
committed
revert from github.com/ProtonMail/go-crypto to golang.org/x/crypto/openpgp
The ProtonMail fork has removed support for v3 signatures, which is a reasonable choice for modern libraries since v4 and v5 signatures are much more secure, but lots of SLES 12 repos have old v3 signatures, so we need to continue supporting those for the rest of SLES 12's lifecycle. In a related change, we now also cache expired keys. The signatures on mny of these SLES 12 repos were made with expired keys, but since the signature was made before the key expired, the signature is still fine. /cc @talal
1 parent 234635f commit 0835a7e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+22
-18917
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ module github.com/sapcc/swift-http-import
33
go 1.16
44

55
require (
6-
github.com/ProtonMail/go-crypto v0.0.0-20210707164159-52430bf6b52c
76
github.com/cactus/go-statsd-client/v4 v4.0.0
87
github.com/gophercloud/gophercloud v0.17.0
98
github.com/gophercloud/utils v0.0.0-20210323225332-7b186010c04f
109
github.com/majewsky/schwift v1.0.0
1110
github.com/sapcc/go-bits v0.0.0-20210518135053-8a9465bb1339
1211
github.com/ulikunitz/xz v0.5.10
12+
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97
1313
golang.org/x/net v0.0.0-20210525063256-abc453219eb5
1414
gopkg.in/yaml.v2 v2.4.0
1515
pault.ag/go/debian v0.11.0

go.sum

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
github.com/ProtonMail/go-crypto v0.0.0-20210707164159-52430bf6b52c h1:FP7mMdsXy0ybzar1sJeIcZtaJka0U/ZmLTW4wRpolYk=
2-
github.com/ProtonMail/go-crypto v0.0.0-20210707164159-52430bf6b52c/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
31
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
42
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
53
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -108,8 +106,8 @@ golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnf
108106
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
109107
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
110108
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
111-
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w=
112-
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
109+
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
110+
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
113111
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
114112
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
115113
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -129,6 +127,7 @@ golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7w
129127
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
130128
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
131129
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
130+
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
132131
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
133132
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
134133
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

pkg/util/gpg.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,13 @@ import (
3030
"regexp"
3131
"strings"
3232
"sync"
33-
"time"
3433

35-
"github.com/ProtonMail/go-crypto/openpgp"
36-
"github.com/ProtonMail/go-crypto/openpgp/armor"
37-
"github.com/ProtonMail/go-crypto/openpgp/clearsign"
38-
"github.com/ProtonMail/go-crypto/openpgp/packet"
3934
"github.com/majewsky/schwift"
4035
"github.com/sapcc/go-bits/logg"
36+
"golang.org/x/crypto/openpgp"
37+
"golang.org/x/crypto/openpgp/armor"
38+
"golang.org/x/crypto/openpgp/clearsign"
39+
"golang.org/x/crypto/openpgp/packet"
4140
)
4241

4342
//GPGKeyRing contains a list of openpgp Entities. It is used to verify different
@@ -74,12 +73,9 @@ func NewGPGKeyRing(cntr *schwift.Container, keyserverURLPatterns []string) *GPGK
7473
return err
7574
}
7675
for _, e := range el {
77-
//Don't import expired keys.
78-
if !e.PrimaryKey.KeyExpired(e.PrimaryIdentity().SelfSignature, time.Now().UTC()) {
79-
entityList = append(entityList, e)
80-
if LogIndividualTransfers {
81-
logg.Info("reusing cached GPG key: %s", obj.FullName())
82-
}
76+
entityList = append(entityList, e)
77+
if LogIndividualTransfers {
78+
logg.Info("reusing cached GPG key: %s", obj.FullName())
8379
}
8480
}
8581
return nil
@@ -140,11 +136,16 @@ func (k *GPGKeyRing) verifyGPGSignature(message []byte, signature *armor.Block)
140136
return err
141137
}
142138

143-
sig, ok := p.(*packet.Signature)
144-
if !ok {
139+
var issuerKeyID uint64
140+
switch sig := p.(type) {
141+
case *packet.Signature:
142+
issuerKeyID = *sig.IssuerKeyId
143+
case *packet.SignatureV3:
144+
issuerKeyID = sig.IssuerKeyId
145+
default:
145146
return fmt.Errorf("invalid OpenPGP packet type: expected %q, got %T", "*packet.Signature", p)
146147
}
147-
issuerKeyID := *sig.IssuerKeyId
148+
148149
//only download the public key if not found in the existing key ring
149150
k.Mux.RLock()
150151
foundKeys := k.EntityList.KeysById(issuerKeyID)
@@ -170,7 +171,7 @@ func (k *GPGKeyRing) verifyGPGSignature(message []byte, signature *armor.Block)
170171
}
171172

172173
k.Mux.RLock()
173-
_, err = openpgp.CheckDetachedSignature(k.EntityList, bytes.NewReader(message), bytes.NewReader(signatureBytes), nil)
174+
_, err = openpgp.CheckDetachedSignature(k.EntityList, bytes.NewReader(message), bytes.NewReader(signatureBytes))
174175
k.Mux.RUnlock()
175176

176177
return err

vendor/github.com/ProtonMail/go-crypto/AUTHORS

Lines changed: 0 additions & 3 deletions
This file was deleted.

vendor/github.com/ProtonMail/go-crypto/CONTRIBUTORS

Lines changed: 0 additions & 3 deletions
This file was deleted.

vendor/github.com/ProtonMail/go-crypto/LICENSE

Lines changed: 0 additions & 27 deletions
This file was deleted.

vendor/github.com/ProtonMail/go-crypto/PATENTS

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)