Page tree
Skip to end of metadata
Go to start of metadata

The customer sends the Negotiate message to CME to initiate a connection.

35=Negotiate

Tag

Name

Binary TypeBinary LengthReqEnumerationDescription
39000CustomerFlowClientFlowType0YIdempotentConstant value representing type of flow from customer to CME.
39003HMACVersionHMACVersion0YCME-1-SHA-256Constant.
39005HMACSignatureString32Req32Y

Contains the HMAC signature.

HMAC signature will be calculated using HMAC data consisting of these fields which should be in ascending order and delimited with new line (\n) characters. There should be no trailing new line.

  • RequestTimestamp + '\n' +
  • UUID + '\n' +
  • SessionID + '\n' +
  • FirmID

The HMAC signature is an encoded hash (digest) of the four fields mentioned above using the Secret Key provided by CME. 

In pseudo code:

HmacSHA256(HmacData, secretKey)

39004AccessKeyIDString20Req20Y

Contains the AccessKeyID assigned to this session on this port.

For example: TXkgU2VjcmV0IEtleQ

39001UUIDuInt648Y

Session Identifier defined as type long (uInt64); CME Group recommends using the number of microseconds since epoch (Jan 1, 1970) as the timestamp.

  • Unique at the beginning of the week on Sunday to start with sequence number 1
  • Keep using same UUID in midweek Establish messages to maintain continuous sequence numbers

CME track of last known used UUID.

The Negotiate message must be sent prior to the Establish message with a new UUID midweek.

When used after Negotiate, Negotiate.UUID should have the same value as Etablish.UUID or the message will be rejected.

Client systems must use the same UUID for both primary and backup connections if using active-active fault tolerance to ensure that the sequence numbers will continue after a failover. 

39002RequestTimestampuInt648Y
Time of request. CME Group recommends using the number of nanoseconds since epoch (Jan 1, 1970) as the timestamp.
39006SessionString3Req3Y
Session ID.
39007FirmString5Req5Y
Firm ID.
39008CredentialsDATA0N

Currently not supported; however the length of variable data needs to be set to 0, represented as two bytes 00 00.