Ejemplo n.º 1
0
        public static byte[] GenerateLicense(LicenseConfig licenseConfig, string licensePrivateKey)
        {
            var license = new IrmLicense()
            {
                MaxAreaCount            = licenseConfig.MaxAreas,
                MaxEquipCount           = licenseConfig.MaxEquips,
                MaxCircuitCount         = licenseConfig.MaxCircuits,
                MaxSiteCount            = licenseConfig.MaxSites,
                MaxSoftwareCount        = licenseConfig.MaxSoftwares,
                MaxMainHoleCount        = licenseConfig.MaxMainholes,
                MaxUserCount            = licenseConfig.MaxUsers,
                MaxPathwayCount         = licenseConfig.MaxPathways,
                MaxFaceplateCount       = licenseConfig.MaxFaceplates,
                MaxRackCount            = licenseConfig.MaxRacks,
                MaxCloudInstanceCredits = licenseConfig.CloudCredits,
                MaxReportUsers          = licenseConfig.MaxReportUsers,
                MaxClientUsers          = licenseConfig.MaxClientUsers,
                IsActive         = licenseConfig.IsActive,
                Expiration       = licenseConfig.ExpirationTime?.LocalDateTime ?? DateTime.MaxValue,
                Features         = JsonConvert.DeserializeObject <IrmLicense.Feature[]>(licenseConfig.Features),
                ReportCategories = JsonConvert.DeserializeObject <IrmLicense.SuperCategory[]>(licenseConfig.ReportingCategories),
            };

            var signedLicense         = DSAProvider.Sign(license, licensePrivateKey);
            var serializationSettings = new JsonSerializerSettings()
            {
                ContractResolver  = new CamelCasePropertyNamesContractResolver(),
                NullValueHandling = NullValueHandling.Ignore,
                Formatting        = Formatting.Indented,
                DateFormatString  = "yyyy-MM-ddTH:mm:ss.fffZ"
            };

            serializationSettings.Converters.Add(new StringEnumConverter());

            var jsonStr = JsonConvert.SerializeObject(signedLicense, serializationSettings);
            var bytes   = Encoding.UTF8.GetBytes(jsonStr);

            return(bytes);
        }
Ejemplo n.º 2
0
        private static void Execute(TcpClient client)
        {
            string RSA = "RSA";
            string DSA = "DSA";

            byte[]  byteRecord       = new byte[bufferSize];
            string  dataReceive      = null;
            string  data             = null;
            string  information      = "";
            int     lengthByteRecord = 0;
            Boolean flag             = true;

            NetworkStream stream = client.GetStream();

            try
            {
                Console.WriteLine("Client {0} is connected", client.Client.RemoteEndPoint);

                while (flag)
                {
                    lengthByteRecord = stream.Read(byteRecord, 0, byteRecord.Length);
                    dataReceive      = Encoding.UTF8.GetString(byteRecord, 0, lengthByteRecord);

                    string[] split = dataReceive.Split(new Char[] { ':' });

                    dataReceive = split[0];
                    data        = split[1];

                    if (dataReceive.IndexOf("message") > -1)
                    {
                        Console.WriteLine("Server received message");

                        string[] message = data.Split(new Char[] { ' ' });


                        if (String.Compare(message[message.Length - 1], RSA) == 0)
                        {
                            string text          = message[0];
                            string ESD           = message[1];
                            int    d             = Convert.ToInt32(message[2]);
                            int    n             = Convert.ToInt32(message[3]);
                            string hashAlgorithm = message[4];

                            string hash = RSAProvider.Dedoce(ESD, d, n);

                            if (hash.CompareTo(text) == 0)
                            {
                                information += "hash: " + text + ";";
                                information += "ESD: " + ESD + ";";
                                information += "size ESD: " + ESD.Length + " bites;";
                                information += "hash Algorithm: " + hashAlgorithm + ";";
                                information += "size hash: " + text.Length + " bytes";

                                Console.WriteLine("Server authentication the message");
                                Console.WriteLine("Encryption algorithm - RSA");
                            }
                            else
                            {
                                Console.WriteLine("Server does not authenticate the message");
                                Console.WriteLine("Encryption algorithm - RSA");
                            }
                        }

                        if (String.Compare(message[message.Length - 1], DSA) == 0)
                        {
                            string text          = message[0];
                            string ESD           = message[1];
                            int    q             = Convert.ToInt32(message[2]);
                            int    y             = Convert.ToInt32(message[3]);
                            int    g             = Convert.ToInt32(message[4]);
                            string hashAlgorithm = message[5];

                            int p = DSAProvider.CalculateP(q);

                            bool result = DSAProvider.DecodeAndEqual(text, p, q, y, g, ESD);

                            if (result)
                            {
                                information += "hash: " + text + ";";
                                information += "ESD: " + ESD + ";";
                                information += "size ESD: " + ESD.Length + " bites;";
                                information += "hash Algorithm: " + hashAlgorithm + ";";
                                information += "size hash: " + text.Length + " bytes";

                                Console.WriteLine("Server authentication the message");
                                Console.WriteLine("Encryption algorithm - DSA");
                            }
                            else
                            {
                                Console.WriteLine("Server does not authenticate the message");
                                Console.WriteLine("Encryption algorithm - DSA");
                            }
                        }
                    }

                    else if (dataReceive.IndexOf("information") > -1)
                    {
                        Console.WriteLine("Server received a request for information");

                        byteRecord = Encoding.UTF8.GetBytes(information);
                        stream.Write(byteRecord, 0, byteRecord.Length);

                        Console.WriteLine("Server sent information to request");
                    }

                    else if (dataReceive.IndexOf("exit") > -1)
                    {
                        Console.WriteLine("Server received a request for disconnecting client");
                        flag = false;
                    }
                }

                Console.WriteLine("Client {0} is disconnected", client.Client.RemoteEndPoint);
            }
            catch (Exception e)
            {
                Console.WriteLine(e + "\n\n" + e.Message);
                Console.ReadLine();
                flag = false;
            }
        }