From ea2fcb94381472fe9aae5fcaaba450226f728226 Mon Sep 17 00:00:00 2001 From: Daniel Huigens Date: Sat, 27 Apr 2019 07:31:29 +0200 Subject: [PATCH 1/6] Handle encrypt error in EncryptAttachment --- crypto/attachment.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/crypto/attachment.go b/crypto/attachment.go index e1409d3..ef931d4 100644 --- a/crypto/attachment.go +++ b/crypto/attachment.go @@ -75,14 +75,13 @@ func (pm *PmCrypto) encryptAttachment(estimatedSize int, fileName string, public var ew io.WriteCloser var encryptErr error ew, encryptErr = openpgp.Encrypt(writer, publicKey.entities, nil, hints, config) + if encryptErr != nil { + return nil, encryptErr + } attachmentProc.w = &ew attachmentProc.pipe = writer - if attachmentProc.err != nil { - attachmentProc.err = encryptErr - } return attachmentProc, nil - } // Use: ios/android only From 2091fc106cb983f64b79cfe36898eb23fda138df Mon Sep 17 00:00:00 2001 From: Daniel Huigens Date: Sat, 27 Apr 2019 07:22:10 +0200 Subject: [PATCH 2/6] Use new KeyExpired function --- crypto/key.go | 4 ++-- crypto/keyring.go | 2 +- crypto/message.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/crypto/key.go b/crypto/key.go index 1a965fa..d844b14 100644 --- a/crypto/key.go +++ b/crypto/key.go @@ -320,7 +320,7 @@ func (pm *PmCrypto) IsKeyExpiredBin(publicKey []byte) (bool, error) { if subkey.Sig.FlagsValid && subkey.Sig.FlagEncryptCommunications && subkey.PublicKey.PubKeyAlgo.CanEncrypt() && - !subkey.Sig.KeyExpired(now) && + !subkey.PublicKey.KeyExpired(subkey.Sig, now) && (maxTime.IsZero() || subkey.Sig.CreationTime.After(maxTime)) { candidateSubkey = i maxTime = subkey.Sig.CreationTime @@ -349,7 +349,7 @@ func (pm *PmCrypto) IsKeyExpiredBin(publicKey []byte) (bool, error) { i := firstIdentity if !i.SelfSignature.FlagsValid || i.SelfSignature.FlagEncryptCommunications && e.PrimaryKey.PubKeyAlgo.CanEncrypt() && - !i.SelfSignature.KeyExpired(now) { + !e.PrimaryKey.KeyExpired(i.SelfSignature, now) { return false, nil } } diff --git a/crypto/keyring.go b/crypto/keyring.go index 82c8c8a..18f75fb 100644 --- a/crypto/keyring.go +++ b/crypto/keyring.go @@ -639,7 +639,7 @@ func FilterExpiredKeys(contactKeys []*KeyRing) (filteredKeys []*KeyRing, err err hasExpired := false hasUnexpired := false for _, subkey := range entity.Subkeys { - if subkey.Sig.KeyExpired(now) { + if subkey.PublicKey.KeyExpired(subkey.Sig, now) { hasExpired = true } else { hasUnexpired = true diff --git a/crypto/message.go b/crypto/message.go index 3fce8ca..d86d958 100644 --- a/crypto/message.go +++ b/crypto/message.go @@ -140,8 +140,8 @@ func processSignatureExpiration(md *openpgp.MessageDetails, verifyTime int64) { if verifyTime > 0 { created := md.Signature.CreationTime.Unix() expires := int64(math.MaxInt64) - if md.Signature.KeyLifetimeSecs != nil { - expires = int64(*md.Signature.KeyLifetimeSecs) + created + if md.Signature.SigLifetimeSecs != nil { + expires = int64(*md.Signature.SigLifetimeSecs) + created } if created-internal.CreationTimeOffset <= verifyTime && verifyTime <= expires { md.SignatureError = nil From 21fe53fd5d0255c7740fd574595a0686ee278b91 Mon Sep 17 00:00:00 2001 From: Jakub Date: Wed, 1 May 2019 16:35:49 +0200 Subject: [PATCH 3/6] update glide and add ci --- glide.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glide.lock b/glide.lock index c814804..2b7d63c 100644 --- a/glide.lock +++ b/glide.lock @@ -4,7 +4,7 @@ imports: - name: github.com/Sirupsen/logrus version: 3791101e143bf0f32515ac23e831475684f61229 - name: golang.org/x/crypto - version: 25f88b74191b57d090d6d7cffaea61a9046393f4 + version: efb430e751f2f00d8d9aedb254fc14ef76954880 repo: https://github.com/ProtonMail/crypto.git subpackages: - bitcurves @@ -43,6 +43,6 @@ imports: - encoding/internal/identifier - transform - name: github.com/ProtonMail/go-pm-mime - version: 56f1d379d824060de4ae591dadf54bbbe4b47f08 + version: dc270ae56b61837aa404c828a14b8ea731167ac0 repo: https://gitlab.protontech.ch/ProtonMail/go-pm-mime.git testImports: [] From 8a907114c0fb6c3050a9b84120bb2cf04d5e7f56 Mon Sep 17 00:00:00 2001 From: Jakub Date: Wed, 1 May 2019 16:39:04 +0200 Subject: [PATCH 4/6] add ci --- .gitlab-ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..e0ff77b --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,9 @@ +stages: + - test + +test-all: + stage: test + image: golang:1.11 + script: + - glide install + - go test ./... From 2eea06b10424be3961fe7981b5943ea30da0a96f Mon Sep 17 00:00:00 2001 From: Jakub Date: Wed, 1 May 2019 16:53:29 +0200 Subject: [PATCH 5/6] add glide --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e0ff77b..91edbd6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,11 @@ stages: - test + test-all: stage: test image: golang:1.11 script: + - curl https://glide.sh/get | sh - glide install - go test ./... From 388b56487495fc9dfb8015bb0a3c1c9040e43fb6 Mon Sep 17 00:00:00 2001 From: Jakub Date: Wed, 1 May 2019 17:35:39 +0200 Subject: [PATCH 6/6] try ssh key for access --- .gitlab-ci.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 91edbd6..edbb362 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,11 +1,22 @@ +variables: + # Please edit to your GitLab project + REPO_NAME: github.com/ProtonMail/go-pm-crypto + +before_script: + - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - eval $(ssh-agent -s) + - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null + - export PATH=/opt/local/bin:$PATH + - mkdir -p $GOPATH/src/$(dirname $REPO_NAME) + - ln -svf $CI_PROJECT_DIR $GOPATH/src/$REPO_NAME + - cd $GOPATH/src/$REPO_NAME + - glide install + stages: - test - test-all: stage: test - image: golang:1.11 + image: gitlab.protontech.ch:4567/protonmail/import-export/linux script: - - curl https://glide.sh/get | sh - - glide install - go test ./...