SAML 1.x artifact bits
[shibboleth/cpp-opensaml.git] / saml / internal.h
index aa0b8ce..675a5e7 100644 (file)
 #include "base.h"
 #include "SAMLConfig.h"
 
+#include <limits.h>
+
+// C99 defines LLONG_MIN, LLONG_MAX and ULLONG_MAX, but this part of
+// C99 is not yet included into the C++ standard.
+// GCC defines LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX.
+// Some compilers (such as Comeau C++ up to and including version 4.3.3)
+// define nothing.  In this last case we make a reasonable guess.
+#ifndef LLONG_MIN
+#if defined(LONG_LONG_MIN)
+#define LLONG_MIN LONG_LONG_MIN
+#elif SIZEOF_LONG_LONG == 8
+#define LLONG_MIN 0x8000000000000000LL
+#endif
+#endif
+#ifndef LLONG_MAX
+#if defined(LONG_LONG_MAX)
+#define LLONG_MAX LONG_LONG_MAX
+#elif SIZEOF_LONG_LONG == 8
+#define LLONG_MAX 0x7fffffffffffffffLL
+#endif
+#endif
+#ifndef ULLONG_MAX
+#if defined(ULONG_LONG_MAX)
+#define ULLONG_MAX ULONG_LONG_MAX
+#elif SIZEOF_UNSIGNED_LONG_LONG == 8
+#define ULLONG_MAX 0xffffffffffffffffULL
+#endif
+#endif
+
+#if SIZEOF_TIME_T == 8
+# define SAMLTIME_MAX LLONG_MAX
+#elif SIZEOF_TIME_T == 4
+# define SAMLTIME_MAX LONG_MAX
+#endif
+
 #define SAML_LOGCAT "OpenSAML"
 
 namespace opensaml {
@@ -58,6 +95,7 @@ namespace opensaml {
         void generateRandomBytes(void* buf, unsigned int len);
         void generateRandomBytes(std::string& buf, unsigned int len);
         XMLCh* generateIdentifier();
+        std::string hashSHA1(const char* data, bool toHex=false);
     private:
     };
     /// @endcond