security/manager/ssl/src/nsNSSCertValidity.cpp

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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/. */
     5 #include "nsNSSCertValidity.h"
     6 #include "nsCOMPtr.h"
     7 #include "nsIDateTimeFormat.h"
     8 #include "nsDateTimeFormatCID.h"
     9 #include "nsComponentManagerUtils.h"
    10 #include "nsReadableUtils.h"
    11 #include "nsNSSShutDown.h"
    12 #include "cert.h"
    14 /* Implementation file */
    15 NS_IMPL_ISUPPORTS(nsX509CertValidity, nsIX509CertValidity)
    17 nsX509CertValidity::nsX509CertValidity() : mTimesInitialized(false)
    18 {
    19   /* member initializers and constructor code */
    20 }
    22 nsX509CertValidity::nsX509CertValidity(CERTCertificate *cert) : 
    23                                            mTimesInitialized(false)
    24 {
    25   nsNSSShutDownPreventionLock locker;
    26   if (cert) {
    27     SECStatus rv = CERT_GetCertTimes(cert, &mNotBefore, &mNotAfter);
    28     if (rv == SECSuccess)
    29       mTimesInitialized = true;
    30   }
    31 }
    33 nsX509CertValidity::~nsX509CertValidity()
    34 {
    35   /* destructor code */
    36 }
    38 /* readonly attribute PRTime notBefore; */
    39 NS_IMETHODIMP nsX509CertValidity::GetNotBefore(PRTime *aNotBefore)
    40 {
    41   NS_ENSURE_ARG(aNotBefore);
    43   nsresult rv = NS_ERROR_FAILURE;
    44   if (mTimesInitialized) {
    45     *aNotBefore = mNotBefore;
    46     rv = NS_OK;
    47   }
    48   return rv;
    49 }
    51 NS_IMETHODIMP nsX509CertValidity::GetNotBeforeLocalTime(nsAString &aNotBeforeLocalTime)
    52 {
    53   if (!mTimesInitialized)
    54     return NS_ERROR_FAILURE;
    56   nsresult rv;
    57   nsCOMPtr<nsIDateTimeFormat> dateFormatter =
    58      do_CreateInstance(NS_DATETIMEFORMAT_CONTRACTID, &rv);
    59   if (NS_FAILED(rv)) return rv;
    61   nsAutoString date;
    62   PRExplodedTime explodedTime;
    63   PR_ExplodeTime(mNotBefore, PR_LocalTimeParameters, &explodedTime);
    64   dateFormatter->FormatPRExplodedTime(nullptr, kDateFormatShort, kTimeFormatSecondsForce24Hour,
    65                                       &explodedTime, date);
    66   aNotBeforeLocalTime = date;
    67   return NS_OK;
    68 }
    70 NS_IMETHODIMP nsX509CertValidity::GetNotBeforeLocalDay(nsAString &aNotBeforeLocalDay)
    71 {
    72   if (!mTimesInitialized)
    73     return NS_ERROR_FAILURE;
    75   nsresult rv;
    76   nsCOMPtr<nsIDateTimeFormat> dateFormatter =
    77      do_CreateInstance(NS_DATETIMEFORMAT_CONTRACTID, &rv);
    78   if (NS_FAILED(rv)) return rv;
    80   nsAutoString date;
    81   PRExplodedTime explodedTime;
    82   PR_ExplodeTime(mNotBefore, PR_LocalTimeParameters, &explodedTime);
    83   dateFormatter->FormatPRExplodedTime(nullptr, kDateFormatShort, kTimeFormatNone,
    84                                       &explodedTime, date);
    85   aNotBeforeLocalDay = date;
    86   return NS_OK;
    87 }
    90 NS_IMETHODIMP nsX509CertValidity::GetNotBeforeGMT(nsAString &aNotBeforeGMT)
    91 {
    92   if (!mTimesInitialized)
    93     return NS_ERROR_FAILURE;
    95   nsresult rv;
    96   nsCOMPtr<nsIDateTimeFormat> dateFormatter =
    97      do_CreateInstance(NS_DATETIMEFORMAT_CONTRACTID, &rv);
    98   if (NS_FAILED(rv)) return rv;
   100   nsAutoString date;
   101   PRExplodedTime explodedTime;
   102   PR_ExplodeTime(mNotBefore, PR_GMTParameters, &explodedTime);
   103   dateFormatter->FormatPRExplodedTime(nullptr, kDateFormatShort, kTimeFormatSecondsForce24Hour,
   104                                       &explodedTime, date);
   105   aNotBeforeGMT = date;
   106   return NS_OK;
   107 }
   109 /* readonly attribute PRTime notAfter; */
   110 NS_IMETHODIMP nsX509CertValidity::GetNotAfter(PRTime *aNotAfter)
   111 {
   112   NS_ENSURE_ARG(aNotAfter);
   114   nsresult rv = NS_ERROR_FAILURE;
   115   if (mTimesInitialized) {
   116     *aNotAfter = mNotAfter;
   117     rv = NS_OK;
   118   }
   119   return rv;
   120 }
   122 NS_IMETHODIMP nsX509CertValidity::GetNotAfterLocalTime(nsAString &aNotAfterLocaltime)
   123 {
   124   if (!mTimesInitialized)
   125     return NS_ERROR_FAILURE;
   127   nsresult rv;
   128   nsCOMPtr<nsIDateTimeFormat> dateFormatter =
   129      do_CreateInstance(NS_DATETIMEFORMAT_CONTRACTID, &rv);
   130   if (NS_FAILED(rv)) return rv;
   132   nsAutoString date;
   133   PRExplodedTime explodedTime;
   134   PR_ExplodeTime(mNotAfter, PR_LocalTimeParameters, &explodedTime);
   135   dateFormatter->FormatPRExplodedTime(nullptr, kDateFormatShort, kTimeFormatSecondsForce24Hour,
   136                                       &explodedTime, date);
   137   aNotAfterLocaltime = date;
   138   return NS_OK;
   139 }
   141 NS_IMETHODIMP nsX509CertValidity::GetNotAfterLocalDay(nsAString &aNotAfterLocalDay)
   142 {
   143   if (!mTimesInitialized)
   144     return NS_ERROR_FAILURE;
   146   nsresult rv;
   147   nsCOMPtr<nsIDateTimeFormat> dateFormatter =
   148      do_CreateInstance(NS_DATETIMEFORMAT_CONTRACTID, &rv);
   149   if (NS_FAILED(rv)) return rv;
   151   nsAutoString date;
   152   PRExplodedTime explodedTime;
   153   PR_ExplodeTime(mNotAfter, PR_LocalTimeParameters, &explodedTime);
   154   dateFormatter->FormatPRExplodedTime(nullptr, kDateFormatShort, kTimeFormatNone,
   155                                       &explodedTime, date);
   156   aNotAfterLocalDay = date;
   157   return NS_OK;
   158 }
   160 NS_IMETHODIMP nsX509CertValidity::GetNotAfterGMT(nsAString &aNotAfterGMT)
   161 {
   162   if (!mTimesInitialized)
   163     return NS_ERROR_FAILURE;
   165   nsresult rv;
   166   nsCOMPtr<nsIDateTimeFormat> dateFormatter =
   167      do_CreateInstance(NS_DATETIMEFORMAT_CONTRACTID, &rv);
   168   if (NS_FAILED(rv)) return rv;
   170   nsAutoString date;
   171   PRExplodedTime explodedTime;
   172   PR_ExplodeTime(mNotAfter, PR_GMTParameters, &explodedTime);
   173   dateFormatter->FormatPRExplodedTime(nullptr, kDateFormatShort, kTimeFormatSecondsForce24Hour,
   174                                       &explodedTime, date);
   175   aNotAfterGMT = date;
   176   return NS_OK;
   177 }

mercurial