public static void FileOperationVerifyEncryptionResponse(ModelSmb2Status status, ModelResponseType modelResponseType, EncryptionConfig c) { Condition.IsTrue(state == ModelState.Connected); Condition.IsTrue(config.IsGlobalRejectUnencryptedAccessEnabled == c.IsGlobalRejectUnencryptedAccessEnabled); Condition.IsTrue(Session_IsExisted); ModelFileOperationVerifyEncryptionRequest createFileRequest = ModelHelper.RetrieveOutstandingRequest <ModelFileOperationVerifyEncryptionRequest>(ref request); if (!VerifySession(status, createFileRequest.modelRequestType)) { return; } if (!VerifyTreeConnect(status, createFileRequest.modelRequestType, c)) { return; } //TODO: To be implemented after TRANSFORM_HEADER added into Smb2FunctionalClient if (createFileRequest.modelRequestType == ModelRequestType.EncryptedRequest) { Condition.IsTrue(modelResponseType == ModelResponseType.EncryptedResponse); } else { Condition.IsTrue(modelResponseType == ModelResponseType.UnEncryptedResponse); } Condition.IsTrue(status == Smb2Status.STATUS_SUCCESS); }
public static void FileOperationVerifyEncryptionResponse(ModelSmb2Status status, ModelResponseType modelResponseType, EncryptionConfig c) { Condition.IsTrue(state == ModelState.Connected); Condition.IsTrue(config.IsGlobalRejectUnencryptedAccessEnabled == c.IsGlobalRejectUnencryptedAccessEnabled); Condition.IsTrue(Session_IsExisted); ModelFileOperationVerifyEncryptionRequest createFileRequest = ModelHelper.RetrieveOutstandingRequest <ModelFileOperationVerifyEncryptionRequest>(ref request); if (!VerifySession(status, createFileRequest.modelRequestType, c)) { return; } if (!VerifyTreeConnect(status, createFileRequest.modelRequestType, c)) { return; } ModelHelper.Log(LogType.TestInfo, "The server implements {0}, Request.IsEncrypted is {1}, Connection.ServerCapabilities {2}include SMB2_GLOBAL_CAP_ENCRYPTION, " + "TreeConnect.Share.EncryptData is {3}, " + "EncryptData is {4}, RejectUnencryptedAccess is {5}", config.MaxSmbVersionSupported, createFileRequest.modelRequestType == ModelRequestType.UnEncryptedRequest ? "FALSE" : "TRUE", Connection_ServerCapabilities_SMB2_GLOBAL_CAP_ENCRYPTION ? "" : "does not ", Encryption_TreeId == EncryptionTreeId.TreeIdToEncryptShare ? "TRUE" : "FALSE", config.IsGlobalEncryptDataEnabled ? "TRUE" : "FALSE", config.IsGlobalRejectUnencryptedAccessEnabled ? "TRUE" : "FALSE"); if (((createFileRequest.modelRequestType == ModelRequestType.UnEncryptedRequest && (config.IsGlobalEncryptDataEnabled || Encryption_TreeId == EncryptionTreeId.TreeIdToEncryptShare)) || (createFileRequest.modelRequestType == ModelRequestType.EncryptedRequest && !Connection_ServerCapabilities_SMB2_GLOBAL_CAP_ENCRYPTION)) && config.IsGlobalRejectUnencryptedAccessEnabled) { ModelHelper.Log(LogType.Requirement, "3.3.1.5: RejectUnencryptedAccess: A Boolean that, if set, " + "indicates that the server will reject any unencrypted messages. " + "This flag is applicable only if EncryptData is TRUE or if " + "Share.EncryptData (as defined in section 3.3.1.6) is TRUE."); Condition.IsTrue(status == ModelSmb2Status.STATUS_ACCESS_DENIED); return; } //TODO: To be implemented after TRANSFORM_HEADER added into Smb2FunctionalClient if (createFileRequest.modelRequestType == ModelRequestType.EncryptedRequest) { Condition.IsTrue(modelResponseType == ModelResponseType.EncryptedResponse); } else { Condition.IsTrue(modelResponseType == ModelResponseType.UnEncryptedResponse); } Condition.IsTrue(status == Smb2Status.STATUS_SUCCESS); }