static Native()
{
Version lib = Version.Library;
Version wrapper = Version.Wrapper;
uint mmf = lib.Raw & 0xfffff000;
if (mmf != wrapper.Raw)
throw new Exception(string.Format("Invalid version of {0}, expecting {1}, got: {2}",
DLLNAME, wrapper, lib));
// Enable FIPS mode
if (FIPS.Enabled)
{
if (FIPS_mode_set(1) == 0)
{
throw new Exception("Failed to initialize FIPS mode");
}
}
ERR_load_crypto_strings();
SSL_load_error_strings();
OPENSSL_add_all_algorithms_noconf();
// Initialize SSL library
Native.ExpectSuccess(SSL_library_init());
byte[] seed = new byte[128];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(seed);
RAND_seed(seed, seed.Length);
}