---
# System prepended metadata

title: CTI

---

# 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

```