LCOV - code coverage report
Current view: top level - security/manager/ssl - nsNSSCertTrust.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 143 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 19 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* This Source Code Form is subject to the terms of the Mozilla Public
       2             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       3             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       4             : 
       5             : #include "nsNSSCertTrust.h"
       6             : 
       7             : void
       8           0 : nsNSSCertTrust::AddCATrust(bool ssl, bool email, bool objSign)
       9             : {
      10           0 :   if (ssl) {
      11           0 :     addTrust(&mTrust.sslFlags, CERTDB_TRUSTED_CA);
      12           0 :     addTrust(&mTrust.sslFlags, CERTDB_TRUSTED_CLIENT_CA);
      13             :   }
      14           0 :   if (email) {
      15           0 :     addTrust(&mTrust.emailFlags, CERTDB_TRUSTED_CA);
      16           0 :     addTrust(&mTrust.emailFlags, CERTDB_TRUSTED_CLIENT_CA);
      17             :   }
      18           0 :   if (objSign) {
      19           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_TRUSTED_CA);
      20           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_TRUSTED_CLIENT_CA);
      21             :   }
      22           0 : }
      23             : 
      24             : void
      25           0 : nsNSSCertTrust::AddPeerTrust(bool ssl, bool email, bool objSign)
      26             : {
      27           0 :   if (ssl)
      28           0 :     addTrust(&mTrust.sslFlags, CERTDB_TRUSTED);
      29           0 :   if (email)
      30           0 :     addTrust(&mTrust.emailFlags, CERTDB_TRUSTED);
      31           0 :   if (objSign)
      32           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_TRUSTED);
      33           0 : }
      34             : 
      35           0 : nsNSSCertTrust::nsNSSCertTrust()
      36             : {
      37           0 :   memset(&mTrust, 0, sizeof(CERTCertTrust));
      38           0 : }
      39             : 
      40           0 : nsNSSCertTrust::nsNSSCertTrust(unsigned int ssl,
      41             :                                unsigned int email,
      42           0 :                                unsigned int objsign)
      43             : {
      44           0 :   memset(&mTrust, 0, sizeof(CERTCertTrust));
      45           0 :   addTrust(&mTrust.sslFlags, ssl);
      46           0 :   addTrust(&mTrust.emailFlags, email);
      47           0 :   addTrust(&mTrust.objectSigningFlags, objsign);
      48           0 : }
      49             : 
      50           0 : nsNSSCertTrust::nsNSSCertTrust(CERTCertTrust *t)
      51             : {
      52           0 :   if (t)
      53           0 :     memcpy(&mTrust, t, sizeof(CERTCertTrust));
      54             :   else
      55           0 :     memset(&mTrust, 0, sizeof(CERTCertTrust));
      56           0 : }
      57             : 
      58           0 : nsNSSCertTrust::~nsNSSCertTrust()
      59             : {
      60           0 : }
      61             : 
      62             : void
      63           0 : nsNSSCertTrust::SetSSLTrust(bool peer, bool tPeer,
      64             :                             bool ca,   bool tCA, bool tClientCA,
      65             :                             bool user, bool warn)
      66             : {
      67           0 :   mTrust.sslFlags = 0;
      68           0 :   if (peer || tPeer)
      69           0 :     addTrust(&mTrust.sslFlags, CERTDB_TERMINAL_RECORD);
      70           0 :   if (tPeer)
      71           0 :     addTrust(&mTrust.sslFlags, CERTDB_TRUSTED);
      72           0 :   if (ca || tCA)
      73           0 :     addTrust(&mTrust.sslFlags, CERTDB_VALID_CA);
      74           0 :   if (tClientCA)
      75           0 :     addTrust(&mTrust.sslFlags, CERTDB_TRUSTED_CLIENT_CA);
      76           0 :   if (tCA)
      77           0 :     addTrust(&mTrust.sslFlags, CERTDB_TRUSTED_CA);
      78           0 :   if (user)
      79           0 :     addTrust(&mTrust.sslFlags, CERTDB_USER);
      80           0 :   if (warn)
      81           0 :     addTrust(&mTrust.sslFlags, CERTDB_SEND_WARN);
      82           0 : }
      83             : 
      84             : void
      85           0 : nsNSSCertTrust::SetEmailTrust(bool peer, bool tPeer,
      86             :                               bool ca,   bool tCA, bool tClientCA,
      87             :                               bool user, bool warn)
      88             : {
      89           0 :   mTrust.emailFlags = 0;
      90           0 :   if (peer || tPeer)
      91           0 :     addTrust(&mTrust.emailFlags, CERTDB_TERMINAL_RECORD);
      92           0 :   if (tPeer)
      93           0 :     addTrust(&mTrust.emailFlags, CERTDB_TRUSTED);
      94           0 :   if (ca || tCA)
      95           0 :     addTrust(&mTrust.emailFlags, CERTDB_VALID_CA);
      96           0 :   if (tClientCA)
      97           0 :     addTrust(&mTrust.emailFlags, CERTDB_TRUSTED_CLIENT_CA);
      98           0 :   if (tCA)
      99           0 :     addTrust(&mTrust.emailFlags, CERTDB_TRUSTED_CA);
     100           0 :   if (user)
     101           0 :     addTrust(&mTrust.emailFlags, CERTDB_USER);
     102           0 :   if (warn)
     103           0 :     addTrust(&mTrust.emailFlags, CERTDB_SEND_WARN);
     104           0 : }
     105             : 
     106             : void
     107           0 : nsNSSCertTrust::SetObjSignTrust(bool peer, bool tPeer,
     108             :                                 bool ca,   bool tCA, bool tClientCA,
     109             :                                 bool user, bool warn)
     110             : {
     111           0 :   mTrust.objectSigningFlags = 0;
     112           0 :   if (peer || tPeer)
     113           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_TERMINAL_RECORD);
     114           0 :   if (tPeer)
     115           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_TRUSTED);
     116           0 :   if (ca || tCA)
     117           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_VALID_CA);
     118           0 :   if (tClientCA)
     119           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_TRUSTED_CLIENT_CA);
     120           0 :   if (tCA)
     121           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_TRUSTED_CA);
     122           0 :   if (user)
     123           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_USER);
     124           0 :   if (warn)
     125           0 :     addTrust(&mTrust.objectSigningFlags, CERTDB_SEND_WARN);
     126           0 : }
     127             : 
     128             : void
     129           0 : nsNSSCertTrust::SetValidCA()
     130             : {
     131             :   SetSSLTrust(false, false,
     132             :               true, false, false,
     133           0 :               false, false);
     134             :   SetEmailTrust(false, false,
     135             :                 true, false, false,
     136           0 :                 false, false);
     137             :   SetObjSignTrust(false, false,
     138             :                   true, false, false,
     139           0 :                   false, false);
     140           0 : }
     141             : 
     142             : void
     143           0 : nsNSSCertTrust::SetValidPeer()
     144             : {
     145             :   SetSSLTrust(true, false,
     146             :               false, false, false,
     147           0 :               false, false);
     148             :   SetEmailTrust(true, false,
     149             :                 false, false, false,
     150           0 :                 false, false);
     151             :   SetObjSignTrust(true, false,
     152             :                   false, false, false,
     153           0 :                   false, false);
     154           0 : }
     155             : 
     156             : bool
     157           0 : nsNSSCertTrust::HasAnyCA()
     158             : {
     159           0 :   if (hasTrust(mTrust.sslFlags, CERTDB_VALID_CA) ||
     160           0 :       hasTrust(mTrust.emailFlags, CERTDB_VALID_CA) ||
     161           0 :       hasTrust(mTrust.objectSigningFlags, CERTDB_VALID_CA))
     162           0 :     return true;
     163           0 :   return false;
     164             : }
     165             : 
     166             : bool
     167           0 : nsNSSCertTrust::HasPeer(bool checkSSL,
     168             :                         bool checkEmail,
     169             :                         bool checkObjSign)
     170             : {
     171           0 :   if (checkSSL && !hasTrust(mTrust.sslFlags, CERTDB_TERMINAL_RECORD))
     172           0 :     return false;
     173           0 :   if (checkEmail && !hasTrust(mTrust.emailFlags, CERTDB_TERMINAL_RECORD))
     174           0 :     return false;
     175           0 :   if (checkObjSign && !hasTrust(mTrust.objectSigningFlags, CERTDB_TERMINAL_RECORD))
     176           0 :     return false;
     177           0 :   return true;
     178             : }
     179             : 
     180             : bool
     181           0 : nsNSSCertTrust::HasAnyUser()
     182             : {
     183           0 :   if (hasTrust(mTrust.sslFlags, CERTDB_USER) ||
     184           0 :       hasTrust(mTrust.emailFlags, CERTDB_USER) ||
     185           0 :       hasTrust(mTrust.objectSigningFlags, CERTDB_USER))
     186           0 :     return true;
     187           0 :   return false;
     188             : }
     189             : 
     190             : bool
     191           0 : nsNSSCertTrust::HasTrustedCA(bool checkSSL,
     192             :                              bool checkEmail,
     193             :                              bool checkObjSign)
     194             : {
     195           0 :   if (checkSSL && !(hasTrust(mTrust.sslFlags, CERTDB_TRUSTED_CA) ||
     196           0 :                     hasTrust(mTrust.sslFlags, CERTDB_TRUSTED_CLIENT_CA)))
     197           0 :     return false;
     198           0 :   if (checkEmail && !(hasTrust(mTrust.emailFlags, CERTDB_TRUSTED_CA) ||
     199           0 :                       hasTrust(mTrust.emailFlags, CERTDB_TRUSTED_CLIENT_CA)))
     200           0 :     return false;
     201           0 :   if (checkObjSign &&
     202           0 :        !(hasTrust(mTrust.objectSigningFlags, CERTDB_TRUSTED_CA) ||
     203           0 :          hasTrust(mTrust.objectSigningFlags, CERTDB_TRUSTED_CLIENT_CA)))
     204           0 :     return false;
     205           0 :   return true;
     206             : }
     207             : 
     208             : bool
     209           0 : nsNSSCertTrust::HasTrustedPeer(bool checkSSL,
     210             :                                bool checkEmail,
     211             :                                bool checkObjSign)
     212             : {
     213           0 :   if (checkSSL && !(hasTrust(mTrust.sslFlags, CERTDB_TRUSTED)))
     214           0 :     return false;
     215           0 :   if (checkEmail && !(hasTrust(mTrust.emailFlags, CERTDB_TRUSTED)))
     216           0 :     return false;
     217           0 :   if (checkObjSign &&
     218           0 :        !(hasTrust(mTrust.objectSigningFlags, CERTDB_TRUSTED)))
     219           0 :     return false;
     220           0 :   return true;
     221             : }
     222             : 
     223             : void
     224           0 : nsNSSCertTrust::addTrust(unsigned int *t, unsigned int v)
     225             : {
     226           0 :   *t |= v;
     227           0 : }
     228             : 
     229             : bool
     230           0 : nsNSSCertTrust::hasTrust(unsigned int t, unsigned int v)
     231             : {
     232           0 :   return !!(t & v);
     233             : }

Generated by: LCOV version 1.13