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:
commit
9240e5d86a
7 changed files with 26 additions and 12 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -6,3 +6,4 @@ vendor
|
||||||
*.out
|
*.out
|
||||||
*.html
|
*.html
|
||||||
reports
|
reports
|
||||||
|
.idea
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue