You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by bl...@apache.org on 2006/01/15 10:10:44 UTC

svn commit: r369187 - in /xml/security/trunk/c/src/enc/NSS: NSSCryptoProvider.cpp NSSCryptoProvider.hpp

Author: blautenb
Date: Sun Jan 15 01:07:28 2006
New Revision: 369187

URL: http://svn.apache.org/viewcvs?rev=369187&view=rev
Log:
Support multiple init/de-inits + support default constructor

Modified:
    xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.cpp
    xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.hpp

Modified: xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.cpp
URL: http://svn.apache.org/viewcvs/xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.cpp?rev=369187&r1=369186&r2=369187&view=diff
==============================================================================
--- xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.cpp (original)
+++ xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.cpp Sun Jan 15 01:07:28 2006
@@ -44,31 +44,42 @@
 
 XSEC_USING_XERCES(ArrayJanitor);
 
+int NSSCryptoProvider::m_initialised = 0;
+
 // --------------------------------------------------------------------------------
 //           Constructor
 // --------------------------------------------------------------------------------
 
-NSSCryptoProvider::NSSCryptoProvider(const char * dbDir)
-{
+void NSSCryptoProvider::Init(const char * dbDir) {
+
+	++m_initialised;
 
-  SECStatus s;
+	if (m_initialised > 1)
+		return;
 
-  if (dbDir != NULL)
-    s = NSS_Init(dbDir);
-  else
-    s = NSS_NoDB_Init(NULL);
+	SECStatus s;
 
-  if (s != SECSuccess) {
+	if (dbDir != NULL)
+		s = NSS_Init(dbDir);
+	else
+		s = NSS_NoDB_Init(NULL);
 
-    throw XSECCryptoException(XSECCryptoException::MemoryError,
+	if (s != SECSuccess) {
+
+		throw XSECCryptoException(XSECCryptoException::MemoryError,
 			"NSSCryptoProvider:NSSCryptoProvider - Error initializing NSS");
 
-  }
+	}
 
-  m_initialised = true;
+}
+
+NSSCryptoProvider::NSSCryptoProvider(const char * dbDir) {
+
+	Init(dbDir);
 
 }
 
+
 // --------------------------------------------------------------------------------
 //           Empty constructor
 // --------------------------------------------------------------------------------
@@ -76,7 +87,7 @@
 NSSCryptoProvider::NSSCryptoProvider()
 {
 
-  m_initialised = false;
+	Init(NULL);
 
 }
 
@@ -87,7 +98,7 @@
 NSSCryptoProvider::~NSSCryptoProvider()
 {
 
-  if (m_initialised) {
+  if (m_initialised == 1) {
 
     PK11_LogoutAll();
 
@@ -104,6 +115,7 @@
     }
 
   }
+  m_initialised--;
 
 }
 

Modified: xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.hpp
URL: http://svn.apache.org/viewcvs/xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.hpp?rev=369187&r1=369186&r2=369187&view=diff
==============================================================================
--- xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.hpp (original)
+++ xml/security/trunk/c/src/enc/NSS/NSSCryptoProvider.hpp Sun Jan 15 01:07:28 2006
@@ -313,7 +313,8 @@
 
 private:
 
-  bool m_initialised;
+	void Init(const char * dbDir);
+	static int m_initialised;
 
 };