From 302bf1b523012e11b60425d6eee1221ebc2724eb Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Sun, 3 Nov 2019 00:17:46 -0400 Subject: Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1 --- mailnews/extensions/smime/content/am-smime.js | 478 ++++++++ mailnews/extensions/smime/content/am-smime.xul | 26 + .../smime/content/am-smimeIdentityEditOverlay.xul | 39 + .../extensions/smime/content/am-smimeOverlay.xul | 102 ++ .../extensions/smime/content/certFetchingStatus.js | 265 +++++ .../smime/content/certFetchingStatus.xul | 24 + mailnews/extensions/smime/content/certpicker.js | 73 ++ mailnews/extensions/smime/content/certpicker.xul | 38 + .../smime/content/msgCompSMIMEOverlay.js | 357 ++++++ .../smime/content/msgCompSMIMEOverlay.xul | 85 ++ .../smime/content/msgCompSecurityInfo.js | 244 ++++ .../smime/content/msgCompSecurityInfo.xul | 68 ++ .../smime/content/msgHdrViewSMIMEOverlay.js | 264 +++++ .../smime/content/msgHdrViewSMIMEOverlay.xul | 29 + .../smime/content/msgReadSMIMEOverlay.js | 102 ++ .../smime/content/msgReadSMIMEOverlay.xul | 34 + .../smime/content/msgReadSecurityInfo.js | 232 ++++ .../smime/content/msgReadSecurityInfo.xul | 68 ++ mailnews/extensions/smime/content/smime.js | 14 + mailnews/extensions/smime/jar.mn | 30 + mailnews/extensions/smime/moz.build | 15 + mailnews/extensions/smime/public/moz.build | 15 + .../extensions/smime/public/nsICertPickDialogs.idl | 30 + .../smime/public/nsIEncryptedSMIMEURIsSrvc.idl | 24 + .../smime/public/nsIMsgSMIMECompFields.idl | 18 + .../smime/public/nsIMsgSMIMEHeaderSink.idl | 23 + .../extensions/smime/public/nsISMimeJSHelper.idl | 73 ++ .../extensions/smime/public/nsIUserCertPicker.idl | 28 + mailnews/extensions/smime/src/moz.build | 23 + mailnews/extensions/smime/src/nsCertPicker.cpp | 471 ++++++++ mailnews/extensions/smime/src/nsCertPicker.h | 36 + .../smime/src/nsEncryptedSMIMEURIsService.cpp | 36 + .../smime/src/nsEncryptedSMIMEURIsService.h | 25 + .../extensions/smime/src/nsMsgComposeSecure.cpp | 1203 ++++++++++++++++++++ mailnews/extensions/smime/src/nsMsgComposeSecure.h | 106 ++ mailnews/extensions/smime/src/nsMsgSMIMECID.h | 42 + mailnews/extensions/smime/src/nsSMimeJSHelper.cpp | 335 ++++++ mailnews/extensions/smime/src/nsSMimeJSHelper.h | 26 + mailnews/extensions/smime/src/smime-service.js | 24 + .../extensions/smime/src/smime-service.manifest | 3 + 40 files changed, 5128 insertions(+) create mode 100644 mailnews/extensions/smime/content/am-smime.js create mode 100644 mailnews/extensions/smime/content/am-smime.xul create mode 100644 mailnews/extensions/smime/content/am-smimeIdentityEditOverlay.xul create mode 100644 mailnews/extensions/smime/content/am-smimeOverlay.xul create mode 100644 mailnews/extensions/smime/content/certFetchingStatus.js create mode 100644 mailnews/extensions/smime/content/certFetchingStatus.xul create mode 100644 mailnews/extensions/smime/content/certpicker.js create mode 100644 mailnews/extensions/smime/content/certpicker.xul create mode 100644 mailnews/extensions/smime/content/msgCompSMIMEOverlay.js create mode 100644 mailnews/extensions/smime/content/msgCompSMIMEOverlay.xul create mode 100644 mailnews/extensions/smime/content/msgCompSecurityInfo.js create mode 100644 mailnews/extensions/smime/content/msgCompSecurityInfo.xul create mode 100644 mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.js create mode 100644 mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.xul create mode 100644 mailnews/extensions/smime/content/msgReadSMIMEOverlay.js create mode 100644 mailnews/extensions/smime/content/msgReadSMIMEOverlay.xul create mode 100644 mailnews/extensions/smime/content/msgReadSecurityInfo.js create mode 100644 mailnews/extensions/smime/content/msgReadSecurityInfo.xul create mode 100644 mailnews/extensions/smime/content/smime.js create mode 100644 mailnews/extensions/smime/jar.mn create mode 100644 mailnews/extensions/smime/moz.build create mode 100644 mailnews/extensions/smime/public/moz.build create mode 100644 mailnews/extensions/smime/public/nsICertPickDialogs.idl create mode 100644 mailnews/extensions/smime/public/nsIEncryptedSMIMEURIsSrvc.idl create mode 100644 mailnews/extensions/smime/public/nsIMsgSMIMECompFields.idl create mode 100644 mailnews/extensions/smime/public/nsIMsgSMIMEHeaderSink.idl create mode 100644 mailnews/extensions/smime/public/nsISMimeJSHelper.idl create mode 100644 mailnews/extensions/smime/public/nsIUserCertPicker.idl create mode 100644 mailnews/extensions/smime/src/moz.build create mode 100644 mailnews/extensions/smime/src/nsCertPicker.cpp create mode 100644 mailnews/extensions/smime/src/nsCertPicker.h create mode 100644 mailnews/extensions/smime/src/nsEncryptedSMIMEURIsService.cpp create mode 100644 mailnews/extensions/smime/src/nsEncryptedSMIMEURIsService.h create mode 100644 mailnews/extensions/smime/src/nsMsgComposeSecure.cpp create mode 100644 mailnews/extensions/smime/src/nsMsgComposeSecure.h create mode 100644 mailnews/extensions/smime/src/nsMsgSMIMECID.h create mode 100644 mailnews/extensions/smime/src/nsSMimeJSHelper.cpp create mode 100644 mailnews/extensions/smime/src/nsSMimeJSHelper.h create mode 100644 mailnews/extensions/smime/src/smime-service.js create mode 100644 mailnews/extensions/smime/src/smime-service.manifest (limited to 'mailnews/extensions/smime') diff --git a/mailnews/extensions/smime/content/am-smime.js b/mailnews/extensions/smime/content/am-smime.js new file mode 100644 index 000000000..4a90d0cd7 --- /dev/null +++ b/mailnews/extensions/smime/content/am-smime.js @@ -0,0 +1,478 @@ +/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +Components.utils.import("resource://gre/modules/Services.jsm"); + +var nsIX509CertDB = Components.interfaces.nsIX509CertDB; +var nsX509CertDBContractID = "@mozilla.org/security/x509certdb;1"; +var nsIX509Cert = Components.interfaces.nsIX509Cert; + +var email_recipient_cert_usage = 5; +var email_signing_cert_usage = 4; + +var gIdentity; +var gPref = null; +var gEncryptionCertName = null; +var gHiddenEncryptionPolicy = null; +var gEncryptionChoices = null; +var gSignCertName = null; +var gSignMessages = null; +var gEncryptAlways = null; +var gNeverEncrypt = null; +var gBundle = null; +var gBrandBundle; +var gSmimePrefbranch; +var gEncryptionChoicesLocked; +var gSigningChoicesLocked; +var kEncryptionCertPref = "identity.encryption_cert_name"; +var kSigningCertPref = "identity.signing_cert_name"; + +function onInit() +{ + smimeInitializeFields(); +} + +function smimeInitializeFields() +{ + // initialize all of our elements based on the current identity values.... + gEncryptionCertName = document.getElementById(kEncryptionCertPref); + gHiddenEncryptionPolicy = document.getElementById("identity.encryptionpolicy"); + gEncryptionChoices = document.getElementById("encryptionChoices"); + gSignCertName = document.getElementById(kSigningCertPref); + gSignMessages = document.getElementById("identity.sign_mail"); + gEncryptAlways = document.getElementById("encrypt_mail_always"); + gNeverEncrypt = document.getElementById("encrypt_mail_never"); + gBundle = document.getElementById("bundle_smime"); + gBrandBundle = document.getElementById("bundle_brand"); + + gEncryptionChoicesLocked = false; + gSigningChoicesLocked = false; + + if (!gIdentity) { + // The user is going to create a new identity. + // Set everything to default values. + // Do not take over the values from gAccount.defaultIdentity + // as the new identity is going to have a different mail address. + + gEncryptionCertName.value = ""; + gEncryptionCertName.nickname = ""; + gEncryptionCertName.dbKey = ""; + gSignCertName.value = ""; + gSignCertName.nickname = ""; + gSignCertName.dbKey = ""; + + gEncryptAlways.setAttribute("disabled", true); + gNeverEncrypt.setAttribute("disabled", true); + gSignMessages.setAttribute("disabled", true); + + gSignMessages.checked = false; + gEncryptionChoices.value = 0; + } + else { + var certdb = Components.classes[nsX509CertDBContractID].getService(nsIX509CertDB); + var x509cert = null; + + gEncryptionCertName.value = gIdentity.getUnicharAttribute("encryption_cert_name"); + gEncryptionCertName.dbKey = gIdentity.getCharAttribute("encryption_cert_dbkey"); + // If we succeed in looking up the certificate by the dbkey pref, then + // append the serial number " [...]" to the display value, and remember the + // nickname in a separate property. + try { + if (certdb && gEncryptionCertName.dbKey && + (x509cert = certdb.findCertByDBKey(gEncryptionCertName.dbKey))) { + gEncryptionCertName.value = x509cert.nickname + " [" + x509cert.serialNumber + "]"; + gEncryptionCertName.nickname = x509cert.nickname; + } + } catch(e) {} + + gEncryptionChoices.value = gIdentity.getIntAttribute("encryptionpolicy"); + + if (!gEncryptionCertName.value) { + gEncryptAlways.setAttribute("disabled", true); + gNeverEncrypt.setAttribute("disabled", true); + } + else { + enableEncryptionControls(true); + } + + gSignCertName.value = gIdentity.getUnicharAttribute("signing_cert_name"); + gSignCertName.dbKey = gIdentity.getCharAttribute("signing_cert_dbkey"); + x509cert = null; + // same procedure as with gEncryptionCertName (see above) + try { + if (certdb && gSignCertName.dbKey && + (x509cert = certdb.findCertByDBKey(gSignCertName.dbKey))) { + gSignCertName.value = x509cert.nickname + " [" + x509cert.serialNumber + "]"; + gSignCertName.nickname = x509cert.nickname; + } + } catch(e) {} + + gSignMessages.checked = gIdentity.getBoolAttribute("sign_mail"); + if (!gSignCertName.value) + { + gSignMessages.setAttribute("disabled", true); + } + else { + enableSigningControls(true); + } + } + + // Always start with enabling signing and encryption cert select buttons. + // This will keep the visibility of buttons in a sane state as user + // jumps from security panel of one account to another. + enableCertSelectButtons(); + + // Disable all locked elements on the panel + if (gIdentity) + onLockPreference(); +} + +function onPreInit(account, accountValues) +{ + gIdentity = account.defaultIdentity; +} + +function onSave() +{ + smimeSave(); +} + +function smimeSave() +{ + // find out which radio for the encryption radio group is selected and set that on our hidden encryptionChoice pref.... + var newValue = gEncryptionChoices.value; + gHiddenEncryptionPolicy.setAttribute('value', newValue); + gIdentity.setIntAttribute("encryptionpolicy", newValue); + gIdentity.setUnicharAttribute("encryption_cert_name", + gEncryptionCertName.nickname || gEncryptionCertName.value); + gIdentity.setCharAttribute("encryption_cert_dbkey", gEncryptionCertName.dbKey); + + gIdentity.setBoolAttribute("sign_mail", gSignMessages.checked); + gIdentity.setUnicharAttribute("signing_cert_name", + gSignCertName.nickname || gSignCertName.value); + gIdentity.setCharAttribute("signing_cert_dbkey", gSignCertName.dbKey); +} + +function smimeOnAcceptEditor() +{ + try { + if (!onOk()) + return false; + } + catch (ex) {} + + smimeSave(); + + return true; +} + +function onLockPreference() +{ + var initPrefString = "mail.identity"; + var finalPrefString; + + var allPrefElements = [ + { prefstring:"signingCertSelectButton", id:"signingCertSelectButton"}, + { prefstring:"encryptionCertSelectButton", id:"encryptionCertSelectButton"}, + { prefstring:"sign_mail", id:"identity.sign_mail"}, + { prefstring:"encryptionpolicy", id:"encryptionChoices"} + ]; + + finalPrefString = initPrefString + "." + gIdentity.key + "."; + gSmimePrefbranch = Services.prefs.getBranch(finalPrefString); + + disableIfLocked( allPrefElements ); +} + + +// Does the work of disabling an element given the array which contains xul id/prefstring pairs. +// Also saves the id/locked state in an array so that other areas of the code can avoid +// stomping on the disabled state indiscriminately. +function disableIfLocked( prefstrArray ) +{ + var i; + for (i=0; i + + + + + + + + + + + + + diff --git a/mailnews/extensions/smime/content/am-smimeOverlay.xul b/mailnews/extensions/smime/content/am-smimeOverlay.xul new file mode 100644 index 000000000..eb76b4b2c --- /dev/null +++ b/mailnews/extensions/smime/content/am-smimeOverlay.xul @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + +