public CkWtlsMasterKeyDeriveParams(ulong digestMechanism, CkWtlsRandomData randomInfo, bool dh)
{
if (randomInfo == null)
throw new ArgumentNullException("randomInfo");
// Keep reference to randomInfo so GC will not free it while this object exists
_randomInfo = randomInfo;
_lowLevelStruct.DigestMechanism = digestMechanism;
_lowLevelStruct.RandomInfo = (CK_WTLS_RANDOM_DATA)_randomInfo.ToMarshalableStructure();
_lowLevelStruct.Version = (dh) ? IntPtr.Zero : UnmanagedMemory.Allocate(UnmanagedMemory.SizeOf(typeof(CK_VERSION)));
}