Exemple #1
0
        public async static Task <bool> CreateNewUser(CertificateInfo certificateInformation, string outputPath)
        {
            string response;

            using (SslClient stream = new SslClient(_configuration.IP, _configuration.Port))
            {
                await stream.SendStringAsync("new-user");

                response = await stream.ReceiveStringAsync();

                if (response != "provide-user-name")
                {
                    UnknownCommandError("provide-user-name", response);
                }
                await stream.SendStringAsync("user-name");

                await stream.SendStringAsync(certificateInformation.CommonName);

                response = await stream.ReceiveStringAsync();

                if (response != "provide-user-mail")
                {
                    UnknownCommandError("provide-user-mail", response);
                }
                await stream.SendStringAsync("user-mail");

                await stream.SendStringAsync(certificateInformation.Email);

                response = await stream.ReceiveStringAsync();

                if (response == "user-exists")
                {
                    ServerResponseError(response);
                }
                else if (response != "provide-user-data")
                {
                    UnknownCommandError("provide-user-data", response);
                }
                await stream.SendStringAsync("user-data");

                await stream.SendStringAsync(certificateInformation.ToString());

                response = await stream.ReceiveStringAsync();

                if (response == "problem-while-adding-user")
                {
                    ServerResponseError(response);
                }
                else if (response != "user-added")
                {
                    UnknownCommandError("user-added", response);
                }
                response = await stream.ReceiveStringAsync();

                if (response != "certificate-file")
                {
                    UnknownCommandError("certificate-file", response);
                }
                Directory.CreateDirectory(Path.GetDirectoryName(outputPath));
                await stream.ReceiveFileAsync(outputPath);

                await stream.SendStringAsync("everything-ok");
            }

            return(true);
        }