3.1.1.3 Queue Manager State

The protocol MUST maintain these global ADM elements:

UserCertCache: A list of CachedUserCert (section 3.1.1.3.4) ADM element instances. Receivers use this list to cache verified user certificates.

UserCertCacheSize: An integer indicating the maximum number of CachedUserCert ADM element instances that can be placed in the UserCertCache ADM element.

UserCertLifetime: An integer indicating the lifetime in milliseconds of CachedUserCert ADM element instances.

ReceiveSymmetricKeyCache: A list of CachedSymmetricKey (section 3.1.1.3.3) ADM element instances. Acceptors use this list to store symmetric keys used for decrypting messages.

ReceiveBaseSymmetricKeyCache: A list of CachedSymmetricKey ADM element instances. The acceptor MAY<22> cache some decrypted symmetric keys in this list instead of in the ReceiveSymmetricKeyCache ADM element.

ReceiveSymmetricKeyCacheSize: An integer indicating the maximum number of entries in the ReceiveSymmetricKeyCache ADM element and in the ReceiveBaseSymmetricKeyCache ADM element.

SendSymmetricKeyCache: A list of CachedSymmetricKey ADM element instances. Initiators use this list to store symmetric keys used for encrypting messages.

SendBaseSymmetricKeyCache: A list of CachedSymmetricKey ADM element instances. Initiators MAY<23> use this list instead of the SendSymmetricKeyCache ADM element to store some symmetric keys.

SendSymmetricKeyCacheSize: An integer indicating the maximum number of entries in the SendSymmetricKeyCache ADM element and in the SendBaseSymmetricKeyCache ADM element.

SymmetricKeyShortLifetime: An integer indicating the lifetimes in milliseconds of CachedSymmetricKey ADM element instances, as described in sections 3.1.6.10 through 3.1.6.12, section 3.1.5.8.3, and section 3.1.7.1.5.

SymmetricKeyLongLifetime: An integer indicating the lifetimes in milliseconds of CachedSymmetricKey ADM element instances.

PreferredAdvancedAlgorithm: An unsigned 32-bit integer indicating the preferred encryption algorithm to be used when encrypting a message where Message.PrivacyLevel is Advanced. Valid values are listed in the following table.

Integer value

Encryption Algorithm

0x00006610

AES256

0x0000660E

AES128

0x0000660F

AES192

PreferredEnhancedAlgorithm: An unsigned 32-bit integer indicating the preferred encryption algorithm to be used when encrypting a message where Message.PrivacyLevel is Enhanced.

Integer value

Encryption Algorithm

0x00006602

RC2

0x00006801

RC4

PreferredBaseAlgorithm: An unsigned 32-bit integer indicating the preferred encryption algorithm to be used when encrypting a message where Message.PrivacyLevel is Base.

Integer value

Encryption Algorithm

0x00006602

RC2

0x00006801

RC4

SendEnhancedRC2Using40BitKeys: A Boolean that is TRUE if the effective symmetric encryption key length in bits MUST be reduced when encrypting messages with a Message.PrivacyLevel of Enhanced and a Message.EncryptionAlgorithm of RC2.

RejectEnhancedRC2Using40BitKeys: A Boolean that is TRUE if messages using a reduced symmetric encryption key length MUST be rejected.

ResendTimerTable: A table that contains the duration of the resend times for transactional messages.<24>

MessageIDHistoryTable: A table that contains MessageIDHistoryEntry ADM element instances. This table provides a lightweight duplicate elimination mechanism. For more information, see Duplicate Detection (section 3.1.5.8.1). The length of history that this table maintains is implementation-dependent; however, it MUST NOT contain more than 4,294,967,296 entries, because that is the point at which the MessageIdOrdinal ADM element value rolls over, and values can be reused. This table MUST be initialized to an empty table. This value SHOULD<25> survive process and node failures.

MessageIDHistoryEntry: An ADM element that contains information about a UserMessage Packet ([MS-MQMQ] section 2.2.20) that has been received by the protocol host. This ADM element MUST contain the following ADM attributes:

  • MessageIdentifier: A MessageIdentifier  ([MS-MQMQ] section 2.2.20) field.

  • TimeStamp: A 32-bit unsigned integer that represents the time at which a UserMessage Packet was received.

    MessageIdOrdinal: A monotonically increasing value used in the MessageIdentifier ADM attribute. This value MUST be incremented by 1 for each UserMessage Packet sent by the protocol and MUST be unique only within the scope of the local queue before a rollover occurs. When a rollover occurs, values MAY<26> be reused. Rollover of this value will not affect message delivery guarantees, provided that the MessageIDHistoryTable ADM element maximum history length is not exceeded. This value MUST be initialized to 0x00000000 and MUST survive process and node failures.

    PingCookie: An integer value that MUST uniquely identify individual Ping Requests, as defined in Ping Message (section 2.1.2), from this host.<27> For more information, see Ping Packet (section 2.2.7).

    SendInsecureNacks: A Boolean that indicates whether insecure Nacks are sent, as discussed in section 5.1. Insecure Nacks are sent if this value is TRUE, and are not sent if this value is FALSE. This value SHOULD<28> be initialized to FALSE and SHOULD<29> survive process and node failures.

    ResendTimeoutsShort: A DWORD that indicates the number of seconds used to set up the ResendTimerTable ADM element in section 3.1.3.1. The value SHOULD<30> be 30 seconds and MUST survive process and node failures.

    ResendTimeoutsMedium: A DWORD that indicates the number of seconds used to set up the ResendTimerTable ADM element in section 3.1.3.1. The value SHOULD<31> be 300 seconds (five minutes) and MUST survive process and node failures.

    ResendTimeoutsLong: A DWORD that indicates the number of seconds used to set up the ResendTimerTable ADM element in section 3.1.3.1. The value SHOULD<32> be 1800 seconds (30 minutes) and MUST survive process and node failures.

    ResendTimeoutsFinal: A DWORD that indicates the number of seconds used to set up the ResendTimerTable ADM element in section 3.1.3.1. The value SHOULD<33> be 21,600 seconds (6 hours) and MUST survive process and node failures.