diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 6555cf00..7bae862c 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -28,9 +28,9 @@ jobs: steps: - uses: actions/setup-go@v5 with: - go-version: '1.22' + go-version: '1.23' - uses: actions/checkout@v4 - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: - version: v1.54.2 + version: v1.64.5 diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 4e1f74d9..ab6a3987 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -12,10 +12,10 @@ jobs: runs-on: macos-latest steps: - - name: Set up xcode 14.3 + - name: Set up xcode 16.0 uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: 15.3.0 + xcode-version: 16.0.0 id: xcode - name: Set up Go 1.x diff --git a/.golangci.yml b/.golangci.yml index 83e205f1..7db86643 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -20,6 +20,11 @@ issues: - ST1003 # CamelCase variables; see constants/cipher.go - "SA1019: rsaPriv.Precomputed" # we don't use them but only clear them - "G101: Potential hardcoded credentials" + - "G115: integer overflow conversion int64 -> uint32" + - "Magic number:" + - param max has same name as predeclared identifier + - the methods of "SignatureCollector" use pointer receiver and non-pointer receiver + - the methods of "Callbacks" use pointer receiver and non-pointer receiver. linters: enable-all: true diff --git a/CHANGELOG.md b/CHANGELOG.md index a8013d46..ac78bee4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.10.0] 2026-03-18 +### Changed +- Update go-crypto to `1.4.1`. +- Fix linter issues. + ## [2.9.0] 2025-05-23 ### Changed - Update go-crypto to `1.3.0`. diff --git a/constants/armor.go b/constants/armor.go index b0d030e3..4ecfb83f 100644 --- a/constants/armor.go +++ b/constants/armor.go @@ -3,7 +3,7 @@ package constants // Constants for armored data. const ( - ArmorHeaderVersion = "GopenPGP 2.9.0" + ArmorHeaderVersion = "GopenPGP 2.10.0" ArmorHeaderComment = "https://gopenpgp.org" PGPMessageHeader = "PGP MESSAGE" PGPSignatureHeader = "PGP SIGNATURE" diff --git a/constants/version.go b/constants/version.go index fb579512..b6b66e13 100644 --- a/constants/version.go +++ b/constants/version.go @@ -1,3 +1,3 @@ package constants -const Version = "2.9.0" +const Version = "2.10.0" diff --git a/crypto/key_test.go b/crypto/key_test.go index 1b6ed396..e76eaabc 100644 --- a/crypto/key_test.go +++ b/crypto/key_test.go @@ -204,8 +204,8 @@ func ExampleKey_PrintFingerprints() { } func TestIsExpired(t *testing.T) { - assert.Exactly(t, false, keyTestRSA.IsExpired()) - assert.Exactly(t, false, keyTestEC.IsExpired()) + assert.False(t, keyTestRSA.IsExpired()) + assert.False(t, keyTestEC.IsExpired()) expiredKey, err := NewKeyFromArmored(readTestFile("key_expiredKey", false)) if err != nil { @@ -217,8 +217,8 @@ func TestIsExpired(t *testing.T) { t.Fatal("Cannot unarmor future key:", err) } - assert.Exactly(t, true, expiredKey.IsExpired()) - assert.Exactly(t, true, futureKey.IsExpired()) + assert.True(t, expiredKey.IsExpired()) + assert.True(t, futureKey.IsExpired()) } func TestGenerateKeyWithPrimes(t *testing.T) { diff --git a/crypto/keyring_test.go b/crypto/keyring_test.go index ca4a2770..598c10ac 100644 --- a/crypto/keyring_test.go +++ b/crypto/keyring_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/ProtonMail/go-crypto/openpgp/ecdh" "github.com/ProtonMail/go-crypto/openpgp/eddsa" @@ -124,11 +125,11 @@ func TestKeyIds(t *testing.T) { } func TestMultipleKeyRing(t *testing.T) { - assert.Exactly(t, 3, len(keyRingTestMultiple.entities)) + assert.Len(t, keyRingTestMultiple.entities, 3) assert.Exactly(t, 3, keyRingTestMultiple.CountEntities()) assert.Exactly(t, 3, keyRingTestMultiple.CountDecryptionEntities()) - assert.Exactly(t, 3, len(keyRingTestMultiple.GetKeys())) + assert.Len(t, keyRingTestMultiple.GetKeys(), 3) testKey, err := keyRingTestMultiple.GetKey(1) if err != nil { @@ -137,28 +138,28 @@ func TestMultipleKeyRing(t *testing.T) { assert.Exactly(t, keyTestEC, testKey) _, err = keyRingTestMultiple.GetKey(3) - assert.NotNil(t, err) + require.Error(t, err) singleKeyRing, err := keyRingTestMultiple.FirstKey() if err != nil { t.Fatal("Expected no error while filtering the first key, got:", err) } - assert.Exactly(t, 1, len(singleKeyRing.entities)) + assert.Len(t, singleKeyRing.entities, 1) assert.Exactly(t, 1, singleKeyRing.CountEntities()) assert.Exactly(t, 1, singleKeyRing.CountDecryptionEntities()) } func TestSerializeParse(t *testing.T) { serialized, err := keyRingTestMultiple.Serialize() - assert.Nil(t, err) + require.NoError(t, err) parsed, err := NewKeyRingFromBinary(serialized) - assert.Nil(t, err) + require.NoError(t, err) - assert.Exactly(t, 3, len(parsed.GetKeys())) + assert.Len(t, parsed.GetKeys(), 3) for i, parsedKey := range parsed.GetKeys() { expectedKey, err := keyRingTestMultiple.GetKey(i) - assert.Nil(t, err) + require.NoError(t, err) assert.Exactly(t, parsedKey.GetFingerprint(), expectedKey.GetFingerprint()) } } @@ -170,7 +171,7 @@ func TestClearPrivateKey(t *testing.T) { } for _, key := range keyRingCopy.GetKeys() { - assert.Nil(t, clearPrivateKey(key.entity.PrivateKey.PrivateKey)) + require.NoError(t, clearPrivateKey(key.entity.PrivateKey.PrivateKey)) } keys := keyRingCopy.GetKeys() diff --git a/crypto/message.go b/crypto/message.go index 4ea78fd4..947d5a68 100644 --- a/crypto/message.go +++ b/crypto/message.go @@ -258,7 +258,6 @@ func (msg *PGPMessage) GetEncryptionKeyIDs() ([]uint64, bool) { packets := packet.NewReader(bytes.NewReader(msg.Data)) var err error var ids []uint64 - var encryptedKey *packet.EncryptedKey Loop: for { var p packet.Packet @@ -267,7 +266,7 @@ Loop: } switch p := p.(type) { case *packet.EncryptedKey: - encryptedKey = p + encryptedKey := p ids = append(ids, encryptedKey.KeyId) case *packet.SymmetricallyEncrypted, *packet.AEADEncrypted, @@ -473,9 +472,6 @@ func getSignatureKeyIDs(data []byte) ([]uint64, bool) { packets := packet.NewReader(bytes.NewReader(data)) var err error var ids []uint64 - var onePassSignaturePacket *packet.OnePassSignature - var signaturePacket *packet.Signature - Loop: for { var p packet.Packet @@ -484,10 +480,10 @@ Loop: } switch p := p.(type) { case *packet.OnePassSignature: - onePassSignaturePacket = p + onePassSignaturePacket := p ids = append(ids, onePassSignaturePacket.KeyId) case *packet.Signature: - signaturePacket = p + signaturePacket := p if signaturePacket.IssuerKeyId != nil { ids = append(ids, *signaturePacket.IssuerKeyId) } diff --git a/crypto/message_test.go b/crypto/message_test.go index 0b8a2070..4bde133f 100644 --- a/crypto/message_test.go +++ b/crypto/message_test.go @@ -11,6 +11,7 @@ import ( "github.com/ProtonMail/go-crypto/openpgp/packet" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestTextMessageEncryptionWithPassword(t *testing.T) { @@ -31,7 +32,7 @@ func TestTextMessageEncryptionWithPassword(t *testing.T) { } sessionKey, ok := p.(*packet.SymmetricKeyEncrypted) if ok { - assert.Equal(t, sessionKey.CipherFunc, packet.CipherAES256) + assert.Equal(t, packet.CipherAES256, sessionKey.CipherFunc) foundSk = true break } @@ -41,7 +42,7 @@ func TestTextMessageEncryptionWithPassword(t *testing.T) { } // Decrypt data with wrong password _, err = DecryptMessageWithPassword(encrypted, []byte("Wrong password")) - assert.NotNil(t, err) + require.Error(t, err) // Decrypt data with the good password decrypted, err := DecryptMessageWithPassword(encrypted, testSymmetricKey) @@ -62,7 +63,7 @@ func TestBinaryMessageEncryptionWithPassword(t *testing.T) { } // Decrypt data with wrong password _, err = DecryptMessageWithPassword(encrypted, []byte("Wrong password")) - assert.NotNil(t, err) + require.Error(t, err) // Decrypt data with the good password decrypted, err := DecryptMessageWithPassword(encrypted, testSymmetricKey) @@ -348,7 +349,7 @@ func TestSHA1SignedMessageDecryption(t *testing.T) { func TestMultipleKeyMessageEncryption(t *testing.T) { var message = NewPlainMessageFromString("plain text") - assert.Exactly(t, 3, len(keyRingTestMultiple.entities)) + assert.Len(t, keyRingTestMultiple.entities, 3) ciphertext, err := keyRingTestMultiple.Encrypt(message, keyRingTestPrivate) if err != nil { @@ -359,7 +360,7 @@ func TestMultipleKeyMessageEncryption(t *testing.T) { // followed by a single symmetrically encrypted data packet (tag 18) var p packet.Packet packets := packet.NewReader(bytes.NewReader(ciphertext.Data)) - for i := 0; i < 3; i++ { + for range 3 { if p, err = packets.Next(); err != nil { t.Fatal(err.Error()) } @@ -384,14 +385,14 @@ func TestMultipleKeyMessageEncryption(t *testing.T) { func TestMessageGetEncryptionKeyIDs(t *testing.T) { var message = NewPlainMessageFromString("plain text") - assert.Exactly(t, 3, len(keyRingTestMultiple.entities)) + assert.Len(t, keyRingTestMultiple.entities, 3) ciphertext, err := keyRingTestMultiple.Encrypt(message, keyRingTestPrivate) if err != nil { t.Fatal("Expected no error when encrypting, got:", err) } ids, ok := ciphertext.GetEncryptionKeyIDs() - assert.Exactly(t, 3, len(ids)) + assert.Len(t, ids, 3) assert.True(t, ok) encKey, ok := keyRingTestMultiple.entities[0].EncryptionKey(time.Now()) assert.True(t, ok) @@ -405,7 +406,7 @@ func TestMessageGetHexGetEncryptionKeyIDs(t *testing.T) { } ids, ok := ciphertext.GetHexEncryptionKeyIDs() - assert.Exactly(t, 2, len(ids)) + assert.Len(t, ids, 2) assert.True(t, ok) assert.Exactly(t, "76ad736fa7e0e83c", ids[0]) @@ -421,7 +422,7 @@ func TestMessageGetSignatureKeyIDs(t *testing.T) { } ids, ok := signature.GetSignatureKeyIDs() - assert.Exactly(t, 1, len(ids)) + assert.Len(t, ids, 1) assert.True(t, ok) signingKey, ok := keyRingTestPrivate.entities[0].SigningKey(time.Now()) assert.True(t, ok) @@ -435,7 +436,7 @@ func TestMessageGetHexSignatureKeyIDs(t *testing.T) { } ids, ok := ciphertext.GetHexSignatureKeyIDs() - assert.Exactly(t, 2, len(ids)) + assert.Len(t, ids, 2) assert.True(t, ok) assert.Exactly(t, "3eb6259edf21df24", ids[0]) diff --git a/crypto/mime.go b/crypto/mime.go index 5a34fb5b..81d40977 100644 --- a/crypto/mime.go +++ b/crypto/mime.go @@ -51,7 +51,7 @@ func (keyRing *KeyRing) DecryptMIMEMessage( bodyContent, bodyMimeType := body.GetBody() bodyContentSanitized := sanitizeString(bodyContent) callbacks.OnBody(bodyContentSanitized, bodyMimeType) - for i := 0; i < len(attachments); i++ { + for i := range attachments { callbacks.OnAttachment(attachmentHeaders[i], []byte(attachments[i])) } callbacks.OnEncryptedHeaders("") diff --git a/crypto/mime_test.go b/crypto/mime_test.go index 0e3e89f0..646690f6 100644 --- a/crypto/mime_test.go +++ b/crypto/mime_test.go @@ -80,7 +80,7 @@ func TestParse(t *testing.T) { bodyData, _ := body.GetBody() assert.Exactly(t, readTestFile("mime_decodedBody", true), bodyData) assert.Exactly(t, readTestFile("mime_decodedBodyHeaders", false), body.GetHeaders()) - assert.Exactly(t, 2, len(atts)) + assert.Len(t, atts, 2) } type testMIMECallbacks struct { diff --git a/crypto/sessionkey_test.go b/crypto/sessionkey_test.go index 17965306..64a42c67 100644 --- a/crypto/sessionkey_test.go +++ b/crypto/sessionkey_test.go @@ -9,6 +9,7 @@ import ( "github.com/ProtonMail/gopenpgp/v2/constants" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var testSessionKey *SessionKey @@ -71,12 +72,8 @@ func TestSymmetricKeyPacket(t *testing.T) { t.Fatal("Expected no error while generating key packet, got:", err) } - wrongSymmetricKey, err := DecryptSessionKeyWithPassword(keyPacket, []byte("Wrong password")) - if err != nil { - assert.EqualError(t, err, "gopenpgp: unable to decrypt any packet") - } else { - assert.NotEqual(t, testSessionKey, wrongSymmetricKey) - } + _, err = DecryptSessionKeyWithPassword(keyPacket, []byte("Wrong password")) + require.EqualError(t, err, "gopenpgp: unable to decrypt any packet") outputSymmetricKey, err := DecryptSessionKeyWithPassword(keyPacket, password) if err != nil { @@ -123,7 +120,7 @@ func TestDataPacketEncryption(t *testing.T) { Algo: constants.AES256, } _, err = wrongKey.Decrypt(dataPacket) - assert.NotNil(t, err) + require.Error(t, err) // Decrypt data with the good session key decrypted, err := testSessionKey.Decrypt(dataPacket) @@ -133,7 +130,7 @@ func TestDataPacketEncryption(t *testing.T) { assert.Exactly(t, message.GetString(), decrypted.GetString()) // Encrypt session key - assert.Exactly(t, 3, len(keyRingTestMultiple.entities)) + assert.Len(t, keyRingTestMultiple.entities, 3) keyPacket, err := keyRingTestMultiple.EncryptSessionKey(testSessionKey) if err != nil { t.Fatal("Unable to encrypt key packet, got:", err) @@ -154,7 +151,7 @@ func TestDataPacketEncryption(t *testing.T) { } ids, ok := pgpMessage.GetEncryptionKeyIDs() assert.True(t, ok) - assert.Exactly(t, 3, len(ids)) + assert.Len(t, ids, 3) // Test if final decryption succeeds finalMessage, err := keyRingTestPrivate.Decrypt(pgpMessage, nil, 0) @@ -182,7 +179,7 @@ func TestDataPacketEncryptionAndSignature(t *testing.T) { Algo: constants.AES256, } _, err = wrongKey.Decrypt(dataPacket) - assert.NotNil(t, err) + require.Error(t, err) // Decrypt data with the good session key decrypted, err := testSessionKey.Decrypt(dataPacket) @@ -211,7 +208,7 @@ func TestDataPacketEncryptionAndSignature(t *testing.T) { assert.Exactly(t, message.GetString(), decrypted.GetString()) // Encrypt session key - assert.Exactly(t, 3, len(keyRingTestMultiple.entities)) + assert.Len(t, keyRingTestMultiple.entities, 3) keyPacket, err := keyRingTestMultiple.EncryptSessionKey(testSessionKey) if err != nil { t.Fatal("Unable to encrypt key packet, got:", err) @@ -232,7 +229,7 @@ func TestDataPacketEncryptionAndSignature(t *testing.T) { } ids, ok := pgpMessage.GetEncryptionKeyIDs() assert.True(t, ok) - assert.Exactly(t, 3, len(ids)) + assert.Len(t, ids, 3) // Test with bad verification key succeeds _, err = keyRingTestPrivate.Decrypt(pgpMessage, ecKeyRing, GetUnixTime()) @@ -313,7 +310,7 @@ func TestMDCFailDecryption(t *testing.T) { sessionKey := NewSessionKeyFromToken(sk, "aes256") _, err = sessionKey.Decrypt(split.GetBinaryDataPacket()) - assert.NotNil(t, err) + assert.Error(t, err) } func TestSessionKeyClear(t *testing.T) { diff --git a/go.mod b/go.mod index 6e07dc94..7eb283df 100644 --- a/go.mod +++ b/go.mod @@ -1,20 +1,20 @@ module github.com/ProtonMail/gopenpgp/v2 -go 1.22.0 +go 1.23.0 require ( - github.com/ProtonMail/go-crypto v1.3.0 + github.com/ProtonMail/go-crypto v1.4.1 github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.7.0 - golang.org/x/crypto v0.33.0 + golang.org/x/crypto v0.41.0 ) require ( - github.com/cloudflare/circl v1.6.0 // indirect + github.com/cloudflare/circl v1.6.2 // indirect github.com/davecgh/go-spew v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect ) diff --git a/go.sum b/go.sum index d4a671ad..9f7b6b9c 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,9 @@ -github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= -github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= +github.com/ProtonMail/go-crypto v1.4.1 h1:9RfcZHqEQUvP8RzecWEUafnZVtEvrBVL9BiF67IQOfM= +github.com/ProtonMail/go-crypto v1.4.1/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo= github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k= github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw= -github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= -github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/cloudflare/circl v1.6.2 h1:hL7VBpHHKzrV5WTfHCaBsgx/HGbBYlgrwvNXEVDYYsQ= +github.com/cloudflare/circl v1.6.2/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -16,8 +16,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= 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= @@ -33,8 +33,8 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= 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.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -43,8 +43,8 @@ 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= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff --git a/helper/helper.go b/helper/helper.go index 76c1f123..b67d42d4 100644 --- a/helper/helper.go +++ b/helper/helper.go @@ -264,9 +264,6 @@ func DecryptVerifyBinaryDetached( ) (plainData []byte, err error) { // Some type casting ciphertext := crypto.NewPGPMessage(encryptedData) - if err != nil { - return nil, errors.Wrap(err, "gopenpgp: unable to parse ciphertext") - } // We decrypt and verify the encrypted signature message, err := decryptVerifyObjDetached(publicKey, privateKey, passphrase, ciphertext, encryptedSignatureArmored) diff --git a/helper/helper_test.go b/helper/helper_test.go index 63bc5fb8..b67e6fee 100644 --- a/helper/helper_test.go +++ b/helper/helper_test.go @@ -6,6 +6,7 @@ import ( "github.com/ProtonMail/gopenpgp/v2/crypto" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestAESEncryption(t *testing.T) { @@ -36,7 +37,7 @@ func TestArmoredTextMessageEncryption(t *testing.T) { t.Fatal("Expected no error when encrypting, got:", err) } - assert.Exactly(t, true, crypto.IsPGPMessage(armored)) + assert.True(t, crypto.IsPGPMessage(armored)) decrypted, err := DecryptMessageArmored( readTestFile("keyring_privateKey", false), @@ -63,7 +64,7 @@ func TestArmoredTextMessageEncryptionVerification(t *testing.T) { t.Fatal("Expected no error when encrypting, got:", err) } - assert.Exactly(t, true, crypto.IsPGPMessage(armored)) + assert.True(t, crypto.IsPGPMessage(armored)) _, err = DecryptVerifyMessageArmored( readTestFile("mime_privateKey", false), // Wrong public key @@ -71,7 +72,7 @@ func TestArmoredTextMessageEncryptionVerification(t *testing.T) { testMailboxPassword, // Password defined in base_test armored, ) - assert.EqualError(t, err, "gopenpgp: unable to decrypt message: Signature Verification Error: No matching signature") + require.EqualError(t, err, "gopenpgp: unable to decrypt message: Signature Verification Error: No matching signature") decrypted, err := DecryptVerifyMessageArmored( readTestFile("keyring_privateKey", false), @@ -115,7 +116,7 @@ func TestAttachmentEncryptionVerification(t *testing.T) { dataPacket, armoredSig, ) - assert.EqualError(t, err, "gopenpgp: unable to verify attachment") + require.EqualError(t, err, "gopenpgp: unable to verify attachment") decrypted, err := DecryptVerifyAttachment( readTestFile("keyring_privateKey", false), @@ -141,7 +142,7 @@ func TestArmoredBinaryMessageEncryption(t *testing.T) { t.Fatal("Expected no error when encrypting, got:", err) } - assert.Exactly(t, true, crypto.IsPGPMessage(armored)) + assert.True(t, crypto.IsPGPMessage(armored)) decrypted, err := DecryptBinaryMessageArmored( readTestFile("keyring_privateKey", false), diff --git a/helper/mobile_test.go b/helper/mobile_test.go index 54751b2f..9ed2bdc0 100644 --- a/helper/mobile_test.go +++ b/helper/mobile_test.go @@ -6,6 +6,7 @@ import ( "github.com/ProtonMail/gopenpgp/v2/constants" "github.com/ProtonMail/gopenpgp/v2/crypto" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMobileSignedMessageDecryption(t *testing.T) { @@ -50,7 +51,7 @@ func TestMobileSignedMessageDecryption(t *testing.T) { assert.Exactly(t, readTestFile("message_plaintext", true), decrypted.Message.GetString()) decrypted, err = DecryptExplicitVerify(pgpMessage, testPublicKeyRing, testPublicKeyRing, crypto.GetUnixTime()) - assert.NotNil(t, err) + require.Error(t, err) assert.Nil(t, decrypted) }