Merge branch 'fix/unused-code' into 'master'

Remove unused code + handle errors

See merge request ProtonMail/go-pm-crypto!12
This commit is contained in:
Daniel Huigens 2019-05-13 12:42:29 +00:00
commit 9240e5d86a
7 changed files with 26 additions and 12 deletions

1
.gitignore vendored
View file

@ -6,3 +6,4 @@ vendor
*.out *.out
*.html *.html
reports reports
.idea

View file

@ -2,6 +2,7 @@ package crypto
import ( import (
"bytes" "bytes"
"fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"runtime" "runtime"
@ -123,7 +124,10 @@ func (pm *PmCrypto) DecryptAttachment(keyPacket []byte, dataPacket []byte, kr *K
privKeyEntries := kr.entities privKeyEntries := kr.entities
kr.Unlock([]byte(passphrase)) if err := kr.Unlock([]byte(passphrase)); err != nil {
err = fmt.Errorf("pm-crypto: cannot decrypt attachment: %v", err)
return nil, err
}
keyReader := bytes.NewReader(keyPacket) keyReader := bytes.NewReader(keyPacket)
dataReader := bytes.NewReader(dataPacket) dataReader := bytes.NewReader(dataPacket)

View file

@ -192,22 +192,23 @@ func SeparateKeyAndData(kr *KeyRing, r io.Reader, estimatedLength int, garbageCo
} }
outSplit.DataPacket = symEncryptedData outSplit.DataPacket = symEncryptedData
break
} }
} }
if decryptErr != nil { if decryptErr != nil {
err = fmt.Errorf("pm-crypto: cannot decrypt encrypted key packet: %v", decryptErr) err = fmt.Errorf("pm-crypto: cannot decrypt encrypted key packet: %v", decryptErr)
return return nil, err
} }
if ek == nil { if ek == nil {
err = errors.New("pm-crypto: packets don't include an encrypted key packet") err = errors.New("pm-crypto: packets don't include an encrypted key packet")
return return nil, err
} }
if kr == nil { if kr == nil {
var buf bytes.Buffer var buf bytes.Buffer
ek.Serialize(&buf) if err := ek.Serialize(&buf); err != nil {
err = fmt.Errorf("pm-crypto: cannot serialize encrypted key: %v", err)
return nil, err
}
outSplit.KeyPacket = buf.Bytes() outSplit.KeyPacket = buf.Bytes()
} else { } else {
key := newSymmetricKey(ek) key := newSymmetricKey(ek)

View file

@ -527,6 +527,9 @@ func (pm *PmCrypto) BuildKeyRingNoError(binKeys []byte) (kr *KeyRing) {
// BuildKeyRingArmored reads armored string and returns keyring // BuildKeyRingArmored reads armored string and returns keyring
func (pm *PmCrypto) BuildKeyRingArmored(key string) (kr *KeyRing, err error) { func (pm *PmCrypto) BuildKeyRingArmored(key string) (kr *KeyRing, err error) {
keyRaw, err := armorUtils.Unarmor(key) keyRaw, err := armorUtils.Unarmor(key)
if err != nil {
return nil, err
}
keyReader := bytes.NewReader(keyRaw) keyReader := bytes.NewReader(keyRaw)
keyEntries, err := openpgp.ReadKeyRing(keyReader) keyEntries, err := openpgp.ReadKeyRing(keyReader)
return &KeyRing{entities: keyEntries}, err return &KeyRing{entities: keyEntries}, err

View file

@ -3,6 +3,7 @@ package crypto
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"math" "math"
@ -59,7 +60,10 @@ func (pm *PmCrypto) DecryptMessage(encryptedText string, privateKey *KeyRing, pa
func decryptCore(encryptedText string, additionalEntries openpgp.EntityList, privKey *KeyRing, passphrase string, timeFunc func() time.Time) (*openpgp.MessageDetails, error) { func decryptCore(encryptedText string, additionalEntries openpgp.EntityList, privKey *KeyRing, passphrase string, timeFunc func() time.Time) (*openpgp.MessageDetails, error) {
rawPwd := []byte(passphrase) rawPwd := []byte(passphrase)
privKey.Unlock(rawPwd) if err := privKey.Unlock(rawPwd); err != nil {
err = fmt.Errorf("pm-crypto: cannot decrypt passphrase: %v", err)
return nil, err
}
privKeyEntries := privKey.entities privKeyEntries := privKey.entities
for _, entity := range privKey.entities { for _, entity := range privKey.entities {

View file

@ -46,9 +46,6 @@ func (pm *PmCrypto) GetSessionFromKeyPacket(keyPackage []byte, privateKey *KeyRi
ek := p.(*packet.EncryptedKey) ek := p.(*packet.EncryptedKey)
if err != nil {
return nil, err
}
rawPwd := []byte(passphrase) rawPwd := []byte(passphrase)
var decryptErr error var decryptErr error
for _, key := range privateKey.entities.DecryptionKeys() { for _, key := range privateKey.entities.DecryptionKeys() {

View file

@ -51,7 +51,9 @@ func PublicKey(privateKey string) (string, error) {
var outBuf bytes.Buffer var outBuf bytes.Buffer
for _, e := range entries { for _, e := range entries {
e.Serialize(&outBuf) if err := e.Serialize(&outBuf); err != nil {
return "", err
}
} }
outString, err := armor.ArmorWithType(outBuf.Bytes(), constants.PublicKeyHeader) outString, err := armor.ArmorWithType(outBuf.Bytes(), constants.PublicKeyHeader)
@ -72,7 +74,9 @@ func PublicKeyBinOut(privateKey string) ([]byte, error) {
var outBuf bytes.Buffer var outBuf bytes.Buffer
for _, e := range entries { for _, e := range entries {
e.Serialize(&outBuf) if err := e.Serialize(&outBuf); err != nil {
return nil, err
}
} }
return outBuf.Bytes(), nil return outBuf.Bytes(), nil