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
|
- name: Set up Go 1.15
|
||||||
uses: actions/setup-go@v2
|
uses: actions/setup-go@v2
|
||||||
with:
|
with:
|
||||||
go-version: ^1.15.6
|
go-version: ~1.15.6
|
||||||
id: go
|
id: go
|
||||||
|
|
||||||
- name: Checkout
|
- 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
|
- name: Set up Go 1.x
|
||||||
uses: actions/setup-go@v2
|
uses: actions/setup-go@v2
|
||||||
with:
|
with:
|
||||||
go-version: ^1.13
|
go-version: ^1.16
|
||||||
id: go
|
id: go
|
||||||
|
|
||||||
- name: Check out code into the Go module directory
|
- 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
|
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
|
||||||
dep ensure
|
dep ensure
|
||||||
fi
|
fi
|
||||||
go install github.com/golangci/golangci-lint/cmd/golangci-lint
|
go get github.com/golangci/golangci-lint/cmd/golangci-lint
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
run: go test -v -race ./...
|
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
|
- name: Set up Go 1.15
|
||||||
uses: actions/setup-go@v2
|
uses: actions/setup-go@v2
|
||||||
with:
|
with:
|
||||||
go-version: ^1.15.6
|
go-version: ~1.15.6
|
||||||
id: go
|
id: go
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
|
|
||||||
|
|
@ -37,4 +37,4 @@ linters:
|
||||||
- forbidigo # Static analysis tool to forbid use of particular identifiers
|
- forbidigo # Static analysis tool to forbid use of particular identifiers
|
||||||
- thelper # Enforce test helper formatting
|
- thelper # Enforce test helper formatting
|
||||||
- revive # Force CamelCase instead of all caps
|
- 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/),
|
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).
|
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
|
## [2.1.5] 2021-02-19
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
|
|
|
||||||
|
|
@ -102,3 +102,45 @@ func TestAttachmentDecrypt(t *testing.T) {
|
||||||
|
|
||||||
assert.Exactly(t, message, redecData)
|
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
|
package crypto
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/dsa"
|
"crypto/dsa" //nolint:staticcheck
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"errors"
|
"errors"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
|
||||||
|
|
@ -235,7 +235,8 @@ func TestGenerateKeyWithPrimes(t *testing.T) {
|
||||||
t.Fatal("Cannot generate RSA key with primes:", err)
|
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, prime1, pk.Primes[0].Bytes())
|
||||||
assert.Exactly(t, prime2, pk.Primes[1].Bytes())
|
assert.Exactly(t, prime2, pk.Primes[1].Bytes())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -335,7 +335,7 @@ func (msg *PGPMessage) SeparateKeyAndData(estimatedLength, garbageCollector int)
|
||||||
for {
|
for {
|
||||||
var p packet.Packet
|
var p packet.Packet
|
||||||
if p, err = packets.Next(); goerrors.Is(err, io.EOF) {
|
if p, err = packets.Next(); goerrors.Is(err, io.EOF) {
|
||||||
err = nil
|
err = nil //nolint:wastedassign
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
switch p := p.(type) {
|
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