Example #1
0
 private void LoadModels(DbConnection db)
 {
     CryptoKeys = new CryptoKeys {
         Db = db
     };
     Links = new Links {
         Db = db
     };
     LinksDatabaseBackups = new LinksDatabaseBackups {
         Db = db
     };
     Entries = new Entries {
         Db = db
     };
     EntriesSharedSecrets = new EntriesSharedSecrets {
         Db = db
     };
     EntriesSharedSecretsData = new EntriesSharedSecretsData {
         Db = db
     };
     EntriesSharedSecretsSync = new EntriesSharedSecretsSync {
         Db = db
     };
     OtpAccounts = new OtpAccounts {
         Db = db
     };
     ServerAccountSettings = new ServerAccountSettings {
         Db = db
     };
 }
Example #2
0
        public static void Init()
        {
            var db = new DbConnection(Config.GetDatabasePath(), DbProtection.GetDatabaseKey());

            CryptoKeys = new CryptoKeys {
                Db = db
            };
            Databases = new Databases {
                Db = db
            };
            DatabasesEntries = new DatabasesEntries {
                Db = db
            };
            DatabasesEntriesData = new DatabasesEntriesData {
                Db = db
            };
            DatabasesEntriesDataSync = new DatabasesEntriesDataSync {
                Db = db
            };
            DatabasesEntriesDataVersions = new DatabasesEntriesDataVersions {
                Db = db
            };
            DatabasesEntries = new DatabasesEntries {
                Db = db
            };
            DatabasesGroups = new DatabasesGroups {
                Db = db
            };
            DatabasesGroupsMeta = new DatabasesGroupsMeta {
                Db = db
            };
            DatabasesGroupsMetaSync = new DatabasesGroupsMetaSync {
                Db = db
            };
            DatabasesGroupsMetaVersions = new DatabasesGroupsMetaVersions {
                Db = db
            };
            DatabasesMeta = new DatabasesMeta {
                Db = db
            };
            DatabasesMetaSync = new DatabasesMetaSync {
                Db = db
            };
            DatabasesMetaVersions = new DatabasesMetaVersions {
                Db = db
            };
            ServerAccounts = new ServerAccounts {
                Db = db
            };
            ServerManagementAccounts = new ServerManagementAccounts {
                Db = db
            };
        }
Example #3
0
        public static SyncKeys DecryptCollectionKeys(SyncKeys syncKeys, BasicStorageObject wbo)
        {
            CryptoKeys decrypted = DecryptWbo <CryptoKeys>(syncKeys, wbo);

            byte[] encKey  = Convert.FromBase64String(decrypted.Default[0]);
            byte[] hmacKey = Convert.FromBase64String(decrypted.Default[1]);

            return(new SyncKeys()
            {
                EncKey = encKey, HmacKey = hmacKey
            });
        }
Example #4
0
        public void CreateKey()
        {
            AesManaged aes = new AesManaged()
            {
                KeySize = 128
            };

            aes.GenerateKey();
            CryptoKeys.Add(new CryptoKey()
            {
                Name = "Test", Value = RandomShit.ByteArrayToString(aes.Key)
            });
        }
Example #5
0
        public async Task VerifyFileEncryption(HashAlgorithmType hashAlgorithm, int bitCount)
        {
            Assert.IsFalse(File.Exists(_publicKeyFilePath));
            Assert.IsFalse(File.Exists(_privateKeyFilePath));

            CryptoKeys.CreateNewKeyPair(_keysFolder);

            Assert.IsTrue(File.Exists(_publicKeyFilePath));
            Assert.IsTrue(File.Exists(_privateKeyFilePath));

            Assert.IsTrue(File.Exists(_inputFilePath));
            Assert.IsFalse(File.Exists(_encryptedFilePath));
            Assert.IsFalse(File.Exists(_infoXmlFilePath));

            var encryptResult = await CryptoFiles.EncryptFileAsync(_inputFilePath, _publicKeyFilePath, hashAlgorithm).ConfigureAwait(false);

            if (encryptResult.Failure)
            {
                Assert.Fail("Error occurred encrypting file.");
            }

            var encryptedFileInfo      = encryptResult.Value;
            var encryptedFileHashBytes = Convert.FromBase64String(encryptedFileInfo.EncryptedFileDigest);

            Assert.IsTrue(encryptedFileHashBytes.Length * 8 == bitCount);
            Assert.IsTrue(encryptedFileInfo.FileDigestHashAlgorithmType == hashAlgorithm);

            File.Move(_inputFilePath, _inputMoveFilePath);

            Assert.IsFalse(File.Exists(_inputFilePath));
            Assert.IsTrue(File.Exists(_inputMoveFilePath));
            Assert.IsTrue(File.Exists(_encryptedFilePath));
            Assert.IsTrue(File.Exists(_infoXmlFilePath));

            var decryptResult = await CryptoFiles.DecryptFileAsync(_encryptedFilePath, _privateKeyFilePath, _infoXmlFilePath).ConfigureAwait(false);

            if (decryptResult.Failure)
            {
                Assert.Fail("Error occurred decrypting file.");
            }

            Assert.IsTrue(File.Exists(_inputFilePath));

            FileHelper.DeleteFileIfAlreadyExists(_publicKeyFilePath, 10);
            FileHelper.DeleteFileIfAlreadyExists(_privateKeyFilePath, 10);
            FileHelper.DeleteFileIfAlreadyExists(_infoXmlFilePath, 10);
            FileHelper.DeleteFileIfAlreadyExists(_encryptedFilePath, 10);
            FileHelper.DeleteFileIfAlreadyExists(_inputFilePath, 10);
            File.Move(_inputMoveFilePath, _inputFilePath);
        }
