2 * Licensed to the University Corporation for Advanced Internet
3 * Development, Inc. (UCAID) under one or more contributor license
4 * agreements. See the NOTICE file distributed with this work for
5 * additional information regarding copyright ownership.
7 * UCAID licenses this file to you under the Apache License,
8 * Version 2.0 (the "License"); you may not use this file except
9 * in compliance with the License. You may obtain a copy of the
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
17 * either express or implied. See the License for the specific
18 * language governing permissions and limitations under the License.
22 * internal.h - internally visible classes
25 #ifndef __saml_internal_h__
26 #define __saml_internal_h__
29 # define _CRT_SECURE_NO_DEPRECATE 1
30 # define _CRT_NONSTDC_NO_DEPRECATE 1
31 # define _SCL_SECURE_NO_WARNINGS 1
37 // eventually we might be able to support autoconf via cygwin...
38 #if defined (_MSC_VER) || defined(__BORLANDC__)
39 # include "config_win32.h"
45 #include "SAMLConfig.h"
48 #include <boost/scoped_ptr.hpp>
50 using namespace xercesc;
52 // C99 defines LLONG_MIN, LLONG_MAX and ULLONG_MAX, but this part of
53 // C99 is not yet included into the C++ standard.
54 // GCC defines LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX.
55 // Some compilers (such as Comeau C++ up to and including version 4.3.3)
56 // define nothing. In this last case we make a reasonable guess.
58 #if defined(LONG_LONG_MIN)
59 #define LLONG_MIN LONG_LONG_MIN
60 #elif SIZEOF_LONG_LONG == 8
61 #define LLONG_MIN 0x8000000000000000LL
66 #if defined(LONG_LONG_MAX)
67 #define LLONG_MAX LONG_LONG_MAX
68 #elif SIZEOF_LONG_LONG == 8
69 #define LLONG_MAX 0x7fffffffffffffffLL
74 #if defined(ULONG_LONG_MAX)
75 #define ULLONG_MAX ULONG_LONG_MAX
76 #elif SIZEOF_UNSIGNED_LONG_LONG == 8
77 #define ULLONG_MAX 0xffffffffffffffffULL
81 #if SIZEOF_TIME_T == 8
82 # define SAMLTIME_MAX LLONG_MAX
83 #elif SIZEOF_TIME_T == 4
84 # define SAMLTIME_MAX INT_MAX
87 #define SAML_LOGCAT "OpenSAML"
89 namespace xmltooling {
90 class XMLTOOL_API Mutex;
96 class SAML_DLLLOCAL SAMLInternalConfig : public SAMLConfig
100 ~SAMLInternalConfig();
102 static SAMLInternalConfig& getInternalConfig();
104 // global per-process setup and shutdown of runtime
105 bool init(bool initXMLTooling=true);
106 void term(bool termXMLTooling=true);
108 void generateRandomBytes(void* buf, unsigned int len);
109 void generateRandomBytes(std::string& buf, unsigned int len);
110 XMLCh* generateIdentifier();
111 std::string hashSHA1(const char* data, bool toHex=false);
115 boost::scoped_ptr<xmltooling::Mutex> m_lock;
121 #endif /* __saml_internal_h__ */