Gurux.DLMS.Objects.GXDLMSSecuritySetup.GlobalKeyTransfer C# (CSharp) Method

GlobalKeyTransfer() public method

Updates one or more global keys.
public GlobalKeyTransfer ( Gurux.DLMS.GXDLMSClient client, byte kek, byte[]>.List list ) : byte[][]
client Gurux.DLMS.GXDLMSClient DLMS client that is used to generate action.
kek byte Master key, also known as Key Encrypting Key.
list byte[]>.List List of Global key types and keys.
return byte[][]
        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);
        }