| Previous | Next |
| MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE | MQ_ERROR_BAD_SECURITY_CONTEXT |
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION
Operational meaning
Applications should keep MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION attached to the exact MSMQ call that produced it; translating it immediately to “queue error” discards the diagnostic boundary. The result marks destination capability cannot satisfy privacy request. The sending path requires encryption support that the target computer or installed MSMQ version does not expose.
For MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, encryption capability and message authentication are related but distinct. When diagnosing MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, preserve provider, algorithm, certificate, key-container, and queue authentication/privacy settings rather than collapsing them into one “SSL” diagnosis.
When diagnosing MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, MSMQ security material can live in the current user profile and be registered in directory services. In the MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION path, services running under another account or without a loaded profile can observe a different certificate-store state.
Where to draw the boundary
| Subsystem | MSMQ message authentication, certificate registration, signing, hashing, and encryption |
|---|---|
| Decisive boundary | certificate identity, key availability, provider capability, and message policy are independent checks |
| Code-specific focus | destination capability cannot satisfy privacy request |
| Primary recovery rule | Negotiate a supported deployment or remove privacy only when the application security design permits it. |
When diagnosing MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, queue ACLs, certificate trust, private-key access, provider support, and destination authentication policy are independent. Test the layer named by the evidence. For MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, the code-specific boundary is destination capability cannot satisfy privacy request.
Evidence to preserve
- Whether the failure occurred while preparing, sending, storing, or validating the message; associate it explicitly with
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION. - When diagnosing
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, certificate store location and security identity used by the process; capture the value before cleanup or retry changes it. - In the
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONpath, provider name/type, hash algorithm, and privacy/authentication properties; compare it with a known-good call using the same account and queue type. - For this
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONresult, record the queue path or format name, local/remote placement, transactional flag, caller SID, process build, and UTC correlation ID when they apply.
For MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, log certificate thumbprints, provider names, SIDs, GUIDs, lengths, and hashes where useful, but do not log private keys, symmetric keys, credentials, or confidential message bodies.
Diagnostic sequence
- Record the unsigned HRESULT,
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, and the native API or COM method before a framework replaces it with a generic exception. - Reproduce with the smallest queue/message/property set that still returns
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION; change one precondition at a time. - In the
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONpath, verify the postcondition after the failed call: queue existence, message presence, directory object state, transaction outcome, or generated output may differ by result. - For this
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONresult, capture provider name/type, hash algorithm, and privacy/authentication properties. - For
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, capture whether the failure occurred while preparing, sending, storing, or validating the message. - When diagnosing
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, apply the code-specific recovery rule: Negotiate a supported deployment or remove privacy only when the application security design permits it.
Handling and recovery
Negotiate a supported deployment or remove privacy only when the application security design permits it.
When diagnosing MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, an immediate loop around the same call is not recovery. In the MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION path, define who owns cancellation, handle recreation, transaction reconciliation, and duplicate suppression before another attempt is issued.
Nearby failure boundaries
In the MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION path, authentication failure is not synonymous with queue access denial. For this MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION result, certificate stores, private keys, providers, signatures, and queue policy must be tested separately. The specific focus for MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION remains destination capability cannot satisfy privacy request.
- In the
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONpath, restarting MSMQ before collecting evidence can invalidate handles and erase the first useful event; it is a containment action, not a root-cause diagnosis. - For this
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONresult, granting broad queue or certificate permissions may mask the symptom while creating a security defect. ForMQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, test the exact identity and access needed by the operation.
Worked example
A secure connector encounters MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION. For MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, it tests store and private-key access under the production identity before changing queue security. When diagnosing MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, the acceptance test then changes only the decisive precondition and confirms both the HRESULT and the actual queue/message state.
Automated coverage should preserve the original arrays/identities, confirm that cleanup is safe after MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION, and test that a retry does not duplicate messages or directory objects.
Capability negotiation at the destination
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION is a destination-capability boundary rather than a failure to hash one local message. Inventory the destination MSMQ version, available public-key properties, selected privacy level, and whether the queue was opened through a direct format name. Older or restricted installations can lack the encryption capability requested by the sender even though ordinary nonprivate messages are routable.
- Query the destination computer properties through the supported directory path and distinguish a missing enhanced key from a directory lookup failure.
- Verify that policy permits any fallback before changing
PROPID_M_PRIV_LEVEL; silently removing privacy changes the security contract. - Test another destination with known encryption support to prove whether the limitation follows the target computer or the sending host.
References
- Microsoft: Message Queuing error and information codes — source used for the
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONanalysis. - Microsoft: authenticated MSMQ message with an external certificate — source used for the
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONanalysis. - Microsoft: MSMQMessage object and message properties — source used for the
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONanalysis. - Microsoft: Windows certificate stores — source used for the
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONanalysis. - IETF RFC 5280: Internet X.509 PKI certificate profile — source used for the
MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTIONanalysis.
Looking for a different code? Search another status or error code.