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 }; }
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 }; }
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 }); }
public void CreateKey() { AesManaged aes = new AesManaged() { KeySize = 128 }; aes.GenerateKey(); CryptoKeys.Add(new CryptoKey() { Name = "Test", Value = RandomShit.ByteArrayToString(aes.Key) }); }
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); }
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); }
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)); }
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; }