aboutsummaryrefslogtreecommitdiffstats
path: root/src/m_email/test/EMailMimeTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/m_email/test/EMailMimeTest.cpp')
-rw-r--r--src/m_email/test/EMailMimeTest.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/m_email/test/EMailMimeTest.cpp b/src/m_email/test/EMailMimeTest.cpp
index 7e43a79..77db57b 100644
--- a/src/m_email/test/EMailMimeTest.cpp
+++ b/src/m_email/test/EMailMimeTest.cpp
@@ -1472,6 +1472,24 @@ TEST(EMailMimeTest, AnInvalidOrRevokedSignatureIsAlsoBad) {
}
}
+TEST(EMailMimeTest, AnUnauthorizedSigningKeyIsNotCalledAForgery) {
+ // validity 10 (kKEY_NOT_AUTHORIZED): the signature is mathematically valid,
+ // but the certificate does not let that key sign. Not a good signature, and
+ // not a message that was changed after signing either.
+ const auto badge =
+ DeriveSecurityBadge(EMailSecurityState::kSIGNED,
+ EMailVerifyState::kVERIFIED, {Sig(10)}, kFrom);
+
+ EXPECT_EQ(badge, EMailBadgeState::kSIGNED_UNAUTHORIZED_KEY);
+ EXPECT_EQ(ToneForBadge(badge), EMailBadgeTone::kDANGER);
+
+ // A forgery beside it still decides.
+ EXPECT_EQ(DeriveSecurityBadge(EMailSecurityState::kSIGNED,
+ EMailVerifyState::kVERIFIED, {Sig(10), Sig(3)},
+ kFrom),
+ EMailBadgeState::kSIGNED_BAD);
+}
+
TEST(EMailMimeTest, AMissingKeyIsItsOwnAnswerAndNotAForgery) {
const auto badge =
DeriveSecurityBadge(EMailSecurityState::kSIGNED,