home *** CD-ROM | disk | FTP | other *** search
-
- var gSignedUINode = null;
- var gEncryptedUINode = null;
- var gSMIMEContainer = null;
- var gStatusBar = null;
-
- var gEncryptedURIService = null;
- var gMyLastEncryptedURI = null;
-
- // manipulates some globals from msgReadSMIMEOverlay.js
-
- const nsICMSMessageErrors = Components.interfaces.nsICMSMessageErrors;
-
- var smimeHeaderSink =
- {
- maxWantedNesting: function()
- {
- return 1;
- },
-
- signedStatus: function(aNestingLevel, aSignatureStatus, aSignerCert)
- {
- if (aNestingLevel > 1) {
- // we are not interested
- return;
- }
-
- gSignatureStatus = aSignatureStatus;
- gSignerCert = aSignerCert;
-
- gSMIMEContainer.collapsed = false;
- gSignedUINode.collapsed = false;
-
- switch (aSignatureStatus) {
- case nsICMSMessageErrors.SUCCESS:
- gSignedUINode.setAttribute("signed", "ok");
- gStatusBar.setAttribute("signed", "ok");
- break;
-
- case nsICMSMessageErrors.VERIFY_NOT_YET_ATTEMPTED:
- gSignedUINode.setAttribute("signed", "unknown");
- gStatusBar.setAttribute("signed", "unknown");
- break;
-
- case nsICMSMessageErrors.VERIFY_CERT_WITHOUT_ADDRESS:
- case nsICMSMessageErrors.VERIFY_HEADER_MISMATCH:
- gSignedUINode.setAttribute("signed", "mismatch");
- gStatusBar.setAttribute("signed", "mismatch");
- break;
-
- default:
- gSignedUINode.setAttribute("signed", "notok");
- gStatusBar.setAttribute("signed", "notok");
- break;
- }
- },
-
- encryptionStatus: function(aNestingLevel, aEncryptionStatus, aRecipientCert)
- {
- if (aNestingLevel > 1) {
- // we are not interested
- return;
- }
-
- gEncryptionStatus = aEncryptionStatus;
- gEncryptionCert = aRecipientCert;
-
- gSMIMEContainer.collapsed = false;
- gEncryptedUINode.collapsed = false;
-
- if (nsICMSMessageErrors.SUCCESS == aEncryptionStatus)
- {
- gEncryptedUINode.setAttribute("encrypted", "ok");
- gStatusBar.setAttribute("encrypted", "ok");
- }
- else
- {
- gEncryptedUINode.setAttribute("encrypted", "notok");
- gStatusBar.setAttribute("encrypted", "notok");
- }
-
- if (gEncryptedURIService)
- {
- gMyLastEncryptedURI = GetLoadedMessage();
- gEncryptedURIService.rememberEncrypted(gMyLastEncryptedURI);
- }
- },
-
- QueryInterface : function(iid)
- {
- if (iid.equals(Components.interfaces.nsIMsgSMIMEHeaderSink) || iid.equals(Components.interfaces.nsISupports))
- return this;
- throw Components.results.NS_NOINTERFACE;
- }
- };
-
- function forgetEncryptedURI()
- {
- if (gMyLastEncryptedURI && gEncryptedURIService)
- {
- gEncryptedURIService.forgetEncrypted(gMyLastEncryptedURI);
- gMyLastEncryptedURI = null;
- }
- }
-
- function onSMIMEStartHeaders()
- {
- gEncryptionStatus = -1;
- gSignatureStatus = -1;
-
- gSignerCert = null;
- gEncryptionCert = null;
-
- gSMIMEContainer.collapsed = true;
-
- gSignedUINode.collapsed = true;
- gSignedUINode.removeAttribute("signed");
- gStatusBar.removeAttribute("signed");
-
- gEncryptedUINode.collapsed = true;
- gEncryptedUINode.removeAttribute("encrypted");
- gStatusBar.removeAttribute("encrypted");
-
- forgetEncryptedURI();
- }
-
- function onSMIMEEndHeaders()
- {}
-
- function msgHdrViewSMIMEOnLoad(event)
- {
- // we want to register our security header sink as an opaque nsISupports
- // on the msgHdrSink used by mail.....
- msgWindow.msgHeaderSink.securityInfo = smimeHeaderSink;
-
- gSignedUINode = document.getElementById('signedHdrIcon');
- gEncryptedUINode = document.getElementById('encryptedHdrIcon');
- gSMIMEContainer = document.getElementById('smimeBox');
- gStatusBar = document.getElementById('status-bar');
-
- // add ourself to the list of message display listeners so we get notified when we are about to display a
- // message.
- var listener = {};
- listener.onStartHeaders = onSMIMEStartHeaders;
- listener.onEndHeaders = onSMIMEEndHeaders;
- gMessageListeners.push(listener);
-
- gEncryptedURIService =
- Components.classes["@mozilla.org/messenger-smime/smime-encrypted-uris-service;1"]
- .getService(Components.interfaces.nsIEncryptedSMIMEURIsService);
- }
-
- function msgHdrViewSMIMEOnUnload(event)
- {
- forgetEncryptedURI();
- }
-
- function msgHdrViewSMIMEOnMessagePaneHide()
- {
- gSMIMEContainer.collapsed = true;
- gSignedUINode.collapsed = true;
- gEncryptedUINode.collapsed = true;
- }
-
- function msgHdrViewSMIMEOnMessagePaneUnhide()
- {
- if (gEncryptionStatus != -1 || gSignatureStatus != -1)
- {
- gSMIMEContainer.collapsed = false;
-
- if (gSignatureStatus != -1)
- {
- gSignedUINode.collapsed = false;
- }
-
- if (gEncryptionStatus != -1)
- {
- gEncryptedUINode.collapsed = false;
- }
- }
- }
-
- addEventListener('messagepane-loaded', msgHdrViewSMIMEOnLoad, true);
- addEventListener('messagepane-unloaded', msgHdrViewSMIMEOnUnload, true);
- addEventListener('messagepane-hide', msgHdrViewSMIMEOnMessagePaneHide, true);
- addEventListener('messagepane-unhide', msgHdrViewSMIMEOnMessagePaneUnhide, true);
-