home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 May / PCWorld_2003-05_cd.bin / Komunik / phoenix / chrome / pippki.jar / content / pippki / PageInfoOverlay.xul < prev    next >
Extensible Markup Language  |  2002-09-17  |  8KB  |  232 lines

  1. <?xml version="1.0"?>
  2. <!-- 
  3.    - The contents of this file are subject to the Mozilla Public
  4.    - License Version 1.1 (the "License"); you may not use this file
  5.    - except in compliance with the License. You may obtain a copy of
  6.    - the License at http://www.mozilla.org/MPL/
  7.    - 
  8.    - Software distributed under the License is distributed on an "AS
  9.    - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  10.    - implied. See the License for the specific language governing
  11.    - rights and limitations under the License.
  12.    - 
  13.    - The Original Code is mozilla.org code.
  14.    - 
  15.    - The Initial Developer of the Original Code is Netscape
  16.    - Communications Corp.  Portions created by Netscape are
  17.    - Copyright (C) 2001 Netscape Communications Corp.  All
  18.    - Rights Reserved.
  19.    - 
  20.    - Contributor(s):
  21.    -   Terry Hayes <thayes@netscape.com>
  22.   -->
  23.  
  24. <!-- This file extends "chrome://navigator/content/pageInfo.xul" -->
  25.  
  26. <!DOCTYPE overlay SYSTEM "chrome://pippki/locale/PageInfoOverlay.dtd">
  27.  
  28. <overlay id="pipPageInfoOverlayID"
  29.          xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  30.   <script type="application/x-javascript" src="chrome://global/content/strres.js"/>
  31.   <script type="application/x-javascript" src="chrome://pippki/content/pippki.js"/>
  32.   <script type="application/x-javascript">
  33.   <![CDATA[
  34.     var security = {
  35.       // Display the server certificate (static)
  36.       viewCert : function () {
  37.         var cert = security._cert;
  38.         viewCertHelper(window, cert);
  39.       },
  40.  
  41.       _getSecurityInfo : function() {
  42.         const nsIX509Cert = Components.interfaces.nsIX509Cert;
  43.         const nsIX509CertDB = Components.interfaces.nsIX509CertDB;
  44.         const nsX509CertDB = "@mozilla.org/security/x509certdb;1";
  45.         const nsISSLStatusProvider = Components.interfaces.nsISSLStatusProvider;
  46.         const nsISSLStatus = Components.interfaces.nsISSLStatus;
  47.  
  48.         // Get the window for this information
  49.         var w;
  50.         if ("arguments" in window && window.arguments.length > 0 && window.arguments[0])
  51.         {
  52.           w = window.arguments[0];
  53.  
  54.           // We don't have separate info for a frame, return null until further notice
  55.           // (see bug 138479)
  56.           return null;
  57.         }
  58.         else if ("gBrowser" in window.opener)
  59.           w = window.opener.gBrowser.contentWindow;
  60.         else
  61.           w = window.opener.frames[0];
  62.  
  63.         var hName = null;
  64.         try
  65.         {
  66.            hName = w.location.host;
  67.         } catch(exception){}
  68.  
  69.         var ui = security._getSecurityUI();
  70.         var status = null;
  71.         var sp = null;
  72.         if (ui) {
  73.           sp = ui.QueryInterface(nsISSLStatusProvider);
  74.           if (sp)
  75.             status = sp.SSLStatus;
  76.         }
  77.         if (status) {
  78.           status = status.QueryInterface(nsISSLStatus);
  79.         }
  80.         if (status) {
  81.           var cert = status.serverCert;
  82.           var issuerName;
  83.  
  84.           issuerName = this.mapIssuerOrganization(cert.issuerOrganization);
  85.           if (!issuerName) issuerName = cert.issuerName;
  86.         
  87.           return {
  88.             hostName : hName,
  89.             cAName : issuerName,
  90.             encryptionAlgorithm : status.cipherName,
  91.             encryptionStrength : status.secretKeyLength,
  92.             cert : cert
  93.           };
  94.         } else {
  95.           return {
  96.             hostName : hName,
  97.             cAName : "",
  98.             encryptionAlgorithm : "",
  99.             encryptionStrength : 0,
  100.             cert : null
  101.           };
  102.         } 
  103.       },
  104.  
  105.       // Find the secureBrowserUI object (if present)
  106.       _getSecurityUI : function() {
  107.         if ("gBrowser" in window.opener)
  108.           return window.opener.gBrowser.securityUI;
  109.         return null;
  110.       },
  111.  
  112.       // Interface for mapping a certificate issuer organization to
  113.       // the value to be displayed.
  114.       // Bug 82017 - this implementation should be moved to pipnss C++ code
  115.       mapIssuerOrganization: function(name) {
  116.         if (!name) return null;
  117.  
  118.         if (name == "RSA Data Security, Inc.") return "Verisign, Inc.";
  119.  
  120.         // No mapping required
  121.         return name;
  122.       },
  123.  
  124.       _cert : null
  125.     };
  126.  
  127.     function securityOnLoad() {
  128.       var bundle = srGetStrBundle("chrome://pippki/locale/pippki.properties");
  129.  
  130.       var info = security._getSecurityInfo();
  131.       if (!info) {
  132.         document.getElementById("securityTab").setAttribute("hidden", true);
  133.         return;
  134.       }
  135.  
  136.       var idHdr;
  137.       var message1;
  138.       var message2;
  139.  
  140.       /* Set the identification messages */
  141.       if (info.cert)
  142.       {
  143.         idHdr = bundle.GetStringFromName("pageInfo_WebSiteVerified");
  144.         document.getElementById("security-identity").setAttribute("value", idHdr);
  145.  
  146.         message1 = bundle.formatStringFromName("pageInfo_Identity_Verified", 
  147.                                 [ info.hostName, info.cAName ],
  148.                                 2);
  149.         setText("security-identity-text", message1);
  150.  
  151.         var viewText = bundle.GetStringFromName("pageInfo_ViewCertificate");
  152.         setText("security-view-text", viewText);
  153.         security._cert = info.cert;
  154.       } else {
  155.         idHdr = bundle.GetStringFromName("pageInfo_SiteNotVerified");
  156.         document.getElementById("security-identity").setAttribute("value", idHdr);
  157.  
  158.         document.getElementById("security-view-cert").setAttribute("disabled", "true");
  159.         document.getElementById("security-view-cert").setAttribute("hidden", "true");
  160.       }
  161.  
  162.       var hdr;
  163.       var msg1;
  164.       var msg2;
  165.       
  166.       /* Set the encryption messages */
  167.       if (info.encryptionStrength >= 90) {
  168.         hdr = bundle.formatStringFromName("pageInfo_StrongEncryption",
  169.                              [ info.encryptionAlgorithm, info.encryptionStrength+"" ], 2);
  170.         document.getElementById("security-privacy").setAttribute("value", hdr);
  171.  
  172.         msg1 = bundle.GetStringFromName("pageInfo_Privacy_Strong1");
  173.         setText("security-privacy-msg1", msg1);
  174.  
  175.         msg2 = bundle.GetStringFromName("pageInfo_Privacy_Strong2");
  176.         setText("security-privacy-msg2", msg2);
  177.  
  178.         security._cert = info.cert;
  179.       } else if (info.encryptionStrength > 0) {
  180.         hdr = bundle.formatStringFromName("pageInfo_WeakEncryption",
  181.                              [ info.encryptionAlgorithm, info.encryptionStrength+"" ], 2);
  182.         document.getElementById("security-privacy").setAttribute("value", hdr);
  183.  
  184.         msg1 = bundle.formatStringFromName("pageInfo_Privacy_Weak1",
  185.                                                [ info.hostName ], 1);
  186.         setText("security-privacy-msg1", msg1);
  187.  
  188.         msg2 = bundle.GetStringFromName("pageInfo_Privacy_Weak2");
  189.         setText("security-privacy-msg2", msg2);
  190.       } else {
  191.         hdr = bundle.GetStringFromName("pageInfo_NoEncryption");
  192.         document.getElementById("security-privacy").setAttribute("value", hdr);
  193.  
  194.         if(info.hostName != null)
  195.           msg1 = bundle.formatStringFromName("pageInfo_Privacy_None1", [ info.hostName ], 1);
  196.         else
  197.           msg1 = bundle.GetStringFromName("pageInfo_Privacy_None3");
  198.  
  199.         setText("security-privacy-msg1", msg1);
  200.  
  201.         msg2 = bundle.GetStringFromName("pageInfo_Privacy_None2");
  202.         setText("security-privacy-msg2", msg2);
  203.       }
  204.     }
  205.  
  206.     /* Register for pageInfo onload calls */
  207.     onLoadRegistry.push(securityOnLoad);
  208.   ]]>
  209.   </script>
  210.   <tabs id="tabs">
  211.     <tab id="securityTab" label="&pageInfo.securityTab;"
  212.          accesskey="&pageInfo.accesskey;"/>
  213.   </tabs>
  214.   <tabpanels id="tabpanels">
  215.     <vbox id="securityPanel" flex="1">
  216.       <label id="security-identity" class="header"/>
  217.       <description id="security-identity-text" flex="1"/>
  218.       <hbox align="center">
  219.         <button id="security-view-cert" label="&pageInfo.view.label;" 
  220.                 oncommand="security.viewCert();"/>
  221.         <description id="security-view-text" flex="1"/>
  222.       </hbox>
  223.       <separator class="groove"/>
  224.       <label id="security-privacy" class="header"/>
  225.       <vbox flex="1">
  226.         <description id="security-privacy-msg1"/>
  227.         <description id="security-privacy-msg2"/>
  228.       </vbox>
  229.     </vbox>
  230.   </tabpanels>
  231. </overlay>
  232.