passforios-gopenpgp/helper/ios.go

44 lines
1.2 KiB
Go
Raw Normal View History

2019-09-12 11:33:17 +02:00
package helper
import (
"github.com/ProtonMail/gopenpgp/v2/crypto"
2019-09-12 11:33:17 +02:00
)
// ExplicitVerifyMessage contains explicitly the signature verification error, for gomobile users
2019-09-12 11:33:17 +02:00
type ExplicitVerifyMessage struct {
Message *crypto.PlainMessage
2019-09-12 11:33:17 +02:00
SignatureVerificationError *crypto.SignatureVerificationError
}
// DecryptExplicitVerify decrypts an armored PGP message given a private key and its passphrase
2019-09-12 11:33:17 +02:00
// and verifies the embedded signature.
// Returns the plain data or an error on signature verification failure.
func DecryptExplicitVerify(
pgpMessage *crypto.PGPMessage,
privateKeyRing, publicKeyRing *crypto.KeyRing,
verifyTime int64,
) (*ExplicitVerifyMessage, error) {
var explicitVerify *ExplicitVerifyMessage
message, err := privateKeyRing.Decrypt(pgpMessage, publicKeyRing, verifyTime)
2019-09-12 11:33:17 +02:00
if err != nil {
castedErr, isType := err.(crypto.SignatureVerificationError)
if !isType {
return nil, err
}
explicitVerify = &ExplicitVerifyMessage{
Message: message,
2019-09-12 11:33:17 +02:00
SignatureVerificationError: &castedErr,
}
} else {
explicitVerify = &ExplicitVerifyMessage{
Message: message,
2019-09-12 11:33:17 +02:00
SignatureVerificationError: nil,
}
}
return explicitVerify, nil
}