+/* -*- c-basic-offset: 2; -*- */
+
/*
Copyright (c) 2006-2009, John Hurst
All rights reserved.
const char* DEV_URANDOM = "/dev/urandom";
#endif // KM_WIN32
-
const ui32_t RNG_KEY_SIZE = 512UL;
const ui32_t RNG_KEY_SIZE_BITS = 256UL;
const ui32_t RNG_BLOCK_SIZE = 16UL;
AES_KEY m_Context;
byte_t m_ctr_buf[RNG_BLOCK_SIZE];
Mutex m_Lock;
+ unsigned int m_libdcp_test_rng_state;
h__RNG()
{
} // end AutoMutex context
set_key(rng_key);
+
+#ifdef LIBDCP_POSIX
+ reset();
+#endif
}
//
AES_encrypt(m_ctr_buf, tmp, &m_Context);
memcpy(buf + gen_count, tmp, len - gen_count);
}
+
+#ifdef LIBDCP_POSIX
+ if (libdcp_test)
+ {
+ for (unsigned int i = 0; i < len; ++i)
+ buf[i] = rand_r(&m_libdcp_test_rng_state);
+ }
+#endif
+
+#ifdef LIBDCP_WINDOWS
+ /* XXX */
+#endif
}
+
+#ifdef LIBDCP_POSIX
+ void reset ()
+ {
+ m_libdcp_test_rng_state = 1;
+ }
+#endif
};
return Buffer.Data();
}
+#ifdef LIBDCP_POSIX
+void
+Kumu::FortunaRNG::Reset()
+{
+ s_RNG->reset();
+}
+#endif
+
//------------------------------------------------------------------------------------------
//