public byte[][] GlobalKeyTransfer(GXDLMSClient client, byte[] kek, List<KeyValuePair<GlobalKeyType, byte[]>> list)
{
if (list == null || list.Count == 0)
{
throw new ArgumentException("Invalid list. It is empty.");
}
GXByteBuffer bb = new GXByteBuffer();
bb.SetUInt8(DataType.Array);
bb.SetUInt8((byte)list.Count);
byte[] tmp;
foreach (KeyValuePair<GlobalKeyType, byte[]> it in list)
{
bb.SetUInt8(DataType.Structure);
bb.SetUInt8(2);
GXCommon.SetData(client.Settings, bb, DataType.Enum, it.Key);
tmp = GXDLMSSecureClient.Encrypt(kek, it.Value);
GXCommon.SetData(client.Settings, bb, DataType.OctetString, tmp);
}
return client.Method(this, 2, bb.Array(), DataType.Array);
}