diff --git a/crypto/key.go b/crypto/key.go index 49af11e..fd59ec4 100644 --- a/crypto/key.go +++ b/crypto/key.go @@ -150,10 +150,12 @@ func (key *Key) Unlock(passphrase []byte) (*Key, error) { return nil, err } - err = unlockedKey.entity.PrivateKey.Decrypt(passphrase) - if err != nil { - return nil, errors.Wrap(err, "gopenpgp: error in unlocking key") - } + if !unlockedKey.entity.PrivateKey.Dummy() { + err = unlockedKey.entity.PrivateKey.Decrypt(passphrase) + if err != nil { + return nil, errors.Wrap(err, "gopenpgp: error in unlocking key") + } + } for _, sub := range unlockedKey.entity.Subkeys { if sub.PrivateKey != nil { @@ -286,6 +288,10 @@ func (key *Key) IsLocked() (bool, error) { } } + if key.entity.PrivateKey.Dummy() { + return true, nil + } + return key.entity.PrivateKey.Encrypted, nil }