/// <summary> /// Implementation of the test itself. /// </summary> /// <returns>true if the test passes, false otherwise.</returns> public override async Task <bool> RunAsync() { IPAddress ServerIp = (IPAddress)ArgumentValues["Server IP"]; int PrimaryPort = (int)ArgumentValues["primary Port"]; log.Trace("(ServerIp:'{0}',PrimaryPort:{1})", ServerIp, PrimaryPort); bool res = false; Passed = false; ProtocolClient client = new ProtocolClient(); try { MessageBuilder mb = client.MessageBuilder; // Step 1 await client.ConnectAsync(ServerIp, PrimaryPort, false); Message requestMessage = client.CreateStartConversationRequest(); await client.SendMessageAsync(requestMessage); Message responseMessage = await client.ReceiveMessageAsync(); bool idOk = responseMessage.Id == requestMessage.Id; bool statusOk = responseMessage.Response.Status == Status.Ok; bool verifyChallengeOk = client.VerifyServerChallengeSignature(responseMessage); bool startConversationOk = idOk && statusOk && verifyChallengeOk; byte[] challenge = responseMessage.Response.ConversationResponse.Start.Challenge.ToByteArray(); requestMessage = mb.CreateVerifyIdentityRequest(challenge); await client.SendMessageAsync(requestMessage); responseMessage = await client.ReceiveMessageAsync(); idOk = responseMessage.Id == requestMessage.Id; statusOk = responseMessage.Response.Status == Status.ErrorBadRole; bool verifyIdentityOk = idOk && statusOk; // Step 1 Acceptance Passed = startConversationOk && verifyIdentityOk; res = true; } catch (Exception e) { log.Error("Exception occurred: {0}", e.ToString()); } client.Dispose(); log.Trace("(-):{0}", res); return(res); }
/// <summary> /// Implementation of the test itself. /// </summary> /// <returns>true if the test passes, false otherwise.</returns> public override async Task <bool> RunAsync() { IPAddress ServerIp = (IPAddress)ArgumentValues["Server IP"]; int ClNonCustomerPort = (int)ArgumentValues["clNonCustomer Port"]; log.Trace("(ServerIp:'{0}',ClNonCustomerPort:{1})", ServerIp, ClNonCustomerPort); bool res = false; Passed = false; ProtocolClient client = new ProtocolClient(); try { MessageBuilder mb = client.MessageBuilder; // Step 1 await client.ConnectAsync(ServerIp, ClNonCustomerPort, true); Message requestMessage = client.CreateStartConversationRequest(); await client.SendMessageAsync(requestMessage); Message responseMessage = await client.ReceiveMessageAsync(); // Step 1 Acceptance bool idOk = responseMessage.Id == requestMessage.Id; bool statusOk = responseMessage.Response.Status == Status.Ok; bool verifyChallengeOk = client.VerifyServerChallengeSignature(responseMessage); SemVer receivedVersion = new SemVer(responseMessage.Response.ConversationResponse.Start.Version); bool versionOk = receivedVersion.Equals(SemVer.V100); bool pubKeyLenOk = responseMessage.Response.ConversationResponse.Start.PublicKey.Length == 32; bool challengeOk = responseMessage.Response.ConversationResponse.Start.Challenge.Length == 32; Passed = idOk && statusOk && verifyChallengeOk && versionOk && pubKeyLenOk && challengeOk; res = true; } catch (Exception e) { log.Error("Exception occurred: {0}", e.ToString()); } client.Dispose(); log.Trace("(-):{0}", res); return(res); }