Prepayment Interface Device (PPMID) and HAN Connected Auxiliary Load Control Switch (HCALCS); and Type 2 Devices, including In Home Displays (IHDs). The purpose of this GBCS, and related documents, is to specify the single, consistent technical implementation in sufficient detail to achieve operational interoperability of Devices. This GBCS refers out to International Standards, specifically those relating to DLMS COSEM, ZSE, ASN.1, NSA Suite B cryptography and X.509 related IETF RFCs. The GBCS does not duplicate what is laid out in such standards but rather provides references to them.
0x0C where a date / time field is required required for a Message, it shall be a 12 octet string as per the DLMS specification. See ‘date-timestamp in response’ column, ‘Use Case reference’ tab in Mapping Table Yes value Either empty or a 12 character containing the date-time stamp for this Response 0 or 12 other-information No length Encoding(X) variable Len(Encoding(X)) X is length of other information octet string. X is 2 or 18 or 26 or variable Yes value Message Code || Supplementary Remote Party ID || Supplementary Remote Party Counter || Supplementary Originator Counter || Supplementary Remote Party Key Agreement Certificate 2 or 18 or 26 or variable The Message Code shall always be present In an Alert, Supplementary Remote Party ID shall be present, if it is required by Section 16 In a Command or Response, the Supplementary Remote Party ID, Supplementary Remote Party Counter and Supplementary Originator Counter, shall be present or not in line with the requirements of Section 4.3.1.4 Supplementary Remote Party Key Agreement Certificate shall only be present where (1) this is a Command, (2) the Response to it should contain encrypted attributes and (3) the Supplementary Remote Party ID is for a Remote Party which does not already have a Key Agreement
Specific Component(s) specific Table 7.2.10c: Required components of GBZ Alert Payload Elements marked in Table 7.2.10c as Use Case specific shall be populated according to the Use Case for the Message Code (see Section 15). GBZ Use Case Specific Component without encrypted content No Message Elements Contents Length (octets) Note Extended Header Control Field 0x00 Or 0x01 1 0x00 (if not the last GBZ Use Case Specific Component in this Message) Or 0x01 (if the last GBZ Use Case Specific Component in this Message) Extended Header Cluster ID See ‘Note’ column 2 The Cluster ID of the ZSE / ZCL command contained in this GBZ Use Case Specific Component Extended Header GBZ Command Length See ‘Note’ column 2 These two octets shall be interpreted as a 16 bit unsigned integer specifying the total length on octets of the remainder of this GBZ Component (so excluding this and prior fields) ZCL header Use Case specific 3 These fields shall have the meaning specified in the ZSE / ZCL Specifications except for the Transaction Sequence Number. The Transaction Sequence Number shall be set to 0 for the first ZSE / ZCL command in the Message and shall be incremented by one for every subsequent request-style ZSE / ZCL command frame in the Message. The corresponding response-style ZSE / ZCL command frame shall copy the Transaction Sequence Number from the request-style ZSE / ZCL command frame ZCL payload Use Case specific Variable These fields shall have the meaning specified in the ZSE / ZCL specifications Table 7.2.10d: Required components of GBZ Use Case Specific Component without encrypted content GBZ Use Case Specific Component with encrypted content
(8) , anyByContingency (9) plaintextSymmetricKey [0] IMPLICIT OCTET STRING The symmetric key that will decrypt the encrypted Contingency Key held on the Device OPTIONAL Only to be present if the Contingency Key arrangements are being used (so if = anyByContingency). The contents provide the symmetric key to decrypt the Contingency Public Key in the (root, digitalSignature, management) Trust Anchor Cell applyTimeBasedCPVChecks [1] IMPLICIT INTEGER disapply(1) DEFAULT apply Only to be present if the Remote Party sending the Command is instructing the Device not to apply time based checks as part of Certification Path Validation. This should only be in exceptional circumstances (e.g. root credentials on the Device have expired without replacement for unforeseen reasons) authorisingRemotePartyTACellIdentifier [2] IMPLICIT SEQUENCE OPTIONAL This structure identifies which Public Key on the Device is to be used in verifying KRP Signature. The key is identified by way of Trust Anchor Cell and so the nature of the check, by way of the KeyUsage parameter, is also identified. can only be omitted when the Access Control Broker is
changing its own Key Agreement credentials trustAnchorCellRemotePartyRole INTEGER root (0), recovery (1) , supplier (2) , networkOperator (3) , (4) , transitionalCoS (5) , wanProvider (6) Mandatory if present The role of the Party applying KRP Signature.. Note that where root is used, this refers only to the encrypted Contingency key in the root TA Cell, so is only valid if = anyByContingency and plaintextSymmetricKey is populated with the symmetric key required to decrypt that public key trustAnchorCellKeyUsage BIT STRING digitalSignature (0) Mandatory if present KRP Signature is a digital signature trustAnchorCellUsage INTEGER management(0) DEFAULT management Must be absent or set to ‘management’ since the prePaymentTopUp key pair cannot be used in relation to this Command authorisingRemotePartySeqNumber [3] IMPLICIT INTEGER Originator Counter of Remote Party authorising the Command Mandatory Specify the Originator Counter for the Remote Party applying KRP Signature, or (for the Access Control Broker changing its credentials) the Access Control Broker’s Originator Counter newRemotePartyFloorSeqNumber [4] IMPLICIT INTEGER Originator Counter of Remote Party who will have control of this Remote Party Role if OPTIONAL If the Command is to effect a change of control, then newRemotePartyFloorSeqNumber should be included and will be the
OF Remote Party Role (e.g. transitionalCoS changing Supplier Credentials). In such cases, sequence counters need also to be reset for that other Remote Party Role SEQUENCE otherRemotePartyRole INTEGER supplier (2) , networkOperator (3) , (4) , transitionalCoS (5) , wanProvider (6) , Mandatory if present The Remote Party Role of the party whose credentials are being placed on the Device but which didn’t authorise the command directly. Note that this is not valid for root or recovery otherRemotePartyFloorSeqNumber INTEGER Relevant Originator Counter Mandatory if present Specify the associated SeqNumber otherRemotePartySpecialistFloorSeqNumber SEQUENCE OF OPTIONAL Should only be present if otherRemotePartyRole = supplier, and that new supplier uses different counters to prevent replay on Prepayment Top Up SEQUENCE seqNumberUsage INTEGER prepaymentTopUp (0) Mandatory if present Specify the usage of the SeqNumber
networkOperator (3) , (4) , transitionalCoS (5) , wanProvider (6) , otherRemotePartyFloorSeqNumber INTEGER The corresponding Counter value Mandatory if SEQUENCE is present newRemotePartySpecialistFloorSeqNumber SEQUENCE OF OPTIONAL Only present where Remote Party Role is supplier SEQUENCE seqNumberUsage INTEGER {prepaymentTopUp (0)} , Mandatory if present Specify the usage of the SeqNumber seqNumber INTEGER Mandatory if present Specify the associated SeqNumber replacementOutcomes SEQUENCE OF One per replacement in the corresponding Command so at least one For each replacement in the Command, detail the outcome and impacted parties
badCertificate (5), -- noTrustAnchor is used to indicate that the authorityKeyIdentifier does not identify the public key of a -- trust anchor or a certification path that terminates with an installed trust anchor noTrustAnchor (10), -- insufficientMemory indicates that the update could not be processed because the Device did not -- have sufficient memory insufficientMemory (17), -- contingencyPublicKeyDecrypt indicates that the update could not be processed because an error occurred while -- decrypting the contingency public key. contingencyPublicKeyDecrypt (22), -- trustAnchorNotFound indicates that a change to a trust anchor was requested, but the referenced trust anchor -- is not represented in the Trust Anchor Cell. trustAnchorNotFound (25), -- resourcesBusy indicates that the resources necessary to process the replacement are not available at the -- present time, but the resources might be available at some point in the future. resourcesBusy (30), -- other indicates that the update could not be processed, but the reason is not covered by any of the assigned -- status codes. Use of this status code SHOULD be avoided. other (127) } END Requirements for AuthorisingRemotePartyControl elements - informative All bar two parts of the AuthorisingRemotePartyControl structure are optional. This section summarises when each of the optional elements needs to be present. AuthorisingRemotePartyControl element Notes credentialsReplacementMode Always required
entry_billingCalendarOnSetModeOrTariffLogEntry::= structure{ 0x02 0x0D or 0x0F (single element) or (twin element) timestamp: double-long-unsigned, 0x06 activeImportRegisterValue: double-long-unsigned, 0x06 secondaryActiveImportRegisterValue: double-long-unsigned, [[MAY NOT BE PRESENT]] 0x06 tariffTOURegisterValues: array double-long-unsigned, 0x01 0x30 0x06 secondaryTariffTOURegisterValues: array double-long-unsigned, [[MAY NOT BE PRESENT]] 0x01 0x04 0x06 tariffTOUBlock1RegisterValues: array double-long-unsigned, 0x01 0x08 0x06 tariffTOUBlock2RegisterValues: array double-long-unsigned, 0x01 0x08 0x06 tariffTOUBlock3RegisterValues: array double-long-unsigned, 0x01 0x08 0x06 tariffTOUBlock4RegisterValues: array double-long-unsigned 0x01 0x08 0x06 emergencyCreditBalanceValue: double-long-unsigned, 0x06 meterBalanceValue: double-long-unsigned, 0x06 paymentDebtRegisterValue: double-long-unsigned, 0x06 timeDebtRegisters1Value: double-long-unsigned, 0x06 timeDebtRegisters2Value: double-long-unsigned, 0x06 accumulatedDebtRegisterValue: double-long-unsigned 0x06