WIP: Add tests for attachments (#116)
* Add tests for attachments * Fix CI * Use go 1.15 for mobile
This commit is contained in:
parent
72062c4925
commit
27efcb4627
12 changed files with 120 additions and 8 deletions
2
.github/workflows/android.yml
vendored
2
.github/workflows/android.yml
vendored
|
|
@ -20,7 +20,7 @@ jobs:
|
|||
- name: Set up Go 1.15
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ^1.15.6
|
||||
go-version: ~1.15.6
|
||||
id: go
|
||||
|
||||
- name: Checkout
|
||||
|
|
|
|||
4
.github/workflows/go.yml
vendored
4
.github/workflows/go.yml
vendored
|
|
@ -16,7 +16,7 @@ jobs:
|
|||
- name: Set up Go 1.x
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ^1.13
|
||||
go-version: ^1.16
|
||||
id: go
|
||||
|
||||
- name: Check out code into the Go module directory
|
||||
|
|
@ -29,7 +29,7 @@ jobs:
|
|||
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
|
||||
dep ensure
|
||||
fi
|
||||
go install github.com/golangci/golangci-lint/cmd/golangci-lint
|
||||
go get github.com/golangci/golangci-lint/cmd/golangci-lint
|
||||
|
||||
- name: Test
|
||||
run: go test -v -race ./...
|
||||
|
|
|
|||
2
.github/workflows/ios.yml
vendored
2
.github/workflows/ios.yml
vendored
|
|
@ -21,7 +21,7 @@ jobs:
|
|||
- name: Set up Go 1.15
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ^1.15.6
|
||||
go-version: ~1.15.6
|
||||
id: go
|
||||
|
||||
- name: Checkout
|
||||
|
|
|
|||
|
|
@ -37,4 +37,4 @@ linters:
|
|||
- forbidigo # Static analysis tool to forbid use of particular identifiers
|
||||
- thelper # Enforce test helper formatting
|
||||
- revive # Force CamelCase instead of all caps
|
||||
- cyclop # Temp disabling because of a bug that ignores the setting TODO : enable it once the fix as been released
|
||||
- nilerr # Force return err when not nil
|
||||
|
|
@ -4,6 +4,10 @@ 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).
|
||||
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- Decryption tests for attachments
|
||||
|
||||
## [2.1.5] 2021-02-19
|
||||
|
||||
## Changed
|
||||
|
|
|
|||
|
|
@ -102,3 +102,45 @@ func TestAttachmentDecrypt(t *testing.T) {
|
|||
|
||||
assert.Exactly(t, message, redecData)
|
||||
}
|
||||
|
||||
func TestAttachmentDecrypt2(t *testing.T) {
|
||||
passphrase := []byte("wUMuF/lkDPYWH/0ZqqY8kJKw7YJg6kS")
|
||||
keyPacket, err := base64.StdEncoding.DecodeString(readTestFile("att_keypacket", false))
|
||||
if err != nil {
|
||||
t.Error("Expected no error while decoding key packet, got:" + err.Error())
|
||||
}
|
||||
|
||||
dataPacket, err := base64.StdEncoding.DecodeString(readTestFile("att_body", false))
|
||||
if err != nil {
|
||||
t.Error("Expected no error while decoding data packet, got:" + err.Error())
|
||||
}
|
||||
|
||||
pk, err := NewKeyFromArmored(readTestFile("att_key", false))
|
||||
if err != nil {
|
||||
t.Error("Expected no error while unarmoring private key, got:" + err.Error())
|
||||
}
|
||||
|
||||
uk, err := pk.Unlock(passphrase)
|
||||
if err != nil {
|
||||
t.Error("Expected no error while unlocking private key, got:" + err.Error())
|
||||
}
|
||||
|
||||
defer uk.ClearPrivateParams()
|
||||
|
||||
ukr, err := NewKeyRing(uk)
|
||||
if err != nil {
|
||||
t.Error("Expected no error while building private keyring, got:" + err.Error())
|
||||
}
|
||||
|
||||
pgpSplitMessage := NewPGPSplitMessage(keyPacket, dataPacket)
|
||||
if err != nil {
|
||||
t.Fatal("Expected no error while unarmoring, got:", err)
|
||||
}
|
||||
|
||||
dec, err := ukr.DecryptAttachment(pgpSplitMessage)
|
||||
if err != nil {
|
||||
t.Fatal("Expected no error while decrypting attachment, got:", err)
|
||||
}
|
||||
|
||||
assert.Exactly(t, []byte("PNG"), dec.GetBinary()[1:4])
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package crypto
|
||||
|
||||
import (
|
||||
"crypto/dsa"
|
||||
"crypto/dsa" //nolint:staticcheck
|
||||
"crypto/ecdsa"
|
||||
"errors"
|
||||
"math/big"
|
||||
|
|
|
|||
|
|
@ -235,7 +235,8 @@ func TestGenerateKeyWithPrimes(t *testing.T) {
|
|||
t.Fatal("Cannot generate RSA key with primes:", err)
|
||||
}
|
||||
|
||||
pk := staticRsaKey.entity.PrivateKey.PrivateKey.(*rsa.PrivateKey)
|
||||
pk, ok := staticRsaKey.entity.PrivateKey.PrivateKey.(*rsa.PrivateKey)
|
||||
assert.True(t, ok)
|
||||
assert.Exactly(t, prime1, pk.Primes[0].Bytes())
|
||||
assert.Exactly(t, prime2, pk.Primes[1].Bytes())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -335,7 +335,7 @@ func (msg *PGPMessage) SeparateKeyAndData(estimatedLength, garbageCollector int)
|
|||
for {
|
||||
var p packet.Packet
|
||||
if p, err = packets.Next(); goerrors.Is(err, io.EOF) {
|
||||
err = nil
|
||||
err = nil //nolint:wastedassign
|
||||
break
|
||||
}
|
||||
switch p := p.(type) {
|
||||
|
|
|
|||
1
crypto/testdata/att_body
vendored
Normal file
1
crypto/testdata/att_body
vendored
Normal file
File diff suppressed because one or more lines are too long
63
crypto/testdata/att_key
vendored
Normal file
63
crypto/testdata/att_key
vendored
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
-----BEGIN PGP PRIVATE KEY BLOCK-----
|
||||
Version: ProtonMail
|
||||
|
||||
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
|
||||
VzFZnZqUR/gGwtdUAkPTcIEe8g==
|
||||
=QGmw
|
||||
-----END PGP PRIVATE KEY BLOCK-----
|
||||
1
crypto/testdata/att_keypacket
vendored
Normal file
1
crypto/testdata/att_keypacket
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
wcBMA3NHBIPxZtwdAQf/UTdLZjutQTMFLGhlVazAuBHsIG27zFspkSTTDUtQEzeorOggZX4Kj4xOw0AXOe7n2NhOQzc6td7HkjZf8/+eJP1F+njqvmxy+6wCMBU4wDQ1oQR8YidThIdxdhDjmAtTE24ub0R2N2/ENCAAn1bDg+CACnhFN4AJbtvQA9SzDGjur5AS/G9nieuxE6Br6i2QjLFvGoqvXObmHLApiB22vwcpiGEEzYh3ChO+KLGARCUw2eFtyycF8MqIw9mnN2rTN+jOoHF9lEsxRzHr7Dc47dkPsDlqZYEDZzQ2GG97jZDaMceLW/p5OZk/6ffKJAwgHjgs8p2AOMUglFakezjttA==
|
||||
Loading…
Add table
Add a link
Reference in a new issue