in mail/extensions/openpgp/content/ui/enigmailMessengerOverlay.js [2563:2864]
async loadOpenPgpMessageSecurityInfo() {
let sigInfoWithDateLabel = null;
let sigInfoLabel = null;
let sigInfo = null;
let sigClass = null;
let wantToShowDate = false;
// All scenarios that set wantToShowDate to true should set both
// sigInfoWithDateLabel and sigInfoLabel, to ensure we have a
// fallback label, if the date is unavailable.
switch (Enigmail.hdrView.msgSignatureState) {
case EnigmailConstants.MSG_SIG_NONE:
sigInfoLabel = "openpgp-no-sig";
sigClass = "none";
sigInfo = "openpgp-no-sig-info";
break;
case EnigmailConstants.MSG_SIG_UNCERTAIN_KEY_UNAVAILABLE:
sigInfoLabel = "openpgp-uncertain-sig";
sigClass = "unknown";
sigInfo = "openpgp-sig-uncertain-no-key";
break;
case EnigmailConstants.MSG_SIG_UNCERTAIN_UID_MISMATCH:
sigInfoLabel = "openpgp-uncertain-sig";
sigInfoWithDateLabel = "openpgp-uncertain-sig-with-date";
wantToShowDate = true;
sigClass = "mismatch";
sigInfo = "openpgp-sig-uncertain-uid-mismatch";
break;
case EnigmailConstants.MSG_SIG_UNCERTAIN_KEY_NOT_ACCEPTED:
sigInfoLabel = "openpgp-uncertain-sig";
sigInfoWithDateLabel = "openpgp-uncertain-sig-with-date";
wantToShowDate = true;
sigClass = "unknown";
sigInfo = "openpgp-sig-uncertain-not-accepted";
break;
case EnigmailConstants.MSG_SIG_INVALID_KEY_REJECTED:
sigInfoLabel = "openpgp-invalid-sig";
sigInfoWithDateLabel = "openpgp-invalid-sig-with-date";
wantToShowDate = true;
sigClass = "mismatch";
sigInfo = "openpgp-sig-invalid-rejected";
break;
case EnigmailConstants.MSG_SIG_INVALID_DATE_MISMATCH:
sigInfoLabel = "openpgp-bad-date-sig";
sigInfoWithDateLabel = "openpgp-bad-date-sig-with-date";
wantToShowDate = true;
sigClass = "mismatch";
sigInfo = "openpgp-sig-invalid-date-mismatch";
break;
case EnigmailConstants.MSG_SIG_INVALID:
sigInfoLabel = "openpgp-invalid-sig";
sigInfoWithDateLabel = "openpgp-invalid-sig-with-date";
wantToShowDate = true;
sigClass = "mismatch";
sigInfo = "openpgp-sig-invalid-technical-problem";
break;
case EnigmailConstants.MSG_SIG_VALID_KEY_UNVERIFIED:
sigInfoLabel = "openpgp-good-sig";
sigInfoWithDateLabel = "openpgp-good-sig-with-date";
wantToShowDate = true;
sigClass = "unverified";
sigInfo = "openpgp-sig-valid-unverified";
break;
case EnigmailConstants.MSG_SIG_VALID_KEY_VERIFIED:
sigInfoLabel = "openpgp-good-sig";
sigInfoWithDateLabel = "openpgp-good-sig-with-date";
wantToShowDate = true;
sigClass = "verified";
sigInfo = "openpgp-sig-valid-verified";
break;
case EnigmailConstants.MSG_SIG_VALID_SELF:
sigInfoLabel = "openpgp-good-sig";
sigInfoWithDateLabel = "openpgp-good-sig-with-date";
wantToShowDate = true;
sigClass = "ok";
sigInfo = "openpgp-sig-valid-own-key";
break;
default:
console.error(
"Unexpected msgSignatureState: " + Enigmail.hdrView.msgSignatureState
);
}
const signatureLabel = document.getElementById("signatureLabel");
if (wantToShowDate && Enigmail.hdrView.msgSignatureDate) {
const date = new Services.intl.DateTimeFormat(undefined, {
dateStyle: "short",
timeStyle: "short",
}).format(Enigmail.hdrView.msgSignatureDate);
document.l10n.setAttributes(signatureLabel, sigInfoWithDateLabel, {
date,
});
} else {
document.l10n.setAttributes(signatureLabel, sigInfoLabel);
}
// Remove the second class to properly update the signature icon.
signatureLabel.classList.remove(signatureLabel.classList.item(1));
signatureLabel.classList.add(sigClass);
const signatureExplanation = document.getElementById(
"signatureExplanation"
);
// eslint-disable-next-line mozilla/prefer-formatValues
signatureExplanation.textContent = await document.l10n.formatValue(sigInfo);
let encInfoLabel = null;
let encInfo = null;
let encClass = null;
switch (Enigmail.hdrView.msgEncryptionState) {
case EnigmailConstants.MSG_ENC_NONE:
encInfoLabel = "openpgp-enc-none";
encInfo = "openpgp-enc-none-label";
encClass = "none";
break;
case EnigmailConstants.MSG_ENC_NO_SECRET_KEY:
encInfoLabel = "openpgp-enc-invalid-label";
encInfo = "openpgp-enc-invalid";
encClass = "notok";
break;
case EnigmailConstants.MSG_ENC_FAILURE:
encInfoLabel = "openpgp-enc-invalid-label";
encInfo = "openpgp-enc-clueless";
encClass = "notok";
break;
case EnigmailConstants.MSG_ENC_OK:
encInfoLabel = "openpgp-enc-valid-label";
encInfo = "openpgp-enc-valid";
encClass = "ok";
break;
default:
console.error(
"Unexpected msgEncryptionState: " +
Enigmail.hdrView.msgEncryptionState
);
}
document.getElementById("techLabel").textContent = "- OpenPGP";
const encryptionLabel = document.getElementById("encryptionLabel");
// eslint-disable-next-line mozilla/prefer-formatValues
encryptionLabel.textContent = await document.l10n.formatValue(encInfoLabel);
// Remove the second class to properly update the encryption icon.
encryptionLabel.classList.remove(encryptionLabel.classList.item(1));
encryptionLabel.classList.add(encClass);
document.getElementById("encryptionExplanation").textContent =
// eslint-disable-next-line mozilla/prefer-formatValues
await document.l10n.formatValue(encInfo);
document.getElementById("packetDumpView").hidden =
!Enigmail.hdrView.packetDump;
if (Enigmail.hdrView.msgSignatureKeyId) {
const sigKeyInfo = EnigmailKeyRing.getKeyById(
Enigmail.hdrView.msgSignatureKeyId
);
document.getElementById("signatureKey").collapsed = false;
if (
sigKeyInfo &&
sigKeyInfo.keyId != Enigmail.hdrView.msgSignatureKeyId
) {
document.l10n.setAttributes(
document.getElementById("signatureKeyId"),
"openpgp-sig-key-id-with-subkey-id",
{
key: `0x${sigKeyInfo.keyId}`,
subkey: `0x${Enigmail.hdrView.msgSignatureKeyId}`,
}
);
} else {
document.l10n.setAttributes(
document.getElementById("signatureKeyId"),
"openpgp-sig-key-id",
{
key: `0x${Enigmail.hdrView.msgSignatureKeyId}`,
}
);
}
if (sigKeyInfo) {
document.getElementById("viewSignatureKey").collapsed = false;
gSigKeyId = Enigmail.hdrView.msgSignatureKeyId;
}
}
let myIdToSkipInList;
if (
Enigmail.hdrView.msgEncryptionKeyId &&
Enigmail.hdrView.msgEncryptionKeyId.keyId
) {
myIdToSkipInList = Enigmail.hdrView.msgEncryptionKeyId.keyId;
// If we were given a separate primaryKeyId, it means keyId is a subkey.
const havePrimaryId = !!Enigmail.hdrView.msgEncryptionKeyId.primaryKeyId;
document.getElementById("encryptionKey").collapsed = false;
if (havePrimaryId) {
document.l10n.setAttributes(
document.getElementById("encryptionKeyId"),
"openpgp-enc-key-with-subkey-id",
{
key: `0x${Enigmail.hdrView.msgEncryptionKeyId.primaryKeyId}`,
subkey: `0x${Enigmail.hdrView.msgEncryptionKeyId.keyId}`,
}
);
} else {
document.l10n.setAttributes(
document.getElementById("encryptionKeyId"),
"openpgp-enc-key-id",
{
key: `0x${Enigmail.hdrView.msgEncryptionKeyId.keyId}`,
}
);
}
if (
EnigmailKeyRing.getKeyById(Enigmail.hdrView.msgEncryptionKeyId.keyId)
) {
document.getElementById("viewEncryptionKey").collapsed = false;
gEncKeyId = Enigmail.hdrView.msgEncryptionKeyId.keyId;
}
}
const otherLabel = document.getElementById("otherLabel");
if (myIdToSkipInList) {
document.l10n.setAttributes(
otherLabel,
"openpgp-other-enc-additional-key-ids"
);
} else {
document.l10n.setAttributes(otherLabel, "openpgp-other-enc-all-key-ids");
}
if (!Enigmail.hdrView.msgEncryptionAllKeyIds) {
return;
}
const keyList = document.getElementById("otherEncryptionKeysList");
// Remove all the previously populated keys.
while (keyList.lastChild) {
keyList.removeChild(keyList.lastChild);
}
let showExtraKeysList = false;
for (const key of Enigmail.hdrView.msgEncryptionAllKeyIds) {
if (key.keyId == myIdToSkipInList) {
continue;
}
const container = document.createXULElement("vbox");
container.classList.add("other-key-row");
const havePrimaryId2 = !!key.primaryKeyId;
const keyInfo = EnigmailKeyRing.getKeyById(
havePrimaryId2 ? key.primaryKeyId : key.keyId
);
// Use textContent for label XUl elements to enable text wrapping.
if (keyInfo?.userId) {
const name = document.createXULElement("label");
name.classList.add("openpgp-key-name");
name.setAttribute("context", "simpleCopyPopup");
name.textContent = keyInfo.userId;
container.appendChild(name);
}
const id = document.createXULElement("label");
id.setAttribute("context", "simpleCopyPopup");
id.classList.add("openpgp-key-id");
id.textContent = havePrimaryId2
? ` 0x${key.primaryKeyId} (0x${key.keyId})`
: ` 0x${key.keyId}`;
container.appendChild(id);
keyList.appendChild(container);
showExtraKeysList = true;
}
// Show extra keys if present in the message.
document.getElementById("otherEncryptionKeys").collapsed =
!showExtraKeysList;
},