Fix various keys issues (#117)

* Fix armouring headers for public keys
* Fix error for session key decryption failure
This commit is contained in:
wussler 2021-03-09 19:06:35 +01:00 committed by GitHub
parent 27efcb4627
commit ff54225384
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 75 additions and 6 deletions

View file

@ -1,6 +1,7 @@
package crypto
import (
"encoding/base64"
"testing"
"github.com/ProtonMail/gopenpgp/v2/constants"
@ -210,3 +211,31 @@ func TestDataPacketEncryptionWithCompression(t *testing.T) {
}
assert.Exactly(t, message.GetString(), decrypted.GetString())
}
func TestAsymmetricKeyPacketDecryptionFailure(t *testing.T) {
passphrase := []byte("passphrase")
keyPacket, err := base64.StdEncoding.DecodeString(readTestFile("sessionkey_packet", false))
if err != nil {
t.Error("Expected no error while decoding key packet, got:" + err.Error())
}
pk, err := NewKeyFromArmored(readTestFile("sessionkey_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())
}
_, err = ukr.DecryptSessionKey(keyPacket)
assert.Error(t, err, "gopenpgp: unable to decrypt session key")
}