Net.Pkcs11Interop.HighLevelAPI81.MechanismParams.CkX942MqvDeriveParams.CkX942MqvDeriveParams C# (CSharp) Method

CkX942MqvDeriveParams() public method

Initializes a new instance of the CkX942MqvDeriveParams class.
public CkX942MqvDeriveParams ( ulong kdf, byte otherInfo, byte publicData, ulong privateDataLen, ObjectHandle privateData, byte publicData2, ObjectHandle publicKey ) : System
kdf ulong Key derivation function used on the shared secret value (CKD)
otherInfo byte Some data shared between the two parties
publicData byte Other party's first X9.42 Diffie-Hellman public key value
privateDataLen ulong The length in bytes of the second X9.42 Diffie-Hellman private key
privateData ObjectHandle Key handle for second X9.42 Diffie-Hellman private key value
publicData2 byte Other party's second X9.42 Diffie-Hellman public key value
publicKey ObjectHandle Handle to the first party's ephemeral public key
return System
        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;
        }