public CkX942MqvDeriveParams(ulong kdf, byte[] otherInfo, byte[] publicData, ulong privateDataLen, ObjectHandle privateData, byte[] publicData2, ObjectHandle publicKey)
{
_lowLevelStruct.Kdf = 0;
_lowLevelStruct.OtherInfoLen = 0;
_lowLevelStruct.OtherInfo = IntPtr.Zero;
_lowLevelStruct.PublicDataLen = 0;
_lowLevelStruct.PublicData = IntPtr.Zero;
_lowLevelStruct.PrivateDataLen = 0;
_lowLevelStruct.PrivateData = 0;
_lowLevelStruct.PublicDataLen2 = 0;
_lowLevelStruct.PublicData2 = IntPtr.Zero;
_lowLevelStruct.PublicKey = 0;
_lowLevelStruct.Kdf = kdf;
if (otherInfo != null)
{
_lowLevelStruct.OtherInfo = UnmanagedMemory.Allocate(otherInfo.Length);
UnmanagedMemory.Write(_lowLevelStruct.OtherInfo, otherInfo);
_lowLevelStruct.OtherInfoLen = Convert.ToUInt64(otherInfo.Length);
}
if (publicData != null)
{
_lowLevelStruct.PublicData = UnmanagedMemory.Allocate(publicData.Length);
UnmanagedMemory.Write(_lowLevelStruct.PublicData, publicData);
_lowLevelStruct.PublicDataLen = Convert.ToUInt64(publicData.Length);
}
_lowLevelStruct.PrivateDataLen = privateDataLen;
if (privateData == null)
throw new ArgumentNullException("privateData");
_lowLevelStruct.PrivateData = privateData.ObjectId;
if (publicData2 != null)
{
_lowLevelStruct.PublicData2 = UnmanagedMemory.Allocate(publicData2.Length);
UnmanagedMemory.Write(_lowLevelStruct.PublicData2, publicData2);
_lowLevelStruct.PublicDataLen2 = Convert.ToUInt64(publicData2.Length);
}
if (publicKey == null)
throw new ArgumentNullException("publicKey");
_lowLevelStruct.PublicKey = publicKey.ObjectId;
}