# CTI ``` // CTI example (03-Mar-2017) Identification = { // The name of the manufacturer exactly as registered with the DLMS UA Manufacturer = "\Gurux" // FLAG id registered for that manufacturer. FLAGId = "\ABC" // Identifier of the meter type Type = "\Type1" // The firmware identifier, OBIS code 0-b:0.2.0.255. //FirmwareID = "UnverifiedFirmwareId" // The firmware version, OBIS code 0-b:0.2.1.255 //FirmwareVersion = "CTI.Identification.UnverifiedFirmwareVersion" // Could be held by one of the device IDs //ConfigurationID = "\GRX123456" // The serial number of the IUT, specify a real value. SerialNr = "123456" // Any additional information about the IUT. Delete if not used. //Comment = "\comment 1" // ... //Comment = "\comment N" } TestOptions = { // Choose the profile used for testing CommunicationProfile = TCP ReferencingMethod = LONG_NAMES } DoNotTestCOSEM = TRUE // override to FALSE in one of the AAs // HDLCProfile, if needed HDLCProfile = { PhysicalLayer = { HDLCBaud = 19200 OpeningMode = Direct_HDLC } DataLinkLayer = { AddressingSchemes = [ONE_BYTE_ADDRESSING, TWO_BYTES_ADDRESSING] ServerLowerMacAddress = 0x10 InformationFieldLength = 1024 InactivityTimeout = 30000 InterFrameTimeout = 1000 ResponseTimeout = 4000 DISCToNDMTimeout = 2000 } } // TCP profile, if needed TCPProfile= { ServerTCPPort = 4063 ResponseTimeout = 10000 ConnectTimeout = 5000 DisconnectToConnectDelay = 500 } ServerMaxReceivePduSize = 1024 MediaIdentifiers = [ABSTRACT, ELECTRICITY] //IUTSystemTitle = "\AMCEM31001060529" //AMC 0x01039679 0x0B 414D4300E4E1DD0B IUTSystemTitle = "4142434445464748" //AMC 0x01039679 0x0B 414D4300E4E1DD0B // The keys shall be declared unless the default keys are used. See the file DefaultKeys.txt // Specific test object, used for testing the ACCESS service and the security suites. STO1 = { LogicalName = "0000600101FF" // Could be any valid OBIS code. ClassId = 1 // Could be any class. AttributeId = 2 // Could be any attribute with data type octet-string. } // Push setup object- Push is tested only if CommunicationProfile = TCP, InstanceExtraInfo = { LogicalName = "0-0:25.9.0.255" // Specify the real OBIS code. ClassId = 40 CanPush = TRUE SecuritySetupInstanceIdForPush = "0-0:43.0.1.255" // Specify the real OBIS code. } // Conformance block, valid for all Associations //complete green book Table 67 ConformanceBlock = [ GENERAL_PROTECTION, //GENERAL_BLOCK_TRANSFER, //ATTRIBUTE0_SUPPORTED_WITH_SET, //PRIORITY_MGMT_SUPPORTED, //ATTRIBUTE0_SUPPORTED_WITH_GET, BLOCK_TRANSFER_WITH_GET_OR_READ, BLOCK_TRANSFER_WITH_SET_OR_WRITE, BLOCK_TRANSFER_WITH_ACTION, MULTIPLE_REFERENCES, //DATA_NOTIFICATION, //ACCESS, GET, SET, SELECTIVE_ACCESS, //EVENT_NOTIFICATION, ACTION ] LogicalDevice[0] = { ServerSAP = 0x1 // Public association Association [0] = { Enabled = TRUE ClientSAP = 0x10 ApplicationContextName = LONG_NAMES AuthenticationMechanismName = NO_SECURITY DoNotTestCOSEM = FALSE // test COSEM in this AA Secret = "\Gurux" ConformanceBlock = [ SELECTIVE_ACCESS, GET, SET, BLOCK_TRANSFER_WITH_GET_OR_READ, ACTION, GENERAL_PROTECTION, BLOCK_TRANSFER_WITH_SET_OR_WRITE, BLOCK_TRANSFER_WITH_ACTION, MULTIPLE_REFERENCES] } Association [1] = { Enabled = TRUE ClientSAP = 0x11 ApplicationContextName = LONG_NAMES //ClientUser = 1 AuthenticationMechanismName = LOW_LEVEL_SECURITY DoNotTestCOSEM = FALSE // test COSEM in this AA Secret = "\Gurux" ConformanceBlock = [ SELECTIVE_ACCESS, GET, SET, BLOCK_TRANSFER_WITH_GET_OR_READ, ACTION, GENERAL_PROTECTION, BLOCK_TRANSFER_WITH_SET_OR_WRITE, BLOCK_TRANSFER_WITH_ACTION, MULTIPLE_REFERENCES] } Association [2] = { Enabled = TRUE ClientSAP = 0x12 ApplicationContextName = LONG_NAMES_WITH_CIPHERING //ClientUser = 1 AuthenticationMechanismName = HIGH_LEVEL_SECURITY_GMAC DoNotTestCOSEM = FALSE // test COSEM in this AA SecuritySuite = 0 ConformanceBlock = [ SELECTIVE_ACCESS, GET, SET, BLOCK_TRANSFER_WITH_GET_OR_READ, ACTION, GENERAL_PROTECTION, BLOCK_TRANSFER_WITH_SET_OR_WRITE, BLOCK_TRANSFER_WITH_ACTION, MULTIPLE_REFERENCES] ClientSystemTitle = "4142434445464748" GUEK = "000102030405060708090A0B0C0D0E0F" GAK = "D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF" KEK = "31313131313131313131313131313131" // Protection layers // Ciphered with third party S, client A+E, and with GUEK and GAK ProtectionLayer [0] = { Kind = CIPHERING Style = SERVICE_DED Pmin = [AUTHENTICATION] Pmax = [AUTHENTICATION, ENCRYPTION] } } } // end CTI ```