예제 #1
0
        /// <summary>
        /// Generates a 128-156 character passphrase, encrypts it using an RSA key,
        /// stores the passphrase in the potential Cluster Client's name, and then
        /// sends it to the potential Cluster Client.
        /// </summary>
        /// <param name="server">The server to run this on.</param>
        /// <param name="toClient">The client to send the passphrase to.</param>
        /// <param name="keyName">The name of the key to use.</param>
        internal static void Passphrase(this MasterServer server, int toClient, string keyName)
        {
            // If the key doesn't exists...
            if (!RSAManager.KeyExists(keyName))
            {
                // ...do absolutely nothing. Just stay silent
                return;
            }

            // ...otherwise, serve a passphrase.

            string passphrase = PassphraseGenerator.GeneratePassphrase();

            AESManager.EncryptedData data = AESManager.Encrypt(keyName, passphrase);

            server.clients[toClient].name = passphrase; // Set the client name to the passphrase to store it.

            using (Packet packet = new Packet((int)ServerPackets.passphrase))
            {
                packet.Write(keyName);
                packet.Write(Convert.ToBase64String(data.cypher));
                packet.Write(Convert.ToBase64String(data.iv));

                server.SendTcpData(toClient, packet);
            }
        }
        public void InstallServices(IServiceCollection services, IConfiguration configuration)
        {
            RSAManager rSAManager = RSAManager.GetInstance;

            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata      = true;
                x.SaveToken                 = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = rSAManager.Key,
                    ValidateIssuer           = true,
                    ValidateAudience         = false,
                    ValidateLifetime         = true,
                    ValidIssuer = configuration["Jwt:Issuer"],
                    ClockSkew   = TimeSpan.Zero
                };
            });
        }
예제 #3
0
        public ClusterClient(string _ip = "127.0.0.1", ushort _port = 6256) : base(_ip, _port)
        {
            name = "Test Name";                     // TODO: Load from config.

            string keyName = name.Replace(" ", ""); // TODO: Replace with config name.

            #region RSA Loading & Generation
            RSAManager.LoadKey(keyName, RSAManager.KeyType.PrivateKey); // Load all private keys.

            // If the requested key doesn't exist, create it.
            if (!RSAManager.KeyExists(keyName, RSAManager.KeyType.PrivateKey))
            {
                RSAManager.GenerateKeyPair(keyName);
            }
            #endregion

            #region AES Loading & Generation
            AESManager.LoadKey(keyName);

            // If the requested key doesn't exist, create it.
            if (!AESManager.KeyExists(keyName))
            {
                AESManager.GenerateKey(keyName);
            }
            #endregion

            onConnected.Run += () => this.ValidateCluster(keyName);
        }
        private void HandleHelloConnectMessage(HelloConnectMessage message)
        {
            sbyte[]               encrypted           = Array.ConvertAll(RSAManager.Encrypt(message.key, message.salt, client.Account.Name, client.Account.Password), (a) => (sbyte)a);
            VersionExtended       DofusVersion        = new VersionExtended(2, 16, 0, 78510, 3, 0, 0, 0);
            IdentificationMessage idenficationMessage = new IdentificationMessage(false, false, false, DofusVersion, "fr", encrypted, 0, 0);

            client.Network.Send(idenficationMessage);
        }
예제 #5
0
        public MasterServer(int _maxConnections = 0, ushort _port = 6256) : base(ServerType.MasterServer, _maxConnections, _port)
        {
            RSAManager.LoadPubKeys();
            AESManager.LoadKeys();

            InitializeData();

            Start(ServerType.MasterServer);
        }
예제 #6
0
        public string Post(ToEncrypt pToEncrypt)
        {
            if (this.ThereArePostError(pToEncrypt))
            {
                return(new Microsoft.AspNetCore.Mvc.BadRequestResult().ToString());
            }

            return
                (RSAManager.GetInstance().EncryptWithPublicKeyString(pToEncrypt.text, pToEncrypt.key).ToString());
        }
예제 #7
0
        private SecurityManager()
        {
            _oDAO              = SecurityDAOPostgreImpl.GetInstance();
            _oRSAManager       = RSAManager.GetInstance();
            _oSolidDataManager = SolidDataManager.GetInstance();

            string[] oLinesArray;
            _oSolidDataManager.GetLinesArrayFromAFile(out oLinesArray);
            int.TryParse(oLinesArray[oLinesArray.Length - UtilsConstants._ONE], out _numberOfUsesOfActualKey);
        }
예제 #8
0
 public UserDevice(UserData user)
 {
     rsaManager      = new RSAManager(user.UserPubKey.RSAParameters, user.UserPrivKey.RSAParameters);
     aesManager      = new AesManager();
     DevicePublicKey = user.DevicePublicKey.RSAParameters;
     FilesList       = user.Files;
     hmacManager     = new HMACManager(user.UserSecretKey);
     GenerateNonce();
     EncryptedSymmetricKey = user.EncryptedUserAesKey;
     Console.WriteLine($"From file: {user.EncryptedUserAesKey}");
 }
예제 #9
0
        static void Main(string[] args)
        {
            var settings = InfSecSettings.FromJsonFile("./appsettings.json");

            var rsaManager    = new RSAManager(settings);
            var dhManager     = new DHManager(settings);
            var caesarManager = new CaesarManager(settings);
            var srpManager    = new SRPManager(settings);

            //rsaManager.Execute();
            //dhManager.Execute();
            //caesarManager.Execute();
            srpManager.Execute();
            //ExecuteAll(settings);
        }
예제 #10
0
        public ActionResult Index()
        {
            string key, iv;

            RijndaelManager.GenerateKeyAndIV(out key, out iv);
            string publicKey, privateKey;

            RSAManager.GenerateKeyAndIV(out publicKey, out privateKey);

            return(View(new SecurityKeyVM {
                Key = key,
                IV = iv,
                PublicKey = publicKey,
                PrivateKey = privateKey
            }));
        }
예제 #11
0
 public UserDevice()
 {
     rsaManager  = new RSAManager();
     hmacManager = new HMACManager();
     Nonce       = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
 }
예제 #12
0
 private SolidDataManager()
 {
     _oRSAManager = RSAManager.GetInstance();
 }