Example #6
0
        public async Task <IActionResult> Authenticate([FromBody] AuthenticateCommand command)
        {
            var authResult = await Mediator.Send(command).ConfigureAwait(false);

            if (!authResult.IsSuccess)
            {
                return(BadRequest(authResult.ErrorDescription));
            }

            var cryptoKeys = new CryptoKeys
            {
                FirstPartPrivateKey  = authResult.Value.PrivateKey.Item1,
                SecondPartPrivateKey = authResult.Value.PrivateKey.Item2,
            };
            var token = _jwtTokenProvider.GenerateToken(cryptoKeys);

            return(null);
        }
Example #7
0
        public string GenerateToken(CryptoKeys keys)
        {
            var tokenHandler = new JwtSecurityTokenHandler();
            var claims       = new[]
            {
                new Claim(FirstPrivateKeyTypeName, keys.FirstPartPrivateKey.ToString()),
                new Claim(SecondPrivateKeyTypeName, keys.SecondPartPrivateKey.ToString()),
            };

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(_key), SecurityAlgorithms.HmacSha256Signature),
            };

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(token));
        }
Example #8
0
        public static void Init()
        {
            var db = new DbConnection(Config.GetDatabasePath(), DbProtection.GetDatabaseKey());

            CryptoKeys = new CryptoKeys { Db = db };
            Databases = new Databases { Db = db };
            DatabasesEntries = new DatabasesEntries { Db = db };
            DatabasesEntriesData = new DatabasesEntriesData { Db = db };
            DatabasesEntriesDataSync = new DatabasesEntriesDataSync { Db = db };
            DatabasesEntriesDataVersions = new DatabasesEntriesDataVersions { Db = db };
            DatabasesEntries = new DatabasesEntries { Db = db };
            DatabasesGroups = new DatabasesGroups { Db = db };
            DatabasesGroupsMeta = new DatabasesGroupsMeta { Db = db };
            DatabasesGroupsMetaSync = new DatabasesGroupsMetaSync { Db = db };
            DatabasesGroupsMetaVersions = new DatabasesGroupsMetaVersions { Db = db };
            DatabasesMeta = new DatabasesMeta { Db = db };
            DatabasesMetaSync = new DatabasesMetaSync { Db = db };
            DatabasesMetaVersions = new DatabasesMetaVersions { Db = db };
            ServerAccounts = new ServerAccounts { Db = db };
            ServerManagementAccounts = new ServerManagementAccounts { Db = db };
        }
Example #9
0
        public void Initialize()
        {
            _logger?.Log("Initialization of server begun...", LOG_SEVERITY.INFO);



            _logger?.Log("Generating cryptographic keys for later use", LOG_SEVERITY.INFO);
            var crypto = new Cryptography();

            _cryptoKeys = crypto.GenerateKeys();
            _logger?.Log("Keys generated!", LOG_SEVERITY.INFO);


            _logger?.Log("Spawning listening thread to listen for clients...", LOG_SEVERITY.INFO);
            //TODO: Spawn listening thread...
            _logger?.Log("Initialization done, now ready to serve clients!", LOG_SEVERITY.INFO);



            Initialized = true;
        }